From handoff
Manage .claude/HANDOFF.md — write/update (default), clear, status, list, help
How this command is triggered — by the user, by Claude, or both
Slash command
/handoff:handoff [clear|status|list|help]The summary Claude sees in its command listing — used to decide when to auto-load this command
# /handoff — Context handoff manager Subcommand argument received: **$ARGUMENTS** ## Dispatch Inspect `$ARGUMENTS` (case-insensitive, trimmed) and run the matching flow below. | Argument | Flow | Effect | |----------|------|--------| | empty / none | **WRITE** (default) | Draft + confirm + write `.claude/HANDOFF.md` | | `clear` | **CLEAR** | Archive or delete `.claude/HANDOFF.md` | | `status` | **STATUS** | Show current handoff preview (read-only, no prompt) | | `list` | **LIST** | List active + archived handoffs | | `help` | **HELP** | Show subcommand menu | | anything else | **HELP** ...
Subcommand argument received: $ARGUMENTS
Inspect $ARGUMENTS (case-insensitive, trimmed) and run the matching flow below.
| Argument | Flow | Effect |
|---|---|---|
| empty / none | WRITE (default) | Draft + confirm + write .claude/HANDOFF.md |
clear | CLEAR | Archive or delete .claude/HANDOFF.md |
status | STATUS | Show current handoff preview (read-only, no prompt) |
list | LIST | List active + archived handoffs |
help | HELP | Show subcommand menu |
| anything else | HELP + warn unknown | Unknown subcommand: <x>. Showing help… |
Output exactly:
/handoff — Context handoff manager
/handoff Write or update .claude/HANDOFF.md (default)
/handoff clear Archive or delete .claude/HANDOFF.md
/handoff status Show current handoff preview (read-only)
/handoff list List active + archived handoffs in .claude/
/handoff help This menu
Loader hook auto-injects HANDOFF.md at SessionStart (full <24h, pointer 24h-7d, STALE >7d).
Use /handoff before pausing work, /handoff status to peek, /handoff clear when done.
Then stop. No further action.
Check ./.claude/HANDOFF.md. If absent, output:
∅ No HANDOFF.md in this project at ./.claude/HANDOFF.md
…and stop.
Read frontmatter. Display preview (no edits, no questions):
HANDOFF.md
─────────────────
Path: .claude/HANDOFF.md
Updated: <relative>
Tokens: ~<n>
Summary: <text>
Resume: <text or "—">
─────────────────
Stop. Do not prompt or modify.
Run ls -lat ./.claude/HANDOFF*.md 2>/dev/null (Bash). Output:
Handoffs in this project:
ACTIVE:
HANDOFF.md <relative time>
ARCHIVES:
HANDOFF.archive-2026-05-10-143022.md <relative time>
HANDOFF.archive-2026-05-08-091500.md <relative time>
If no active: omit ACTIVE section, show only ARCHIVES.
If no archives: omit ARCHIVES section.
If neither: output ∅ No handoff files in .claude/.
Stop. No prompts.
Check ./.claude/HANDOFF.md. If absent:
∅ No HANDOFF.md to clear at ./.claude/HANDOFF.md
…and stop.
Read file. Display preview block (same format as STATUS).
Use AskUserQuestion with three options:
.claude/HANDOFF.archive-YYYY-MM-DD-HHMMSS.md. Loader ignores archives.rm the file. Recoverable only via git if tracked.Execute:
mv ./.claude/HANDOFF.md ./.claude/HANDOFF.archive-$(date -u +%Y-%m-%d-%H%M%S).md. Confirm new path.rm ./.claude/HANDOFF.md. Confirm removed.Cancelled. HANDOFF.md unchanged.After clear, suggest: /handoff to write a fresh handoff, or leave clean if work is done.
Generate or update ./.claude/HANDOFF.md so the next session resumes cleanly.
./.claude/ exists (create if missing)../.claude/HANDOFF.md.Run these and capture output. Build State from this evidence, NOT transcript impressions.
git status --short # uncommitted changes
git diff --stat # what's actually modified
git log --oneline -10 # recent commits
git diff --cached --stat # staged but not committed
If not a git repo: find . -type f -mtime -1 -not -path './node_modules/*' -not -path './.git/*' | head -20.
Use as ground truth. Anything claimed as [done] must show in commits or git diff --stat. Anything in git status but not committed = [wip].
---
updated: <ISO 8601 UTC>
summary: <one line, <100 chars — current state for quick scan>
resume: <one line, <80 chars — concrete first action to take when resuming>
inject: <optional: "full" or "pointer" to override loader auto-decision>
---
# Handoff
## Task
<2-3 lines: what + why. No fluff.>
## State
- [done] <thing> — evidence: `commit abc1234` or `path/to/file.ts:42`
- [wip] <thing> — evidence: shows in `git status`, not committed
- [planned] <thing> — NOT started, just intended
## Files
- `path/to/file.ts:42` — <one-line note on what's there>
## Decisions
- [locked] <choice> — rationale (must have code/commit backing this)
- [tentative] <choice> — rationale (no code yet, may change)
## Blockers
- <thing> — verbatim error: `EXACT_ERROR_TEXT_FROM_TERMINAL`
- <thing> — what's needed to unblock
## Next
1. <concrete step>
2. <concrete step>
resume: field required. Should match Next #1, paraphrased into one short imperative line.[done] / [wip] / [planned]. No untagged items.[wip].[locked] only if backed by committed code. Otherwise [tentative].Before writing, present draft. For ambiguous items (e.g. "we tried X" — kept or reverted?), use AskUserQuestion: "Item: <text> — keep as [done] / change to [wip] / drop?". Cap at 4 items per call. Skip confirmation only for items with rock-solid evidence (committed hash that exists in git log).
Show full draft. AskUserQuestion: "Write to .claude/HANDOFF.md? [Yes / Edit section / Cancel]"
Target <600 tokens (~2400 chars). Hard cap 2000 tokens (~8000 chars) — beyond this loader forces pointer mode regardless of freshness. Compress aggressively if exceeding.
find -mtime -1 for evidence. Flag explicitly that evidence is filesystem-only, not commit-backed.[done] items = #1 handoff failure mode.npx claudepluginhub kschuster1/claude-toolkit --plugin handoff/handoffGenerates a structured markdown handoff document summarizing git status, commits, uncommitted changes, session learnings, progress, and next steps. Saves to ~/.pro-workflow/handoffs/. Supports --full and --compact modes.
/handoffGenerates a developer handoff package for the specified screen, feature, or component, including visual specs, interaction specs, QA checklist, assets, and notes.
/handoffEnds swarm session: summarizes work/blockers, persists state via hivemind_store and git, cleans agents/tasks/reservations, updates hive, generates handoff note.
/handoffAnalyzes the current session and writes a self-contained handoff document so a fresh agent can resume work, emitting a single actionable sentence.
/handoffSaves session state snapshot as structured JSON to docs/tasks/<branch>/session_logs/<timestamp>_handoff.json, capturing git status, progress summary, tasks, and context for resume.
/handoffCreates a detailed handoff plan summarizing conversation, technical details, code, decisions, and next steps for continuing work in a new session.