Use when capturing session state before switching context, ending a session, or manually preserving progress — creates a structured handoff document in docs/handoffs/ so a future session can resume seamlessly
Capture the current session's state into a structured handoff document so a future session (or a different agent) can resume without losing context. The handoff document records goals, decisions, progress, and next steps.
Core principle: Capture what the next session needs to know — not everything that happened.
Announce at start: "I'm using the handoff skill to capture session state."
Don't use when:
superpowers-ruby:finishing-a-development-branch instead)superpowers-ruby:compound instead)/superpowers-ruby:handoff # Create a full handoff document
/superpowers-ruby:handoff-resume # Resume from the latest handoff
/superpowers-ruby:handoff-list # List available handoffsOutput location: docs/handoffs/YYYY-MM-DD-<topic>.md
Archive location: docs/handoffs/_archive/
Run these commands to collect file-level state:
# Modified files
git diff --name-only
git status --porcelain
# Detect plan files
ls .claude/plans/*.md 2>/dev/null
ls docs/superpowers/specs/*.md 2>/dev/null
ls docs/superpowers/plans/*.md 2>/dev/nullDerive a short topic slug from the current work context. Use the branch name as a starting point, stripped of prefixes like feature/, fix/, lg/. If no branch context, ask the user or derive from the goal.
Topic slug guidelines:
auth-jwt-migration not fix-auth or JIRA-1234docs/handoffs/stimulus-form-validation, stripe-webhook-retry-logicbugfix, refactor, updates — these are meaningless when you have 10 handoffs in the directorydocs/handoffs/ — consistency beats clevernessCreate a file at docs/handoffs/YYYY-MM-DD-<topic>.md with this structure:
---
created: <ISO 8601 UTC timestamp>
branch: <current git branch>
trigger: manual
restored: false
topic: <topic slug>
---
# Handoff: <descriptive title>
## Goal
<What we're working on and why — 2-3 sentences max>
## Current State
<What's done, what's in progress, what's blocked — bullet list>
## Key Decisions
<Important choices made and their rationale — bullet list with "decision — rationale" format>
## Modified Files
<From git status/diff — bullet list of file paths>
## Failed Approaches
<What was tried and didn't work, so the next session doesn't repeat it — bullet list>
## Files to Read
<Plan files, specs, design docs the next session should read first — bullet list with backtick paths>
## Next Steps
<Concrete actions to take next — numbered list, most important first>
## Open Questions
<Unresolved uncertainties or decisions that need user input — bullet list>Unlike the hook-triggered version (which leaves <!-- to be enriched by LLM --> markers), the manual skill fills every section from conversation context:
Handoff saved to `docs/handoffs/<filename>.md`
Summary:
- Goal: <one-line summary>
- Next steps: <count> items remaining
- Files to read: <count> documentsThis skill also runs automatically via hooks when context compaction occurs:
PreCompact hook runs hooks/handoff-create before compactionexperimental.session.compacting event triggers the same scriptThe hook-generated handoff captures mechanical state only (modified files, plan files). After compaction, the PostCompact hook (or session.compacted event) restores the handoff as additionalContext and instructs the agent to fill in the LLM-dependent sections from compacted context.
Handoff documents are plain markdown files in docs/handoffs/ — any agent or tool that can read the filesystem can resume from them. This makes handoffs work across agent boundaries, not just within the same session.
Use cases:
/superpowers-ruby:handoff-resume to pick up where Claude Code left off.docs/handoffs/ to understand what the agent was working on, then continues manually or starts a new session with context.handoff-resume to continue.Why this works: The handoff document is the contract. It doesn't depend on any specific agent's memory, context window, or session state. Any agent that can read markdown and follow instructions can resume from it.
cb03f92
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.