Help us improve
Share bugs, ideas, or general feedback.
From armory
Maintains `.docs/handoff.md` as a session-continuity runbook capturing git state, working-tree changes, decisions, blockers, and a resume checklist. Use when ending, pausing, resuming, or transferring in-flight project work across agent sessions.
npx claudepluginhub mathews-tom/armory --plugin armoryHow this skill is triggered — by the user, by Claude, or both
Slash command
/armory:handoffThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Maintains `.docs/handoff.md` as the project-local cold-start primer for the next coding agent or human developer. The file captures transient session state only: what changed, what was decided, what is blocked, and exactly how to resume.
Creates structured handoff documents with session accomplishments, pause points, and key files for seamless session continuation.
Captures session state into HANDOFF.md for clean resumption in a new Claude Code session. Reads spec, plan, and git status before writing.
Generate a structured handoff document capturing current progress, open tasks, key decisions, and context needed to resume work. Use when ending a session.
Share bugs, ideas, or general feedback.
Maintains .docs/handoff.md as the project-local cold-start primer for the next coding agent or human developer. The file captures transient session state only: what changed, what was decided, what is blocked, and exactly how to resume.
| File | Contents | Load When |
|---|---|---|
references/schema.md | Verbatim handoff schema and line-budget rules | Always before writing |
references/authority-boundaries.md | Boundary between handoff, memory, CLAUDE.md, plans, and git | Always before writing |
| Use handoff | Use another surface |
|---|---|
| In-flight work, uncommitted edits, current branch, blockers, resume steps | git log for committed history |
| Session-scoped decisions and failed approaches | Memory or ADRs for durable project facts |
| Immediate validation state and exact next command | CLAUDE.md for stable setup instructions |
| Current roadmap cursor | Plan files for strategic roadmap content |
/handoff, /handoff init.docs/handoff.md already existsgit available in the project root..docs/handoff.md..docs/handoff.last-validation containing the last verification command and result..docs/handoff.session containing extra bullets for changes, decisions, blockers, or refs./handoff init or invocation from an initialization workflow writes a greenfield stub when .docs/handoff.md is absent./handoff, refresh phrases, and Stop-hook invocation rewrite the full file.references/schema.md and preserve the schema headings exactly.references/authority-boundaries.md and include the authority boundary line in every generated handoff.git rev-parse --show-toplevel, git branch --show-current, git rev-parse --short HEAD, and git status --porcelain..docs/handoff.last-validation..docs/handoff.md atomically; do not append..docs/ if absent..docs/handoff.md.## What changed this session oldest-first.<!-- WARNING: handoff exceeded 200 lines; oldest session changes were truncated. -->.| Operation | Command | Behavior |
|---|---|---|
| Refresh | /handoff | Rewrites .docs/handoff.md from current repo and session state |
| Scaffold | /handoff init | Creates an empty schema stub when no handoff exists |
| Stop refresh | Stop hook | Refreshes only when .docs/handoff.md already exists |
| Dry run | uv run skills/handoff/scripts/handoff.py --dry-run | Prints generated content without writing |
The bundled script is the deterministic baseline used by the command and hook:
uv run skills/handoff/scripts/handoff.py --project-root "$PWD"
uv run skills/handoff/scripts/handoff.py --project-root "$PWD" --init
Agents may improve populated bullets from live session context before writing, but must preserve:
When invoked as /handoff init or under a project initialization flow and .docs/handoff.md does not exist, write the schema with empty placeholders and real git metadata. This documents the /init integration point without modifying any init script.
Write exactly one file: .docs/handoff.md.
Required first lines:
# Handoff — <project name>
**Last touched:** <ISO 8601 timestamp with timezone> · **branch:** `<branch>` · **HEAD:** `<short-sha>` · **session:** <model id>
| Problem | Resolution |
|---|---|
| Not in a git repository | Fail clearly for refresh; scaffold may use branch — and HEAD — only during /handoff init |
.docs/ missing | Create it before writing |
| Validation state unavailable | Write "not recorded this session"; do not claim tests passed |
| Generated file exceeds 200 lines | Truncate oldest What changed bullets and add the warning comment |
| Existing handoff uses old casing or root path | Do not migrate automatically; future refreshes converge only when invoked in that project |
uv run python scripts/validate_evals.pyuv run scripts/evaluate_package.py skills/handoffuv run skills/handoff/scripts/handoff.py --project-root <repo> --dry-runuv run skills/handoff/scripts/handoff.py --project-root <repo> --init --output <tmp-file>