skills/handoff/SKILL.md
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
npx skillsauth add lucianghinda/superpowers-ruby handoffInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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 handoffs
Output 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/null
Derive 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> documents
This 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.
tools
--- name: ruby-upgrade description: Use when upgrading the Ruby interpreter version of a Bundler/Rails app — especially "upgrade to Ruby 4", "bump Ruby to 4.0", "audit Ruby 4 compatibility", "what breaks on Ruby 4", or a specific target like "Ruby 4.0.5". Triggers on Ruby-major risk symptoms: CGI.parse/CGI::Cookie removal, Net::HTTP implicit Content-Type dropped, demoted default gems (ostruct/logger/benchmark/irb), SortedSet, Set#inspect changes, native-extension recompile crashes, openssl 4 pin
development
Use when stuck after multiple debug attempts and want to escalate to a stronger one-shot model (GPT-5 Pro, Opus, Gemini Pro) — packages a self-contained "oracle prompt" with Ruby/Rails project briefing, verbatim error, what-was-tried, constraints, and just-enough attached files. Triggers include "ask the oracle", "write a letter to GPT-5", "I'm stuck, draft a prompt for another model", "/tmp/letter.md".
testing
Use when creating new skills, editing existing skills, or verifying skills work before deployment
development
Use when you have a spec or requirements for a multi-step task, before touching code