with one click
save-work
// Menu-driven session save. Guided UX wrapper for context saving. Triggers: "save", "save my work", "checkpoint", "I'm done for now".
// Menu-driven session save. Guided UX wrapper for context saving. Triggers: "save", "save my work", "checkpoint", "I'm done for now".
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | save-work |
| description | Menu-driven session save. Guided UX wrapper for context saving. Triggers: "save", "save my work", "checkpoint", "I'm done for now". |
| allowed-tools | ["Bash","Read","Write","Glob","Grep","Agent","AskUserQuestion"] |
| model | sonnet |
| context | main |
| user-invocable | true |
| argument-hint |
Menu-driven session save for non-CLI interfaces (Cowork desktop, Telegram, CC CLI).
Same CONTEXT file format as retrospect:save-context / retrospect:load-context ā files are interchangeable.
Target: 1200-1500 tokens MAX for CONTEXT file
Glob: CONTEXT-*-llm.md (current dir, exclude done/)
Read: CLAUDE.md (first 5 lines, for project name from H1 ā required)
Identify:
# Project Name as first line)If no CLAUDE.md found in current dir or parents ā warn: "ā ļø No project context detected. Use /switch first to select a project."
Before Phase 2: run quality self-check from reference.md ā if session is trivial, confirm with user before proceeding.
After EVERY AskUserQuestion call, check if answers are empty/blank. If empty: output "ā ļø Questions didn't display (known bug).", present options as numbered text list, WAIT for user reply.
0-1 existing streams ā merge type + stream into 1 question:
š¾ Save {stream-name} as:
1. š Checkpoint ā I'll continue later
2. ā
Done ā this work is finished
3. š
æļø Parking ā switching to something else
Which one? (1/2/3)
Where {stream-name} = existing stream name, or auto-generated from project + conversation topic if no streams exist.
2+ existing streams ā 2 questions. First ask stream:
š Save to which session?
1. š {stream-1} (existing)
2. š {stream-2} (existing)
3. ⨠New session
Which one?
Then ask save type (same 3-choice menu as above).
New stream confirmation (when auto-generated or user picks "New"):
š Stream name: {suggested-name}
OK? (yes / type a different name)
Mapping:
buildingdoneparkedStream naming: pattern ^[a-zA-Z0-9_-]{1,50}$. Reserved: default ā CONTEXT-llm.md, baseline.
Skip if no ref or wip folder exists in the current project.
Folder aliases: ref/ or reference/ (whichever exists). wip/ or work-in-progress/ (whichever exists). Use the actual folder name found for all subsequent operations.
Quick scan ā must complete in < 5 seconds, no deep content analysis.
Step 1: Collect ref keys (parallel Glob + Read)
{ref|reference}/*.md ā get filenamesStep 2: Scan wip for stale refs (parallel Grep per wip file)
{wip|work-in-progress}/*.md for ref/ or reference/ string matchesref/X-v1.md but ref/X-v2.md existsref/Y.md that doesn't exist## Identity or ## Decisions section (persona name, positioning label, locked values), grep wip for contradicting old terms[Proposition] markers removed, versioned headers, or dated validations ā may be ready to promote to refStep 3: Report (only if issues found)
ā ļø Drift detected:
- wip/{file}.md links ref/{old}-v1.md ā v2 exists
- wip/{file}.md says "{old term}" ā ref says "{new term}"
- wip/{file}.md links ref/{gone}.md ā file missing
- š wip/{file}.md looks mature ā may be ready to promote to ref
š§ Want me to fix these? (yes/no)
If user says yes ā invoke /sync-ref-wip skill with the detected file pairs. It handles direction detection, diff display, and user approval.
If user says no or skips ā continue to Phase 4. Save drift warnings in CONTEXT file under ## Session > unexpected: for future reference.
From conversation (last 15-20 messages), synthesize:
next/todo/pending keywords for survival priority)Write CONTEXT file using template from reference.md.
Filename: default ā CONTEXT-llm.md, otherwise CONTEXT-{stream}-llm.md
If status is done or parked:
Bash: mkdir -p done && mv CONTEXT-{stream}-llm.md done/
Exceptions ā do NOT move:
CONTEXT-llm.md (default stream)CONTEXT-baseline-llm.mdš¾ Saved: CONTEXT-{stream}-llm.md
š Status: {emoji} {status}
š Focus: {1-line focus}
š Next tasks:
- {task 1}
- {task 2}
- {task 3}
If archived: š¦ Archived to done/ (status: {status})
mkdir -p done && mv