handover
Skill0 starsChanged 3 months agoMITView on GitHub
Write or read .claude/handover.md, a session-continuity snapshot used instead of `claude -c` around a reboot-triggering action. Use in write mode proactively before anything likely to end the session (systemctl reboot, rpm-ostree rebase, anything requiring a restart); use in read mode whenever the session's first turn is the literal message "I'm back" — sent automatically by scripts/session-autostart.sh on every launch, not typed by the human — or when the user says they're back after a reboot by hand.
53 other projects use a version of this.
Adopted by
Most recently taken up by
- Kealman/cland-v0their own version, first seen Nov 15, 2026
- yagizdo/quivertheir own version, first seen Nov 15, 2026
- thiagobluhm/o1memtheir own version, first seen Nov 8, 2026
- hmislk/hmistheir own version, first seen Nov 2, 2026
- loonylabs-dev/claude-setuptheir own version, first seen Nov 1, 2026
- oubakiou/skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use harness-init, brainstorm and 7 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.
steptianSkillharness-init
初始化 .harness 开发框架,集成代码修改影响范围评估和测试覆盖建议功能。触发词:'初始化新项目'、'harness init'、'更新 harness'、'分析影响范围'、'评估修改影响'
Also in 3 projects that use this
nicolasestremSkillbrainstorm
Structured idea generation and solution exploration with systematic analysis.
Also in 3 projects that use this
GoogleSkillto-tickets
Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker — edges as text in one file per ticket locally, or native blocking links on a real tracker.
Also in 3 projects that use this
BlockSkillplan
Draft a TDD, PRD, or lightweight plan in the conversation without committing it.
Also in 3 projects that use this
MicrosoftSkillcaveman
Ultra-compressed response style that reduces output token count while preserving technical accuracy, with intensity levels and auto-clarity safety rules
Also in 3 projects that use this
GoogleSkillgrilling
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
Also in 3 projects that use this
- +2 more from google
Other versions53 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 53
- me2resh/apexyard★ 542same name
- hmislk/hmis★ 244same name
- chenklein26-maker/Harness-Starter★ 119same name
- k1ein-chen/Harness-Starter★ 119same name
- eai-org/agent-toolkit★ 85same name
- manusco/resonance★ 38same name
- chacosoldier/compabob★ 34same name
- randommonicle/claude-skills★ 27same name
- yagizdo/quiver★ 16same name
- L-X-T/ng-agentic-skills★ 13same name
43 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 repository9 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- end-sessionSkill
- etc-driftSkill
- host-checkSkill
- incidentSkill
- reset-triageSkill
- security-privacy-checkSkill
- update-checkSkill
- vendor-updateSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 0 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 40 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 50
Start a new session — no -c.
- Very specific: line 52
Check whether .claude/handover.md exists.
- Very specific: line 60
Absent: no resume needed. Give a plain, short greeting — who you are and an invitation to start, no recap of prior work unless asked — and …
- Very specific: line 65
Check local/session-launch-failures.log (gitignored, may not exist).
- Very specific: line 66
If it has content, each line is a prior launch attempt that never reached a model turn — session-autostart.sh logs these itself (no …
“Common” is measured: kept by at least 6 in 10 of the 40 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
Normally reached via /end-session, which checks whether a reboot is
actually pending and invokes this skill's write mode only if so — don't
make the user track which mechanism applies. Invoke this skill directly
when you already know a reboot is imminent and want the snapshot written
without going through that check.
Formalizes the standing practice already recorded in this project's memory
(feedback-handover-over-dash-c): claude -c replays the entire prior
transcript as input tokens on every subsequent turn, including large
one-time outputs like full rpm-ostree install dumps — on a long
bootstrap-style session that cost compounds every turn for the rest of the
session. A bounded handover file plus memory gives the same continuity for a
fixed, small cost instead.
Write mode — before a session-ending action
Trigger proactively, without being asked, before systemctl reboot,
rpm-ostree rebase, or anything else that requires a restart.
- Snapshot: what's confirmed done, what's staged-but-unverified, known blockers, and the exact next step.
- Explicitly check and record uncommitted/pending git state —
git status/git diff --cachedacross any repo touched this session. This is a recurring near-miss; don't skip it. - Overwrite
.claude/handover.mdwholesale (gitignored, repo root) — never append. It's working state, not a log; once consumed and the phase it described has moved on, the next write replaces it rather than piling up. Durable narrative belongs inincidents/or the vault's_inbox/, not here. - Cross-reference what to read alongside it (this project's memory index,
incidents/index.md, the relevant host README) rather than duplicating that content into the handover file itself.
Read mode — "I'm back" / after a reboot
scripts/session-autostart.sh sends the literal trigger "I'm back" as
the CLI prompt argument on every launch — unconditionally, whether or
not a handover is actually pending. That's a deliberate simplification
(see "Why the trigger is unconditional" below): the branching happens here,
not in bash.
On receiving that trigger (or an equivalent manual "I'm back" from the user):
- Start a new session — no
-c. Don't assume the old transcript is available or needed. - Check whether
.claude/handover.mdexists.- Present: rename it to
.claude/handover.consumed.md(mv, so consumption is atomic — a hang mid-session can't reprocess the same file on the next launch), then read it plus this project's memory files. Surface the "Immediately next" step as the first thing said back to the user, not buried after a recap. Flag if the file looks stale — references a reboot that's now old, or contradicts currentgit log/rpm-ostree status— rather than trusting it blindly. - Absent: no resume needed. Give a plain, short greeting — who you
are and an invitation to start, no recap of prior work unless asked —
and close it with a quote picked via
shuf -n1 scripts/quotes.txt(zero-token random pick; don't generate or web-search a quote yourself). Don't recite "there's nothing pending" as a status report.
- Present: rename it to
- Check
local/session-launch-failures.log(gitignored, may not exist). If it has content, each line is a prior launch attempt that never reached a model turn —session-autostart.shlogs these itself (no network, orclaudeexited non-zero) since a script-level failure like that can't be caught by anything running inside a session. Surface each line's timestamp and reason as part of the "Immediately next" report, then truncate the file (: > local/session-launch-failures.log) so it isn't re-reported next time. This is a distinct signal fromreset-triagebelow: the machine didn't necessarily crash here, the agent just failed to launch — suggest filing it as an incident with tallyn/a — agent unavailableper CLAUDE.md, rather than treating it as resolved just by reporting it. - Either way — present or absent — invoke the
reset-triageskill next. It checks whether the previous boot ended cleanly, independent of whether a handover was staged: a crash can happen outside any planned reboot. It stays silent when the last boot was clean, so this doesn't add noise to the plain-greeting path.
Why the trigger is unconditional
An earlier design (see incidents/I009, incidents/I010) tried to do the
handover check and rename silently via a SessionStart hook's
additionalContext, specifically to avoid a visible synthetic first turn.
That doesn't work: additionalContext only feeds the next model call —
Claude Code never calls the model until the user submits a prompt, so
nothing appeared until the human typed something first, at which point any
resume context looked stale. There is no supported way to get an invisible
proactive first turn today (tracked upstream:
anthropics/claude-code#69750, proposing an autoPrompt hook field).
Given that, session-autostart.sh doesn't try to inspect the filesystem
at all — it just always sends the same visible trigger, and this skill
does the branching once the model is actually running. That keeps the
script trivial (no bash logic that can drift out of sync with what this
skill expects) and means both outcomes — resume, or plain greeting + quote
— go through the exact same code path.
Because the rename happens here, not in the script, a handover file
written before a plain /exit (no autostart launch expected right after)
just sits there until the next session-autostart.sh run actually
reaches this skill. Prefer only writing one when another autostarted or
scripted session is actually expected next; a manually-launched claude -c
won't trigger this skill at all.
When not to use this
A fresh bootstrap phase with no reboot pending doesn't need this — a plain
new session re-deriving from docs/bootstrap.md checkboxes, git log, and
incidents/ is already the cheaper default. This is specific to sessions
expecting a mid-task reboot.
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.

