From handoff
Summarize the current session's work into a structured handoff block that a fresh Claude Code chat can execute on. Use whenever the user says "handoff", "hand off", "pass to next session", "wrap up for handoff", "session summary for next chat", "continue in new chat", or anything about transferring context to a new conversation. Also use when the user is about to end a session with unfinished work. Includes the GitHub issue reference if one exists. Do NOT use for PR descriptions, commit messages, or release notes — those summarize code changes for reviewers, not session state for the next agent. Do NOT use to dispatch parallel agents — that's `parallel-dispatch`.
How this skill is triggered — by the user, by Claude, or both
Slash command
/handoff:handoffThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Produce a structured, copy-pasteable handoff block that gives a fresh Claude Code session everything it needs to pick up where this one left off. The goal is zero context loss between sessions — the next chat should be able to read the handoff and immediately start working without re-exploring the codebase or asking clarifying questions.
Produce a structured, copy-pasteable handoff block that gives a fresh Claude Code session everything it needs to pick up where this one left off. The goal is zero context loss between sessions — the next chat should be able to read the handoff and immediately start working without re-exploring the codebase or asking clarifying questions.
Claude Code sessions are stateless — each new chat starts fresh. CLAUDE.md and memory provide project-level context, but session-specific state (what you just tried, what failed, what decisions were made, what's half-done) is lost. A good handoff captures exactly that session-specific context.
Collect these automatically (don't ask the user for them):
/tmp/.claude-session-issue-number. If it exists, fetch the issue title and URL via gh issue view <number> --json title,url./tmp/.claude-session-start-commit. If it exists, run git log --oneline <start-commit>..HEAD and git diff --stat <start-commit>..HEAD to see what changed.git status --short to catch uncommitted work.After gathering automatic context, ask the user only what you can't infer:
Keep it to 1–2 questions max. Don't over-interview.
Output the handoff inside a fenced code block (```markdown) so the user can copy it in one click. Use this structure:
## Session Handoff — [brief title]
### GitHub Issue
#[number] — [title]
[URL]
### Original Task
[What the user asked for, in their words or close to it]
### What Was Done
- [Completed item 1]
- [Completed item 2]
- ...
### What's Left
- [ ] [Remaining item 1]
- [ ] [Remaining item 2]
- ...
### Key Decisions & Findings
- [Decision or finding that the next session needs to know]
- [Why something was done a certain way]
- [What was tried and rejected, and why]
### Files Changed
[git diff --stat output or curated list]
### Uncommitted Work
[git status output, or "None — all committed and pushed"]
### Gotchas & Context
- [Anything non-obvious the next session should watch out for]
- [Test failures to be aware of]
- [Blocked dependencies]
calcOrigination() to normalize Infinity in tier bounds" is useful. "Fixed a calculation bug" is not.After outputting the handoff block, remind:
Paste this as your first message in the new chat. The next session will skip creating a new tracking issue and pick up #[number] instead.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub bogdanbaciu21/skills --plugin handoff