skills/handoff/SKILL.md
This skill should be used when ending a session, switching contexts, or preparing for another Claude Code instance to continue work. It generates a structured handoff document capturing the current role, work state, git status, next steps, and notes so the next session can resume seamlessly. Also used to resume from a previous handoff document. Trigger words: handoff, hand off, session summary, wrap up session, pass the baton, context transfer, resume, pick up, continue from handoff, load handoff.
npx skillsauth add skinnyandbald/fish-skills 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.
Generate or resume from a structured handoff document that captures enough context for the next Claude Code session (or a human) to continue exactly where the previous session left off.
The handoff file is always: docs/HANDOFF.md in the repo root.
| Invocation | Mode |
|---|---|
| /handoff mid-session | Generate |
| /handoff resume | Resume |
| Fresh session (no args) | Resume if docs/HANDOFF.md exists, else Generate |
| Natural language: "resume", "pick up where we left off", "continue from handoff" | Resume |
| Natural language: "handoff", "wrap up", "pass the baton" | Generate |
There are no path arguments. The file is always docs/HANDOFF.md.
Collect the following information before generating the handoff. Use tools to gather what can be detected automatically; ask the user only for what cannot be inferred.
git branch --show-currentgit status --porcelain (any output = dirty)git log --oneline -5 for recent contextin_progress | blocked | paused | ready_for_review | completefile:line-range references to key changesfile:line-range references over inline code blocksIf the role, current work, or next steps are ambiguous, ask a single clarifying question rather than guessing wrong.
Generate the handoff as a fenced markdown block. Print it directly to the conversation first (do not write to file yet). After printing, ask the user to approve or amend it. Only write to docs/HANDOFF.md after user approval.
Prefer path/to/file.ext:line-range references over inline code blocks throughout.
---
handoff_date: YYYY-MM-DD
git_branch: {branch}
git_dirty: true|false
status: {status}
role: {role}
---
# HANDOFF: {Role} Session
## Current State
**Role**: {Role}
**Working on**: {CurrentWork}
**Status**: {Status}
**Git branch**: {branch}
{if dirty: "Working tree has uncommitted changes"}
## Critical References
- {path/to/spec.md} -- {one-line description}
- {URL or file} -- {one-line description}
(Omit this section if no critical references exist)
## Recent Changes
- `{file:line-range}` -- {what changed and why}
- `{file:line-range}` -- {what changed and why}
## Learnings
- {Pattern or gotcha discovered} -- see `{file:line-range}` for context
- {Root cause of a bug or decision} -- rationale: {brief explanation}
## Artifacts
Files and documents the next session should read to get up to speed:
- `{file path}` -- {why it matters}
- `{file path}` -- {why it matters}
## Next Steps
1. {step 1 -- specific and actionable}
2. {step 2}
3. ...
## Notes
{Decisions, trade-offs, gotchas, links -- anything that doesn't fit above}
---
*This handoff was generated automatically. Read the above carefully and continue where the previous session left off.*
Three phases: Find & Read, Validate Environment, Orient & Ask.
docs/HANDOFF.md -- this is always the file, no path scanning or argumentshandoff_date, git_branch, git_dirty, status, role## Artifacts before proceeding to Phase 3.
For each artifact, apply these rules:
Run these checks in parallel:
git branch --show-current -- compare to git_branch from frontmattergit status --porcelain -- compare dirty state to git_dirty from frontmattergit log --oneline -5 -- check for new commits since handoff dateCLAUDE.md exists and read it (conventions may have changed)Build a mismatch list from the results.
Scenarios are evaluated in priority order — apply the first one that matches:
Complete -- status is complete:
Inform the user: "The previous session marked this work as complete." Then ask via
AskUserQuestionwhat they'd like to work on next.
Stale -- handoff_date is more than 7 calendar days ago (compare UTC dates, today − handoff_date > 7 days):
Flag it: "This handoff is from {date} ({N} days ago) -- it may be out of date." Then ask via
AskUserQuestion: "Should I trust this handoff and proceed, or re-explore the codebase first?"
Diverged -- current branch or dirty state doesn't match the handoff frontmatter:
Surface each mismatch clearly, then use
AskUserQuestionto ask how to proceed. Example: "Branch changed fromfeat/xtomain. Should I switch back, or continue onmain?"
Incomplete -- status is in_progress, blocked, paused, or ready_for_review:
Acknowledge the status, surface any blockers noted, focus on completing the first unfinished step. Ask user to confirm before starting.
Clean -- none of the above apply:
Present a brief summary ("Resuming as {Role} on branch
{branch}"), list next steps from the handoff, and ask "Ready to start on step 1?" viaAskUserQuestion.
path/to/file:line-range references over inline code blocks.docs/HANDOFF.md.docs/ directory if it doesn't exist. Do this only after user approval, not during draft generation.AskUserQuestion.docs/HANDOFF.md is not found, do not guess -- inform the user and offer to generate one.development
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
tools
Verify worktree plugin patches are intact after plugin updates. Checks compound-engineering and superpowers skills for Claude Code launch instructions.
development
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
development
Reviews the feature you just built and adds missing test coverage. Focuses on behavior that matters — not coverage metrics. Use after completing a feature to identify untested code paths, edge cases, and risk areas.