Handoff pro
Skill Rishiidev/handoff-pro
π€ A Claude Skill that compresses your session into a structured handoff doc and auto-resumes it later β works across Claude.ai, Cowork, and Claude Code.
npx -y skills add Rishiidev/handoff-proAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Eliminates starting-from-zero when context fills up or a session ends. Two modes β SAVE compresses the current session into a structured handoff document; LOAD reads a previous handoff and resumes with full context as if the conversation never ended. Invoke immediately when the user says any of: "handoff", "create handoff", "save handoff", "load handoff", "load latest handoff", "resume", "load session", "save session", "pick up where we left off", "continue from last session", or when the context window is visibly filling up. In Cowork and Claude Code, loading is fully automatic β no copy-paste needed. Works across Claude.ai, Cowork, and Claude Code.
SKILL.md
8.0 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Handoff Pro
Preserves full session context between conversations so the next session feels like a continuation β not a restart. The previous session's decisions, constraints, vocabulary, failed attempts, and exact stopping point are all restored before any new work begins.
Two modes:
SAVEβ compress current session β write or display handoff docLOADβ read handoff doc β internalize context β brief user β resume
Environment Detection
Before either mode, detect the environment once and adapt I/O accordingly.
| Signal | Environment |
|---|---|
| Filesystem + project folder accessible | Cowork |
bash_tool available | Claude Code |
| No filesystem access | Claude.ai web |
Storage paths:
- Cowork:
{project_root}/.handoffs/(preferred) or~/.claude/handoffs/(global fallback) - Claude Code:
.claude/handoffs/in project root, or~/.claude/handoffs/globally - Claude.ai: Artifact only β user copies and pastes into next session
Filenames: YYYY-MM-DD-HHMMSS-{slug}.md
Slug = 2β3 word session summary, auto-generated (e.g. bunchshop-pricing-deck, ghosts-pwa-auth)
SAVE Mode
Triggered by: "handoff", "create handoff", "save handoff", "save", or context window running visibly long.
Step 1 β Extract the 12 Elements
Read the full conversation and extract every field below. Do not skip or guess β missing fields are exactly why handoffs feel incomplete in the next session.
1. GOAL STACK The surface task + the actual underlying outcome the user needs
2. LAST CURSOR The exact thought / line / file / step at moment of handoff
3. DECISIONS Every non-trivial decision made, with rationale
4. FAILED ATTEMPTS What was tried and abandoned β prevents re-running dead ends
5. CONSTRAINTS Hard (non-negotiable) + soft (preferences discovered mid-session)
6. OPEN THREADS Things noted but not yet addressed, ordered by priority
7. ARTIFACT GRAPH Every file, doc, design, URL, code in play β with status
8. ENVIRONMENT Active branch / MCP / tool / design ID / file handles / skills
9. VOCABULARY Shorthand, nicknames, and abbreviations used this session
10. ASSUMPTIONS Things operated on as true but never explicitly confirmed
11. URGENCY Deadlines or pressure that affects priority order
12. META CONTEXT Why this work matters β what's at stake
Critical: LAST CURSOR (#2) is the most important field. It is not a summary β it is the exact thought mid-action. Example of wrong vs right:
WRONG: "We were working on the pricing slide."
RIGHT: "Mid-row 3 of the pricing table, Farmley 100g column.
Next action: find Farmley 100g SKU price, fill cell,
then complete rows 4-5 before adding footnote."
Step 2 β Generate the Handoff Document
Use compressed format β tables and structured fields, not prose. See references/handoff-template.md for the exact document structure.
Rule: every field should carry the minimum tokens needed to reconstruct full context. If you find yourself writing paragraphs, compress them.
Step 3 β Save or Display
Cowork / Claude Code:
- Create handoffs directory if it doesn't exist
- Write file:
{handoffs_dir}/YYYY-MM-DD-HHMMSS-{slug}.md - Update index: append a new row to
{handoffs_dir}/index.md - Confirm path to user
Claude.ai:
- Generate the document as a markdown artifact
- Add this note at the bottom of the artifact:
Save this document to Notion, Apple Notes, or any file. To resume: paste it at the start of your next session and say "load handoff".
Step 4 β Confirm Save
Report back concisely:
- File path (or "saved as artifact")
- Slug
- The single most critical next action from this session
LOAD Mode
Triggered by: "load handoff", "load latest handoff", "resume", "load", "pick up where we left off", "continue from last session", or when a handoff document is pasted at the start of a conversation.
Step 1 β Find the Handoff
Cowork / Claude Code β fully automatic, zero prompting:
Any load trigger without a specific slug = find and read the most recent handoff immediately. Do not ask. Do not show a list. Just load it.
Priority order:
1. {project_root}/.handoffs/ β check here first (project-scoped)
2. ~/.claude/handoffs/ β fall back to global
Within the folder: sort files by timestamp prefix (YYYY-MM-DD-HHMMSS-*)
β pick the latest, read it, proceed.
Only show the index list when the user explicitly asks β e.g. "show my handoffs" or "load handoff [specific-slug]".
Claude.ai: The handoff document is pasted directly in the conversation. Read it from there.
Step 2 β Parse and Internalize
Read all 12 fields silently. Do not output anything yet.
Flag staleness before resuming:
- Doc older than 7 days β warn the user
- Referenced files/URLs β check existence if filesystem is accessible
- Assumptions β mark for re-validation if context has likely shifted
Step 3 β Brief the User
Output one compact brief β not a dump of the entire document:
RESUMED: {slug} β {date}
ββββββββββββββββββββββββββββββββββββββββ
WHERE WE LEFT OFF:
{LAST CURSOR field β 2-3 sentences max}
FIRST ACTION:
{Top item from OPEN THREADS or the next logical step}
WATCHOUTS:
{Stale items, unvalidated assumptions, or blockers}
ββββββββββββββββββββββββββββββββββββββββ
Ready. Say "go" to continue or give me a new direction.
Step 4 β Resume
Work as if the conversation never ended.
- Apply VOCABULARY silently β do not re-explain what terms mean, just use them
- Apply CONSTRAINTS silently β they are now operating rules, not things to announce
- Apply ASSUMPTIONS β treat them as working truth unless the user corrects them
- Respect DECISIONS β do not re-open settled choices without a reason from the user
Do not narrate the handoff back. The user already knows the context. You are the one who needed the briefing. Act like you were there.
Handoff Index
Maintained at {handoffs_dir}/index.md. Never delete entries β history is the point.
# Handoff Index
| # | Date | Slug | Last Cursor (brief) | Status |
|---|------|------|---------------------|--------|
| 001 | 2025-01-15 14:32 | bunchshop-pricing-deck | Mid slide 6 pricing row, need Farmley 100g price | β resumed |
| 002 | 2025-01-16 09:10 | ghosts-pwa-dark-theme | localStorage snapshot bug, line 142 | β³ active |
| 003 | 2025-01-20 11:05 | api-rate-limiter | Drafted Redis approach, rejected β see FAILED | π¦ archived |
Status values: β³ active β β resumed β π¦ archived
Mark as β resumed when loaded. Mark as π¦ archived when the work is fully complete or superseded.
Proactive Triggering
If the conversation is long and no handoff has been saved, suggest it naturally:
"This session has covered a lot of ground. Want me to create a handoff before we go further? Just say 'create handoff' β takes 30 seconds."
Suggest this after ~25 back-and-forth exchanges or when you detect context pressure. Do not wait for the user to notice.
Reference Files
references/handoff-template.mdβ exact document template with field-by-field guidance
What ships with it: 5 files
14.9 KB alongside SKILL.md
assets/
- flow-diagram.svg3.5 KB
references/
- handoff-template.md2.7 KB
- CONTRIBUTING.md1003 B
- LICENSE1.0 KB
- README.md6.7 KB
Gives 0 of the 12 instructions most agent orchestration skills give in ~1.8k tokens
Counted across 742 of the 995 authors here whose files we hold, read 2026-08-07
- Reference existing artifacts by path or URLin 53 of 742, across 25 files
- Run the full test suite after integrating changesin 51 of 742, across 19 files
- Dispatch one agent per independent problem domainin 50 of 742, across 17 files
- Verify fixes do not conflictin 45 of 742, across 13 files
- Include a suggested skills section in the documentin 45 of 742, across 17 files
- Redact sensitive informationin 41 of 742, across 11 files
- Save to the temporary directory of the operating systemin 39 of 742, across 10 files
- Tailor the document to user-provided focus argumentsin 39 of 742, across 9 files
- Spot check agent changes for systematic errorsin 34 of 742, across 7 files
- Write a handoff document summarising the current conversationin 31 of 742, across 6 files
- Assign each agent a specific scopein 23 of 742, across 8 files
- Provide specific scope and clear goalin 23 of 742, across 5 files
Said here and by no other author read
- detect the environment before executing either mode
- extract all twelve context elements from the conversation
- record the exact current thought and next action
- compress context into structured fields instead of prose
- append a row to the handoff index file
- load the most recent handoff automatically without asking
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.