agentleFS
chrislacey89chrislacey89/skills/handoff/SKILL.md

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

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.
  • FabienDehopreSkill

    decision-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

  • liufeng1976Skill

    setup-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

  • AWSSkill

    to-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

  • GoogleSkill

    ask-matt

    Ask which skill or flow fits your situation. A router over the skills in this repo.

    Also in 87 projects that use this

  • RoentekSkill

    loop-me

    Grill me about specs for the workflows I want to build, within this workspace.

    Also in 51 projects that use this

  • LesaniSkill

    writing-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

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
  1. Very specific:

    Do not use /handoff when:

    line 29
  2. Very specific:

    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 …

    line 41
  3. Distinctive:

    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 …

    line 43
  4. Distinctive:

    If the work belongs to a pipeline feature, locate the research artifact rather than rereading it:

    line 56
  5. Very specific:

    If a PRD or slice issue is in scope, record its number.

    line 61
  6. Distinctive:

    Read the path before writing to it (the file exists, empty, after the block).

    line 74
  7. Very specific:

    Follow the plain-language walkthrough shape from docs/writing-for-humans.md (bundled in this skill's references when invoked outside the …

    line 78
  8. Distinctive:

    every process the session left running was stopped or is listed in the doc

    line 151

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 /handoff alongside 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 a docs/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 branch
  • git log --oneline -10 — recent commits
  • git status --short — uncommitted changes, if any
  • gh pr view --json number,title,url 2>/dev/null — active PR on this branch, if one exists
  • gh 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 (/research Phase 5c states where it is written); check it with sidecar.sh require <path> --from "PRD #<n>", from the bundled references/sidecar.sh, and record a MISSING: 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:

  1. Domain setup — one paragraph. What part of the system or what problem this conversation has been about, in the user's own words.
  2. Lede — one sentence. Where the work is right now. Front-loaded. Smart Brevity's Lede: state it before you qualify it.
  3. 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.
  4. Why it matters — one or two sentences. What this session unlocks or unblocks. Smart Brevity's Why it matters: signpost.
  5. 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">
  6. 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 $TMPDIR path, 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

RationalizationReality
"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 mktemp path).
  • The agent is about to git add the 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 .md path 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 mktemp path, 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 — /handoff is a pure side-route producing a transient artifact. Its one sub-agent, the Step 5 cold reader, is part of its own procedure

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.