handoff-prompt
Skill2 starsChanged 49 days agoMITView on GitHub
Write work that is going to another session, agent or person as one self-contained block they can copy without editing: the receiver's missing context restated rather than referenced, every claim carrying where it came from, scope and non-goals stated, and the fence chosen so nested code cannot break it. Symptoms: write this as a prompt I can paste, draft a brief for another agent, file this as a feature request against another repo, hand this to the team that owns X, put it in a code block so I can copy it, I'll pass this over. Commentary to the sender stays outside the block and the block stays whole. It does not do the work it describes and it does not open the issue or the pull request — to write into another repository use work-in-external-repo, and when you need an answer back rather than to hand work away, use request-answers.
4 other projects use a version of this.
Adopted by
Most recently taken up by
- adrian-patterson/skillstheir own version, first seen Nov 3, 2026
- sidorovanthon/handoff-prompttheir own version, first seen Oct 20, 2026
- t-uda/skillstheir own version, first seen Aug 30, 2026
- Xuepoo/handoff-prompttheir own version, first seen Aug 10, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- adrian-patterson/skills★ 1same name
- sidorovanthon/handoff-prompt★ 0same name
- t-uda/skills★ 0same name
- Xuepoo/handoff-prompt★ 0same name
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 repository39 other files it gives its agents.
- agent-lifecycleSkill
- analyse-ticketSkill
- blast-areaSkill
- blocksSkill
- codex-review-loopSkill
- coding-teacherSkill
- decision-journalSkill
- delphi-groundSkill
- delphi-imagineSkill
- derive-codebase-contextSkill
- describe-changesSkill
- github-webhooksSkill
- implement-ticketSkill
- investigate-codebaseSkill
- isolated-change-validationSkill
- land-complex-changeSkill
- layer-repository-docsSkill
- mine-session-transcriptsSkill
- model-routingSkill
- new-ux-discoverySkill
- onboard-projectSkill
- preregistered-model-studySkill
- promote-releaseSkill
- publish-agent-skillSkill
- publish-to-linearSkill
- release-ledgerSkill
- release-notesSkill
- report-progressSkill
- request-answersSkill
- request-blocks-reviewSkill
- resolve-problem-reportSkill
- resume-after-limitSkill
- rotate-shared-secretSkill
- secure-credential-setupSkill
- track-in-linearSkill
- update-agent-skillsSkill
- visualise-blast-areaSkill
- work-in-external-repoSkill
- workspace-governanceSkill
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 6 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 4 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 44
Do not use it when the receiver is the person already reading: they have the context, and a fenced block is then ceremony that hides the …
- Distinctive: line 66
Complete when: every choice is either settled in the text or listed as a question for the receiver.
- Distinctive: line 81
Complete when: no sentence in the block depends on anything outside the block, and no deictic ("this", "that", "the one") points out of it.
- Distinctive: line 102
Complete when: every path is repository-relative or explained, and a scan for credentials, absolute home paths and internal identifiers …
- Distinctive: line 122
Complete when: every box is ticked, or the block is edited until they are.
- Distinctive: line 210
Asking the sender a question inside the receiver's text: If a choice is genuinely open, put it in the covering note above the fence, or …
“Common” is measured: kept by at least 6 in 10 of the 4 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 prompt
Work moves between sessions constantly — to an agent in another repository, to a colleague who owns the component, to tomorrow's context window — and it moves as prose written for whoever was in the room. The receiver opens with none of it: no transcript, no file open, no memory of which of four options was chosen. What reads as a complete instruction to the sender reads as a riddle to them.
Two failures do most of the damage, and they look nothing alike.
The first is reference instead of restatement: "apply the fix we discussed to that component". Every noun in it resolves only in a conversation the receiver cannot see. They ask, or they guess; guessing is worse and more common.
The second is the unpasteable deliverable: the handoff arrives interleaved with commentary to the sender — here's what I'd send, though you may want to soften the second paragraph — so there is no contiguous region to select. The sender edits by hand, and edits are where scope quietly changes.
This skill fixes the shape. The block is the deliverable. Everything the receiver needs is inside one fence; everything the sender needs to decide whether to send it stays outside.
When to Use
- The sender says any of: write this as a prompt, draft a brief for another agent, file this against repo X, hand this to the team that owns Y, put it in a code block, I'll pass this on.
- Work is being delegated to a session that will not share this one's context — a subagent in another repository, a second window, a scheduled run.
- A finding here becomes a request there: a bug in a dependency, a component gap in a shared library, an infrastructure change another team owns.
- A session is ending with work unfinished and the next one starts cold.
Do not use it when the receiver is the person already reading: they have the context, and a fenced block is then ceremony that hides the answer. Do not use it to write a document that lives in a repository — that is a file with a path, not a prompt to paste. And do not use it to perform the work it describes: it produces the ask, not the change.
Prerequisites
- The receiver, named. A repository, a team, a session, a person. "Another
agent" is not a receiver; the maintainer of
acme/design-systemis. Complete when: the handoff can say who it is for in its first line. - What the receiver already knows. Everything else must be restated. Assume no shared transcript, no open file, no memory of this session's decisions. Complete when: the shared baseline is written down, even as "assume they know only the public README".
- The evidence behind every claim. A path and line, a command and its output, a version, a measurement. A claim you cannot source is a claim the receiver cannot check. Complete when: each intended claim has its source, or is marked as the sender's judgement rather than a fact.
- The decision already made, or explicitly open. A handoff that is secretly asking the receiver to choose wastes a round trip. Complete when: every choice is either settled in the text or listed as a question for the receiver.
Procedure
- Name the receiver and the ask in the first two lines of the block. Not a preamble about where this came from. The receiver decides in five seconds whether this is theirs. Complete when: line one says who and what, and nothing above it is needed to understand line two.
- Restate the context; do not reference it. Replace every "the fix we discussed", "that file", "as above" and "the issue you mentioned" with the thing itself. Pronouns whose antecedent is in this session are the specific defect to hunt. Complete when: no sentence in the block depends on anything outside the block, and no deictic ("this", "that", "the one") points out of it.
- Anchor each claim where it came from.
path:line, a command with its output, a version number, a date. Where the claim is a judgement, say so in the same sentence — the receiver is entitled to disagree with judgement and not with a measurement. Complete when: a reader who trusts nothing can re-derive every factual claim from what the block gives them. - State the scope and the non-goals. What you are asking for, and what you are explicitly not asking for. Non-goals prevent the two expensive failures: the receiver doing far more than wanted, and the receiver refusing because the ask looked unbounded. Complete when: the block contains at least one sentence beginning "not asking for" or its equivalent.
- Strip what does not travel. Machine-local absolute paths, session ids, scratch directories, temporary branch names, ticket numbers from a tracker the receiver cannot open — and anything secret. A token, a key, an internal hostname or a customer name must never cross a handoff. Complete when: every path is repository-relative or explained, and a scan for credentials, absolute home paths and internal identifiers comes back empty.
- Choose a fence longer than anything inside it. Handoffs about code contain code, and code contains fences. Three backticks inside a three-backtick block truncates the paste, usually silently and usually at the worst place. Count the longest run of backticks in the content and use at least one more, or use a tilde fence. Complete when: the block's fence is strictly longer than the longest backtick run inside it, and pasting the whole block into a markdown renderer shows one block rather than several.
- Put the covering note outside, above, and short. The sender needs to know what they are about to send and what you assumed. That is two or three sentences before the fence — never after it, because anything after the fence is routinely pasted along with it. Complete when: nothing below the closing fence is needed by either the sender or the receiver.
- Run the Verification checklist over the block before handing it over. Complete when: every box is ticked, or the block is edited until they are.
Usage Examples
Write this up as a prompt I can paste into a session working on <other-repo>.
Restate whatever they need — they have none of this context — and anchor each
claim to a path and line so they can check it rather than take my word.Draft the feature request against the shared UI library. Say plainly what we
need and what we are NOT asking them to do, because last time the scope grew.
One block, nothing after it.I'm handing this to tomorrow's session. Write the brief: what is done with its
evidence, what is running, what the next act is and what it waits on. Assume the
reader knows nothing about today.What it looks like
Specimens, not prompts. The asks are above; these are what the block should and should not look like.
A handoff that works
For: the session working on acme/design-system.
Ask: add an `inline` variant to `ToolCall` and `ToolGroup`.
Context you do not have: a console in another repository renders twenty tool
rows per transcript. It currently patches your published package to get this —
`patches/@acme__ui@0.10.0.patch`, 9 hunks across
`dist/elements/tool-call.{js,d.ts}` and `tool-group.{js,d.ts}` — so the change
already exists and is exercised by a real consumer.
The shape, as patched:
```ts
variant?: "default" | "inline";
```
Why it matters to you rather than to us: the patch must be re-applied on every
release, and a version bump silently drops the treatment.
Not asking for: the transcript assembly, or anything that knows what an agent
is. That stays in the consumer.Note the four-backtick outer fence: the content contains a three-backtick ts
block, and a three-backtick outer fence would have ended the paste at variant?.
The same handoff, as it usually arrives
Can you ask them to add the inline variant we talked about? It's the thing the
patch does. Should be quick — though check with me first about whether the
compact mode stuff goes in the same request, I'm not sure.Four defects in three sentences. "The inline variant we talked about" and "the thing the patch does" resolve only here. There is no repository named, so the receiver does not know it is theirs. "Should be quick" is an estimate of someone else's work from someone who will not do it. And the last clause asks the sender a question inside the text meant for the receiver, so it cannot be sent at all.
Pitfalls
- The unresolvable pronoun. "That component", "the fix", "as discussed". It reads as complete to the sender because the antecedent is in their head. This is the single most common defect and the easiest to grep for.
- Commentary inside the fence. You might want to reword this addressed to the sender, sitting in the middle of text addressed to the receiver. It gets sent.
- The truncating fence. Three backticks around content containing three backticks. The paste ends early, the receiver acts on half a brief, and nobody notices until the work comes back wrong.
- Machine-local paths. A path rooted in someone's home directory tells the receiver nothing and makes the sender look careless. Repository-relative or nothing. (This pack's own catalogue validator refuses such a path in any skill file — including, on the first run, in this skill's illustration of the rule.)
- Secrets crossing a boundary. A handoff is a copy-paste into an unknown destination — another agent's context, an issue tracker, a chat. Treat it as publication.
- Estimating the receiver's effort. "Should be quick" is not yours to say, and it reliably annoys the person who has to do it.
- Asking the sender a question inside the receiver's text. If a choice is genuinely open, put it in the covering note above the fence, or list it inside as an explicit question to the receiver.
- Conclusions without provenance. "X is broken" invites disagreement with no
way to resolve it. "X returns 500 at
src/api/x.ts:42whenidis absent — see the test attest/x.test.ts:18" does not.
Verification
- The first two lines name the receiver and the ask.
- No sentence depends on anything outside the block; no pronoun points out of it.
- Every factual claim carries its source; every judgement is labelled as one.
- Scope and at least one non-goal are stated.
- No machine-local absolute paths, session ids, scratch directories, or secrets.
- The outer fence is strictly longer than the longest backtick run inside it.
- The covering note is above the fence and nothing below it is load-bearing.
- Pasting the block alone, with no surrounding text, is a complete instruction.
The handoff is finished when the sender could send it without reading it, and the receiver could act on it without replying.
See references/handoff-contract.md for the
block's anatomy, the fence rules in full, and variants for a feature request, an
agent brief and a session handover.
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.

