handoff
Skill4 starsChanged 10 days agoMITView on GitHub
Capture a bounded subject from the current conversation as a frozen, self-contained snapshot in `.handoff/` — context a different work session can pick up cold. Written once, indexed nowhere, acted on only by a human. Use when a conversation surfaces something that belongs to a different piece of work.
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 repository13 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- analyticsSkill
- companySkill
- correspondenceSkill
- inboxSkill
- insightsSkill
- ops-baseSkill
- opsSkill
- outboxSkill
- preparationSkill
- tasksSkill
- transcriptSkill
- update-skillsSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 6 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 172 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 14
The defining property: nothing picks it up: No skill parses, indexes, summarises, sweeps or lints it.
- Distinctive: line 22
Write a snapshot when all of these hold:
- Distinctive: line 48
Self-contained: No wikilinks, no relative paths, no references to vault files.
- Very specific: line 50
Not indexed: No CHANGELOG entry, no README index, no _insights.yaml, no task generated.
- Distinctive: line 135
Report the path and nothing else: No CHANGELOG, no task, no index entry.
- Distinctive: line 137
If the conversation yields several separable subjects, say so and offer one snapshot each — do not merge them.
- Distinctive: line 157
Never link a snapshot from a living document: If a living document needs to point at the subject, it states the subject in its own words.
- Very specific: line 159
Never read
.handoff/during a scan: Not for context gathering, not for cross-references (/preparation Step 2.5), not for insight …
“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 -- Frozen Context Snapshots (CR-033)
A conversation often surfaces a bounded subject that belongs to different work: a topic a colleague should hear about, a positioning question that belongs to a company document, a commitment whose execution is a separate job.
/handoff writes that subject to <vault>/.handoff/ as a frozen, self-contained snapshot — everything the receiving session needs, and nothing else.
The defining property: nothing picks it up. No skill parses, indexes, summarises, sweeps or lints it. It generates no task, appears in no dashboard, and is never auto-archived. A human opens it and starts new work from it. That is the only way it moves.
Isolation is the feature. The receiving session gets exactly one subject with no surrounding context — no links to chase, no adjacent threads bleeding in, no inherited assumptions.
When to use it
Write a snapshot when all of these hold:
- The subject is bounded — it can be stated without the rest of the conversation
- It belongs to different work than the session that produced it
- Someone will act on it later, in a separate session or a separate head
- It benefits from arriving clean — without the source conversation's context
When NOT to use it
| Situation | Use instead |
| Material going out to a named person, with a send event | _outbox/ + /outbox |
| A line of intent with an owner and a date | _tasks.yaml + /tasks |
| Working material with no destiny | .ephemeral/ (allowed to die, CR-024) |
| A record of what a meeting covered | The meeting summary (/transcript, /ops) |
| Durable knowledge worth synthesising across sources | .knowledge/ via /insights synthesize |
A snapshot that would need updating next week is the wrong artefact — that is a living document.
Contract
Six rules. They are the skill.
- Frozen. Written once. Never updated as the world changes; it records what was true when captured. If the situation moves materially, write a new snapshot — do not edit the old one.
- Self-contained. No wikilinks, no relative paths, no references to vault files. A reader with no vault access must be able to act on it.
- Bounded. One subject per snapshot. Three separable subjects yield three snapshots.
- Not indexed. No CHANGELOG entry, no README index, no
_insights.yaml, no task generated. - Read on explicit request only. Opened because the user asked for it by name — never as part of a scan.
- Not archived. Already frozen; archiving is a no-op.
For all other skills, .handoff/ does not exist. /ops (including /ops check), /insights and /analytics must skip it the way they skip .archive/ — regardless of urgency, sensitivity, or what the file says.
Naming
.handoff/YYMMDD-handoff-<subject-slug>.mdSlug rules follow the vault's general naming contract: YYMMDD- prefix always, the handoff role keyword always, Swedish characters preserved (förberedelse, not forberedelse). The subject slug names the subject, not the source meeting — the receiving session searches by topic.
Good: 260828-handoff-medtech-transkribering-journalskrivning.md
Bad: 260828-handoff-marc-motet.md (names the source, not the subject)
Document structure
# Handoff snapshot: [subject]
**{strings.handoff.captured}:** YYYY-MM-DD · **{strings.handoff.source}:** [conversation, date, duration]
**{strings.handoff.scope}:** [what this covers -- and explicitly, what it does not]
> **{strings.handoff.frozen_marker}** Self-contained by design: no links into the vault,
> not indexed anywhere, not referenced by any living document. What is written here is what
> was true on the day -- it is not maintained and does not track later changes.
---
## 1. [First substantive section]
## 2. [Second]
## N. [What was still open / undecided at capture time]Numbered sections. A receiving session refers to "section 4" without ambiguity.
Close with what was open. The most useful final section is what had not been decided when the snapshot was taken — it tells the receiving session where its work begins.
Write for a cold reader. Assume no knowledge of the source conversation, the people in it, or the vault. Spell out roles on first mention. Where a figure came from a specific claim, say so.
Confidentiality boundary
Where the content came from a confidential conversation, the snapshot carries an explicit boundary block at the top, before any content:
> ## {strings.handoff.confidentiality_header} -- READ BEFORE USE
>
> [Where this came from, in one sentence.]
>
> **May be shared onward:** [the general signal -- market state, category movement,
> a regulatory fact -- that the receiver should know regardless of source.]
>
> **May NOT be shared onward:** [the counterpart's own business -- terms, timing,
> commercial arrangements, and that they were the source.]
>
> **Naming:** [whether the source may be named, and what to do if the receiver wants
> to be connected.]This is where the snapshot outperforms every other home: the constraint travels with the content, written while the source is still clear. A receiving session has the boundary in front of it instead of inferring it.
Anonymise inside the body too — write "a market-leading vendor" rather than the name when the name is the restricted part. A snapshot that needs a boundary block and leaks the identity in section 3 has failed.
Subcommands
/handoff <subject> (default)
Capture the named subject from the current conversation.
- Bound the subject. Identify what belongs and — explicitly — what does not. State the boundary back to the user before writing.
- Check the confidentiality question. Did any of this come from a confidential source? If yes, draft the boundary block and ask the user to confirm it before writing. Never guess where the line falls.
- Draft self-contained. Strip every vault link. Expand every reference that assumed the source conversation.
- Write to
.handoff/YYMMDD-handoff-<slug>.md. - Report the path and nothing else. No CHANGELOG, no task, no index entry.
If the conversation yields several separable subjects, say so and offer one snapshot each — do not merge them.
/handoff list
List snapshots: filename, capture date, subject line. Filenames and headings only — never open or summarise contents.
/handoff read <name>
Open a named snapshot. This is the explicit request the read-lock requires. Partial name matching is fine; if ambiguous, list matches and ask.
/handoff help
Show subcommands and the six contract rules.
Behaviour rules
- Never write a snapshot unasked. Offering is fine ("this looks like it belongs to different work — snapshot it?"); writing without being asked is not.
- Never update an existing snapshot. Correcting a typo is acceptable. Adding new information is not — that is a new snapshot.
- Never link a snapshot from a living document. If a living document needs to point at the subject, it states the subject in its own words.
- Never generate a task from a snapshot. The user decides whether the subject becomes work. A snapshot that silently spawns a task has broken the non-delivery property.
- Never read
.handoff/during a scan. Not for context gathering, not for cross-references (/preparationStep 2.5), not for insight extraction, not for sweeps.
Out of scope
- Automation. Nothing schedules, chases or reminds. A deadline belongs in a task that names the subject; the snapshot stays inert.
- Dashboards. Surfacing handoffs in a daily view re-couples them to the flow they were extracted from.
- Synthesis.
.knowledge/(CR-027) synthesises across the corpus and is maintained. Handoffs are point-in-time and are not. - Delivery. A snapshot is never sent. If material is going to a person, that is
_outbox/.
String Resolution
Template strings marked {strings.handoff.*} resolve per the standard order: config strings -> language-matched defaults -> hardcoded fallback.
| Key | English | Swedish |
strings.handoff.captured | Captured | Fångad |
strings.handoff.source | Source conversation | Källsamtal |
strings.handoff.scope | Scope | Omfattning |
strings.handoff.frozen_marker | Frozen snapshot. | Fryst ögonblicksbild. |
strings.handoff.confidentiality_header | CONFIDENTIALITY BOUNDARY | SEKRETESSGRÄNS |
Swedish output follows the vault's swedish_chars: strict rule — å, ä and ö in every word that needs them, in headings, body and filename slug alike.
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.

