Help us improve
Share bugs, ideas, or general feedback.
From crucible
Writes a handoff document so a fresh agent can continue the current work arc or pick up the next logical task. Includes nothing-to-handoff check and two modes.
npx claudepluginhub raddue/crucibleHow this skill is triggered — by the user, by Claude, or both
Slash command
/crucible:handoffThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Write a handoff document so a fresh agent (with no memory of this conversation) can pick up where we left off.
Creates structured session handoff documents for seamless continuation. Useful when ending a session or handing off to another developer.
Writes or updates HANDOFF.md with project goal, current progress, what worked/didn't, and next steps for agent handoffs with fresh context.
Creates concise handoff documentation for work-in-progress sessions when handing off to another agent. Supplements history compaction with tasks, changes, learnings, artifacts, and next steps.
Share bugs, ideas, or general feedback.
Write a handoff document so a fresh agent (with no memory of this conversation) can pick up where we left off.
Skill type: Rigid — follow the process; omit-over-fill is preferred over padding.
Execution model: Direct execution by the orchestrator. No subagent dispatch.
Announce at start: Output [handoff] Writing handoff document... before any processing.
Do not start or continue the work itself. Your only job here is to produce the handoff file. If you notice something that needs doing, write it as an open question — don't go fix it.
Before writing anything, sanity-check that there's actually something to hand off. Run these sub-steps in order:
git rev-parse --is-inside-work-tree. If it fails (not a git repo), ask the user where to write the file and what scope counts as "the project," then proceed using whatever they say. Skip git-specific verification steps in the rest of the process when in this mode. This step always runs first regardless of $ARGUMENTS.$ARGUMENTS (see bottom of this file) is non-empty, treat it as sufficient evidence of an arc and skip step 3. Proceed to Mode selection.git status shows modifications/staged), recent commits on a non-default branch, or an active line of investigation in the conversation? If none of the above apply (fresh session, clean tree, no real conversation history): tell the user there's nothing to hand off, suggest they invoke /handoff again after doing some work, and stop. Do not create a file.Survey the current session and the project state, then decide:
(A) Continuation handoff — when there's clearly an in-progress arc:
(B) Backlog handoff — when the current arc is genuinely wrapping up:
If you're in mode A but want to mention upcoming-pickup candidates, add a brief "Next on deck" subsection to the Continuation handoff — don't switch modes.
Ambiguity check — ask, don't guess. If the session has clear signals for one mode (mid-feature with concrete next steps → A; user just said "we shipped, what's next?" → B), pick silently and state the choice + one-line reason at the top of the doc. But if the session genuinely could go either way — e.g., one arc just shipped AND a separate half-done thread exists, or the user paused with no clear "done" signal but also no obvious next action — surface the choice to the user with one-line summaries of what each mode would produce, and let them pick. The user has context the model doesn't (what they're about to do next, whether the half-done thread matters). When the user is away or asks for default behavior, fall back to (A) — losing context is more costly than losing pickup recommendations.
Lead with what to do next — a fresh agent should be able to start the very next concrete action within 60 seconds of reading. Then layer in the context they need to act sensibly.
Sections to consider, in this order. Skip any section that would only contain restated generalities or filler — empty omission is preferred over padding. "Required" means "include if there's something real to put in it."
CLAUDE.md and MEMORY.md if those exist; otherwise capture from conversation.Lead with what just shipped so the next agent understands what's now stable. Then propose pickups, ordered by what makes the most sense to do next given the actual state of the codebase and project.
Same omit-over-filler rule applies.
Read the room. Survey the conversation, recent git log, recent PRs/issues, and the project's MEMORY.md / CLAUDE.md (if present) to understand current state.
For mode B, also identify the scope of the just-shipped arc by reading the most recent merged PRs/commits and the tickets they close. State the inferred scope (milestone, epic, label, or topic name) explicitly at the top of the handoff doc. If the scope is genuinely ambiguous (multiple plausible milestones), surface 2-3 candidates and ask the user which to use before continuing.
Decide A vs B. State your choice and one-line reason at the top of the doc.
Source the backlog (mode B only). Detect the project's issue tracker before querying:
git remote -v. If github.com and gh is on PATH → gh issue list.gitlab.com and glab is on PATH → glab issue list.gh issue list / glab issue list, filter by the milestone, epic label, or topic identified in step 1 (e.g., gh issue list --milestone 'Hex Phase 3' or --label epic:foo). Only fall back to an unfiltered list if no scope can be derived from the session.docs/plans/, docs/todo.md, TODO.md, in-tree // TODO: comments). Never invent issue numbers — if you can't find a real source, say so and ask the user.Verify load-bearing claims, with a budget. Spend at most a handful of tool calls verifying things you're about to cite (current branch name, last commit SHA, PR numbers, file paths, function names). If a claim can't be cheaply verified, mark it (unverified) in the doc rather than digging deeper. Don't audit the entire codebase.
Write the file. Detect the project's handoff convention before choosing a path:
docs/handoffs/, handoffs/, or .handoffs/ directory in the project root. If one exists, use it and match the filename style of the most recent file in that directory (ls -t | head it).docs/handoffs/YYYY-MM-DD-<short-topic-slug>.md. Create the directory if needed and note the new convention in the doc itself.<milestone-or-epic>-backlog).-pt2 (or -pt3, etc.) appended to the slug, and reference the prior file's path in the new file's first paragraph. The Read this doc and continue: line then points unambiguously at the freshest content.Output the file path — see Output Contract below.
The user explicitly asked for the file location in the response. Make it impossible to miss:
Read this doc and continue: <absolute path>. Example: Read this doc and continue: /home/user/project/docs/handoffs/2026-04-19-foo.md<repo-root>/<relative-path> where repo-root comes from git rev-parse --show-toplevel. Native path separators are fine (Windows backslashes are acceptable). In the non-git fallback mode (see Step 0), use whatever absolute path the user directed you to write to.Read this doc and continue: (none — nothing to hand off) — same no-fence rule applies.(unverified).2026-04-19), not relative (yesterday, this week) — handoffs are read days or weeks later.Additional user instructions for this handoff (may be empty — if empty, proceed with the defaults above; if non-empty, treat as scoping/emphasis hints, not as a replacement for the process):
$ARGUMENTS