handoff
Skill4 starsChanged 8 days agoMITView on GitHub
Side-route skill for compacting the current session into a transient handoff doc when no pipeline compression artifact fits — mid-skill, exploratory, side-route, or non-pipeline work. Not for routine inter-skill handoffs; use the calling skill's closing summary + **Next session:** line instead.
191 other projects use a version of this.
Adopted by
Most recently taken up by
- xiaoxiaosrm/dsh-mattpocock-skillstheir own version, first seen Nov 8, 2026
- ethosagent/ethostheir own version, first seen Nov 8, 2026
- dsifry/metaswarmtheir own version, first seen Nov 8, 2026
- glebis/claude-skillstheir own version, first seen Nov 8, 2026
- domengabrovsek/agent-configtheir own version, first seen Nov 8, 2026
- domengabrovsek/claudetheir own version, first seen Nov 8, 2026
Used with
Projects with it also use decision-mapping, setup-ts-deep-modules and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
FabienDehopreSkilldecision-mapping
Turn a loose idea into a sequenced map of investigation tickets, then drive them to resolution one at a time.
Also in 8 projects that use this
liufeng1976Skillsetup-ts-deep-modules
Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.
Also in 42 projects that use this
AWSSkillto-questionnaire
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
Also in 93 projects that use this
GoogleSkillask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Also in 87 projects that use this
RoentekSkillloop-me
Grill me about specs for the workflows I want to build, within this workspace.
Also in 51 projects that use this
LesaniSkillwriting-beats
Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.
Also in 54 projects that use this
Other versions191 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 191
- mattpocock/skills★ 309ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- GreyDGL/PentestGPT★ 16ksame name
- ykdojo/claude-code-tips★ 10ksame name
- ArcReel/ArcReel★ 6.3ksame name
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- withcoral/coral★ 4.9ksame name
- epicenter-md/epicenter★ 4.8ksame name
- EpicenterHQ/epicenter★ 4.8ksame name
181 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository36 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- api-design-reviewSkill
- closeoutSkill
- compoundSkill
- correct-courseSkill
- create-milestoneSkill
- design-an-interfaceSkill
- excavateSkill
- executeSkill
- fix-findingsSkill
- git-guardrails-claude-codeSkill
- hackathonSkill
- helpSkill
- improve-codebase-architectureSkill
- improve-pipelineSkill
- init-pipelineSkill
- lfgSkill
- mermaidSkill
- prd-to-issuesSkill
- pre-mergeSkill
- prototypeSkill
- qaSkill
- re-pitchSkill
- request-refactor-planSkill
- researchSkill
- respond-to-reviewSkill
- setup-pre-commitSkill
- setup-ralph-loopSkill
- shapeSkill
- tddSkill
- triage-issueSkill
- ts-auditSkill
- ubiquitous-languageSkill
- visual-recapSkill
- walk-commitsSkill
- write-a-prdSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 4 are distinctive, and 4 are very specific to this project.
0
Common
Most of the 172 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 29
Do not use /handoff when:
- Very specific: line 41
If the user passed an argument to /handoff that names a next action (a skill to run, a feature to build, a bug to chase), treat it as the …
- Distinctive: line 43
If no argument was passed, or the argument names no next action ("the work so far", "everything we did"), ask one question — what the next …
- Distinctive: line 56
If the work belongs to a pipeline feature, locate the research artifact rather than rereading it:
- Very specific: line 61
If a PRD or slice issue is in scope, record its number.
- Distinctive: line 74
Read the path before writing to it (the file exists, empty, after the block).
- Very specific: line 78
Follow the plain-language walkthrough shape from docs/writing-for-humans.md (bundled in this skill's references when invoked outside the …
- Distinctive: line 151
every process the session left running was stopped or is listed in the doc
“Common” is measured: kept by at least 6 in 10 of the 172 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Handoff
Compact the current session into a transient handoff doc so a fresh agent — same user, another agent, another machine, or a teammate — can pick up the work without copy-pasting context by hand.
Invocation Position
/handoff is a side-route skill. It is invoked ad-hoc, not from any default pipeline path.
Use /handoff when:
- a session has run long and the next step is better served by a fresh context window
- you are mid-skill (mid-
/execute, mid-/qa, mid-/improve-codebase-architecture) and the existing inter-skill compression artifacts (closing summary, research file, PRD issue, slice issue, PR) do not fit because you are not at a skill boundary - you are doing exploratory, debugging, or other non-pipeline work where no natural compression artifact exists
- you want to hand off to a teammate, a different agent (Codex, Gemini, another Claude session), or a different machine
Do not use /handoff when:
- a primary pipeline skill is about to print its
**Next session:**runtime line — that is the inter-skill compression artifact, and using/handoffalongside it duplicates work and creates two competing handoff records - the right move is to update an existing durable artifact: a closing summary in
/shape, the PRD issue body, a slice issue comment with what was done and what remains, the PR body, or adocs/solutions/entry. State that belongs in GitHub belongs in GitHub - the session is trivial (single-question Q&A, single-file edit, copy fix) — a handoff doc would dilute the work, not compress it
/handoff reconnects to the main pipeline by being invoked again — or not — from the fresh session. It produces a transient artifact, not a durable work item.
Process
1. Confirm the next-session focus
If the user passed an argument to /handoff that names a next action (a skill to run, a feature to build, a bug to chase), treat it as the description of what the next session is for. Skip ahead to Step 2.
If no argument was passed, or the argument names no next action ("the work so far", "everything we did"), ask one question — what the next session will be used for — and wait for the answer. Do not present a list of questions.
2. Read existing state — do not duplicate it
Capture pointers to durable state, not copies of its contents. Run the cheap commands first:
git branch --show-current— current branchgit log --oneline -10— recent commitsgit status --short— uncommitted changes, if anygh pr view --json number,title,url 2>/dev/null— active PR on this branch, if one existsgh issue list --assignee @me --limit 5 --state open— relevant open issues, when applicable- processes this session started and left running (a dev server, a watcher, an automation browser) — stop each one, or list it in the doc with how to stop it, so the next session does not collide with it
If the work belongs to a pipeline feature, locate the research artifact rather than rereading it:
- archive mode (default): the absolute path the PRD cites (
/researchPhase 5c states where it is written); check it withsidecar.sh require <path> --from "PRD #<n>", from the bundled references/sidecar.sh, and record aMISSING:line in the doc rather than dropping the pointer - spike-issue mode:
gh issue view <spike-issue-number>
If a PRD or slice issue is in scope, record its number. Reference each of these by path, URL, or issue number — never copy bodies into the handoff doc. Future-you can run gh issue view from the fresh session.
3. Write the doc to a mktemp path
Generate the path with this block, run as one shell. The doc never lives inside the repo working tree.
dir="${TMPDIR:-/tmp}"
HANDOFF="$(mktemp "${dir%/}/handoff-XXXXXX")" && mv "$HANDOFF" "$HANDOFF.md" && HANDOFF="$HANDOFF.md" && echo "$HANDOFF"The X's sit at the end of the template, with no suffix after them, because that is the one shape BSD and GNU mktemp both fill in; the .md is added by the rename. scripts/test-handoff-mktemp.sh runs this block and pins the result.
Read the path before writing to it (the file exists, empty, after the block). Write the body. Print the path to the user at the end so they can paste it into the next session.
4. Shape the doc body
Follow the plain-language walkthrough shape from docs/writing-for-humans.md (bundled in this skill's references when invoked outside the skills repo). The body should be readable in one pass by someone who has not seen this conversation.
Order:
- Domain setup — one paragraph. What part of the system or what problem this conversation has been about, in the user's own words.
- Lede — one sentence. Where the work is right now. Front-loaded. Smart Brevity's Lede: state it before you qualify it.
- What was tried / what's open — short paragraphs or tight bullets. The specific things that were done, the specific things still open, and any decisions that were taken. Reference durable artifacts by path or URL; never restate their contents.
- Why it matters — one or two sentences. What this session unlocks or unblocks. Smart Brevity's
Why it matters:signpost. Next session — a block in the same shape primary pipeline skills already emit:
**Next session:** <skill or instruction> **Input:** <artifact path, issue or PR number, branch name, or "use the handoff doc above">- Suggested skills — one or two
/<skill-name>references the fresh session is likely to want, with a one-line reason each. Optional; skip when the next move is obvious from the Next session block.
Revise once before saving. Apply the bar in docs/writing-for-humans.md: strip clutter, cut warm-up, prefer active verbs and concrete nouns, ensure the lede earns the next sentence.
Then confirm three things about the content. Each can be checked; none asks whether the doc reads well to you, which is the question the writer is least able to answer (Step 5 asks someone else).
- Mutable external state was re-checked during this run. A claim about a deploy, a secret, a database row, a live URL, or a test result was checked in this run, or the doc marks it "unverified". A fact recalled from earlier in the session is not checked.
- No pointer leads into session scratch. Apart from the doc itself, nothing the doc points to lives under a session scratchpad or
$TMPDIRpath, because the next session may not have it. Move the content into the doc, or into a durable home, or drop the pointer. - Every open decision is marked. An approach the doc suggests is either marked "checked feasible", with what was checked, or "unverified".
5. Cold read (DO-CONFIRM)
A handoff's reader lacks the writer's context by construction, and the writer is the one person who cannot see what is missing from it. So before printing the path, spawn one fresh, read-only sub-agent and give it only the doc's path. Ask it:
- Could you start the Next session step from this doc and the files it points to, without asking the user anything? If not, what would you have to ask?
- Separate facts only the writing session holds (an approach already ruled out, a value never written down, a step that was run) from planning the next skill will do on its own (which functions to add, which migration to write). List only the first kind; the second stays out, because the doc carries pointers, not plans.
- Open each file, issue, or PR the doc points to. Where one contradicts the doc, or is stale against it, say which and how.
Fix the doc for each fact the reader lists. Do not run a second cold read; one pass is the check.
A pointed-to durable artifact that the reader found stale (a plan file, a dossier, an issue body) is not this skill's to edit. List each under a Stale pointers heading in the doc, naming the skill that owns it, and repeat the list in Step 6's message.
Skip the cold read only with a one-line reason written into the doc, for example Cold read skipped: the next step is read-only review of PR #N. A skip with no reason in the doc is a skipped check, not a decision.
6. Print the path and exit
Print the mktemp path, a one-line preview of the lede, and any stale pointers from Step 5. The user picks the path up and pastes it into a fresh session. /handoff does nothing else — it does not auto-invoke another skill, it does not modify any other artifact (stale ones are listed, not edited), it does not commit anything.
Common Rationalizations
| Rationalization | Reality |
"The session is long, so I should /handoff between two primary pipeline skills." | Primary pipeline skills already print **Next session:** from their ## Handoff section. That is the inter-skill compression artifact. /handoff is for situations where that artifact does not fit — not a second copy of it. |
| "I'll write the handoff doc inside the repo so I can refer back to it later." | A handoff doc is a transient context-transfer artifact, not durable state. State that belongs durably belongs in GitHub — update the PRD issue, leave a slice issue comment, write a docs/solutions/ entry. The handoff doc lives at a mktemp path on purpose. |
| "The handoff doc should include the full PRD text so the next session has everything." | No. The next session can run gh issue view <n> from the doc's reference. Duplicating the PRD makes the doc go stale the moment the issue is edited and bloats context for no benefit. |
"I'm mid-/execute and the work is unfinished — I'll write a handoff doc instead of leaving an issue comment." | /execute already prescribes leaving an issue comment with what was done, what remains, and the exact error output. That comment is the durable record. A handoff doc can carry session-level pointers on top of it, but it does not replace the comment. |
| "The argument the user passed is vague, so I'll skip the focus question." | Ask one question. A vague handoff doc earns less reader trust than a short one with a clear focus. |
| "I already verified it myself, so the cold read adds nothing." | A writer can re-check git state and every live fact, judge the doc ready, and still leave gaps a cold reader finds in one pass. You checked what you knew to check. The cold reader finds what you didn't know was missing. |
| "I'll commit the handoff doc to the repo so it survives." | Don't. Surviving the session is not the goal — compacting it is. If the content needs to survive, the right vessel is an issue comment, a PRD body update, or a docs/solutions/ entry. |
Red Flags
- The doc is being written inside the repo working tree (not at a
mktemppath). - The agent is about to
git addthe handoff doc. - The doc body restates the PRD, the research artifact, or the PR body instead of linking them.
- The doc is being produced at the natural close of a primary pipeline skill, parallel to that skill's existing
**Next session:**line. - The doc is longer than the source conversation deserves — a one-question Q&A becoming a multi-section handoff is the wrong shape.
- The next-session focus is missing or generic ("continue the work") rather than a specific instruction or skill.
- The path is about to be printed with no cold read run and no skip reason in the doc.
- The agent is about to edit a stale plan file, dossier, or issue body the cold read found, instead of listing it under Stale pointers.
Verification
A run of /handoff is not complete until:
- the doc was written to the
.mdpath Step 3's block printed, outside the repo working tree - the body references durable artifacts by path, URL, or issue number — not by quoted content
- the body includes a
**Next session:**block in the conventional shape - every process the session left running was stopped or is listed in the doc
- the Step 4 checks hold: mutable external state re-checked or marked "unverified", no pointer into session scratch, every open decision marked
- the Step 5 cold read ran and its facts were fixed in the doc, or the doc states why it was skipped
- the path was printed to the user
- the doc was not staged, committed, or moved inside the repo
Handoff
- Expected input: a long-running or exploratory session that does not sit on a primary pipeline boundary, plus (optionally) an argument describing the next session's focus
- Produces: a transient handoff doc at a
mktemppath, referencing durable state rather than copying it, checked by one cold read before the path is printed - Comes next by default: a fresh session opened by the user, using the doc as its entry point — the fresh session may invoke any skill (often
/execute,/qa, or/help) or continue ad-hoc, depending on the captured focus - Does not invoke: any other skill —
/handoffis a pure side-route producing a transient artifact. Its one sub-agent, the Step 5 cold reader, is part of its own procedure
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

