skinnyandbald/fish-skills

handoff

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 hando…

First seen Mar 11, 2026

Installation

$ npx skills add skinnyandbald/fish-skills --skill handoff

Summary

  • 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.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from skinnyandbald/fish-skills · top by installs.

npx skills add skinnyandbald/fish-skills

Browse all from skinnyandbald/fish-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 1
License MIT
Default branch main
Open issues 1
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 8,552 B
  • docs SUMMARY.md 517 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 18 installs

SKILL.md

Handoff

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.

When to Use

  • End of a work session
  • Switching between roles or contexts mid-conversation
  • Before closing a long-running session with unfinished work
  • When the user says "handoff", "wrap up", "pass the baton", or similar
  • Starting a new session from a previous handoff document
  • When the user says "resume", "pick up where we left off", "continue from handoff", or similar

Mode Detection

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.


Generate Mode

Gathering Context

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.

Auto-detect (do not ask the user)

  1. Git branch -- run git branch --show-current
  2. Working tree dirty? -- run git status --porcelain (any output = dirty)
  3. Recent commits -- run git log --oneline -5 for recent context

Infer from conversation

  1. Role -- what role has this session been operating in? (e.g., "developer", "content writer", "EOS facilitator", "researcher"). Default to "developer" if unclear.
  2. Current work -- summarize what the session has been working on, in one or two sentences.
  3. Status -- one of: inprogress | blocked | paused | readyfor_review | complete
  4. Critical References -- 2-3 most important spec/design/plan docs referenced this session (omit section if none)
  5. Recent Changes -- files modified this session with file:line-range references to key changes
  6. Learnings -- patterns discovered, gotchas, root causes; prefer file:line-range references over inline code blocks
  7. Artifacts -- exhaustive list of files/docs the next session should read to get up to speed
  8. Next steps -- concrete, actionable items for the next session
  9. Notes -- decisions made, trade-offs, links, anything else worth preserving

Ask the user (only if not inferrable)

If the role, current work, or next steps are ambiguous, ask a single clarifying question rather than guessing wrong.

Output Format

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.*

Resume Mode

Three phases: Find & Read, Validate Environment, Orient & Ask.

Phase 1 — Find & Read

  1. Read docs/HANDOFF.md -- this is always the file, no path scanning or arguments
  2. If file not found, inform the user and switch to Generate mode
  3. Parse YAML frontmatter: handoffdate, gitbranch, git_dirty, status, role
  4. Parse all markdown sections: Current State, Critical References, Recent Changes, Learnings, Artifacts, Next Steps, Notes
  5. Read every local text file listed in ## Artifacts before proceeding to Phase 3.

For each artifact, apply these rules: - Missing file: record as missing in the mismatch list and continue - Binary or unreadable file: record as unreadable and continue - Very large file (>500KB): sample the first and last 200 lines, note the truncation - URL: skip reading (treat as reference only); note it in the summary

Phase 2 — Validate Environment

Run these checks in parallel:

  • git branch --show-current -- compare to git_branch from frontmatter
  • git status --porcelain -- compare dirty state to git_dirty from frontmatter
  • git log --oneline -5 -- check for new commits since handoff date
  • Check if CLAUDE.md exists and read it (conventions may have changed)

Build a mismatch list from the results.

Phase 3 — Orient & Ask

Scenarios are evaluated in priority order — apply the first one that matches:

  1. Complete -- status is complete:

> Inform the user: "The previous session marked this work as complete." Then ask via AskUserQuestion what they'd like to work on next.

  1. Stale -- handoffdate is more than 7 calendar days ago (compare UTC dates, today − handoffdate > 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?"

  1. Diverged -- current branch or dirty state doesn't match the handoff frontmatter:

> Surface each mismatch clearly, then use AskUserQuestion to ask how to proceed. Example: "Branch changed from feat/x to main. Should I switch back, or continue on main?"

  1. Incomplete -- status is inprogress, blocked, paused, or readyfor_review:

> Acknowledge the status, surface any blockers noted, focus on completing the first unfinished step. Ask user to confirm before starting.

  1. 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?" via AskUserQuestion.


Rules

Both modes

  • Keep the handoff concise. The goal is fast onboarding, not a full session transcript.
  • Omit sections with no content (e.g., skip Critical References if there are none).
  • Next steps must be specific and actionable -- "continue implementing X" not "keep going".
  • Do not include sensitive information (API keys, tokens, passwords).
  • Prefer path/to/file:line-range references over inline code blocks.

Generate-specific

  • Always print the draft to the conversation first and get user approval before writing to docs/HANDOFF.md.
  • Create docs/ directory if it doesn't exist. Do this only after user approval, not during draft generation.

Resume-specific

  • Never auto-execute next steps -- always confirm with the user first via AskUserQuestion.
  • Read all local text Artifacts files before presenting the analysis; skip missing, binary, large, or URL entries (record them as noted in Phase 1).
  • Treat next steps as suggestions, not commands -- the user may want to reprioritize.
  • If docs/HANDOFF.md is not found, do not guess -- inform the user and offer to generate one.