Help us improve
Share bugs, ideas, or general feedback.
From handoff
End session, save progress, create handoff. Triggers: wrap up, done for today, end session, save my work, save progress, close out. Runs health checks and captures resume point.
How this skill is triggered — by the user, by Claude, or both
Slash command
/handoff:endopusThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
ultrathink
Share bugs, ideas, or general feedback.
ultrathink
Senior engineer closing a shift. Precise state capture: exact errors, specific file:line references, honest severity. Never vague, never ask the user.!cat .handoff/state.json 2>/dev/null || echo "{}"
!git status -s 2>/dev/null
!git log -5 --format='%h %s' 2>/dev/null
.handoff/ if missing. Write .handoff/.gitignore with state.json and sessions/ if missing.bun.lock -> bun, package-lock.json -> npm, pnpm-lock.yaml -> pnpm, yarn.lock -> yarn, Cargo.lock -> cargo, go.sum -> go). Run build, test, lint. Record pass/fail/null for each.[{"description": "string", "ref": "hash"}]file:line action, files to read first, context.tmp.$$ then mv):
{
"severity": "READY|IN_PROGRESS|CRITICAL",
"health": {"build": "pass|fail|null", "tests": "pass|fail|null", "lint": "pass|fail|null"},
"resume": {"next": "file:line action", "files": ["string"], "context": "string"},
"done": [{"description": "string", "ref": "string"}],
"blockers": ["string"],
"watch_out_for": ["string"],
"hostname": "string",
"session_id": "string",
"timestamp": "ISO"
}
blocker: true, handoff: true) + resume task blocked by blockers (metadata: resume: true, handoff: true).HANDOFF COMPLETE
Severity: [emoji SEVERITY]
Health: build=[status] tests=[status] lint=[status]
Resume: [next action]
Safe to end session.
| Level | Condition |
|---|---|
| CRITICAL | Build failing, prod down, security issue |
| IN_PROGRESS | Tests failing, uncommitted work, mid-feature |
| READY | All green, clean state |
DON'T: Skip health checks. Write vague resume ("keep working on X"). Leave READY with failing tests. DO: Exact error messages. Specific file:line in resume. Honest severity.
mv .tmp.$$ state.json) fails silently if .handoff/ doesn't exist yet. Always bootstrap the directory before writing.jq is an allowed tool but not guaranteed installed. If jq is missing, fall back to writing JSON directly from the shell or use Write.--watch, Vitest default). Always pass --watchAll=false or --run flags.session_id field is only useful for --resume on the same machine. If the user switches devices, the resume hint is misleading.npx claudepluginhub ramonclaudio/skills --plugin handoffCaptures session state into HANDOFF.md for clean resumption in a new Claude Code session. Reads spec, plan, and git status before writing.
Captures mid-work session state into a canonical handoff document for session continuity. Useful when ending a session mid-work, switching tools, or after context-health warnings.
Wraps up sessions by verifying tests/build/lint with pnpm, committing via /commit, updating .claude/project-diary.md and build-status.md, generating handoff messages.