Write a session handover document in .context/handovers/ so another agent or session can resume the work without re-deriving context. Use when a session is ending (or pausing) with work still in progress, when the user asks to 'write a handover', 'document what's outstanding for the next session', 'hand this off', or 'summarise where we got to', or when a long-running task is about to be interrupted (context limit, user stepping away, switching worktrees). Covers the frontmatter contract, required sections (Session Summary, Completed, Outstanding, Current State, Next Steps, References), the JSON Schema and shell validator that check a handover's shape, and how a follow-up session should pick one up and close it out.
76
96%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Write (or pick up) a session handover: a point-in-time snapshot of what happened and what remains outstanding, filed under .context/handovers/ so a different agent or a future session of the same
agent can resume the work cold, without needing this conversation's context.
/clear about to happen) and meaningful work is still in progress.context/follow-ups/ entries already filed are sufficient.context/follow-ups/ entry via the create-context-file skill instead (see Relationship to other typologies
below) rather than writing a whole handover for one item.context/handovers/
YYYY-MM-DD-<slug>.mdOne dated file per handover, following the same YYYY-MM-DD-<slug>.md convention as .context/follow-ups/ and .context/plans/. A handover is a snapshot, not a living document: a second handover on
the same topic is a new dated file with supersedes set, never an in-place edit of the first. Why, and how this differs from tool-review-assessment's in-place convention:
references/typology-and-lifecycle.md.
---
title: "TICKET-123 example-service dev rollout - mid-migration"
type: handover
date: 2026-09-08 # ISO date (YYYY-MM-DD), must match the filename's date segment
branch: feat/ticket-123-example-service-dev
status: active # active | done | superseded
---Required fields: title, type (fixed to handover), date, branch, status. Optional fields
(session_id, author, tags, related, supersedes) and a full worked example are in
references/document-structure.md.
A handover has nine sections in a fixed order: frontmatter, an # Handover: title, ## Session Summary,
## Completed, ## Outstanding, ## Current State, ## Next Steps, an optional ## Gotchas / Context,
and ## References. The two sections most often written wrong:
## Completed needs evidence per item (commit SHA, file path, test count, PR/MR link), not a narration
of what was attempted. "Ran the tests" is not evidence; "bun test: 42 pass, 0 fail" is.## Outstanding links to an existing .context/follow-ups/ entry instead of re-describing it, and
flags plainly when an item probably needs a follow-up that doesn't exist yet.Full section-by-section detail (what each one must contain, and why): references/document-structure.md.
git status, git log -1, git stash list (never bare git stash/git stash pop when several worktrees share one stash stack), and
list any .context/follow-ups/ entries filed this session..context/handovers/YYYY-MM-DD-<slug>.md following the structure above. Prefer a short, specific slug over a generic one (ticket-123-example-service-dev-migration, not handover or
session-end)..context/follow-ups/ entry or a .context/plans/ document, link to it from ## Outstanding / ## References rather than
re-describing it in full.bash <skill-dir>/scripts/validate-handover.sh .context/handovers/YYYY-MM-DD-<slug>.md. Fix anything it flags.docs(handover): <short description>.## Next Steps; ## Gotchas / Context and ## Current State often carry the details that prevent repeating a dead end.## Current State still matches reality (git status, git log -1) before acting on it - time may have passed since it was written, or someone else may already have progressed the branch.status to done in the same change that resolves the outstanding work - never delete the file, matching the create-context-file follow-up lifecycle (status: active until actioned,
then done). If only some outstanding items were resolved, leave status: active and update ## Outstanding to reflect what remains, rather than marking the whole handover done prematurely..context/handovers/ is a distinct, standalone typology from .context/follow-ups/, .context/plans/,
and .context/findings/, and is not tracked in the auto-generated .context/index.yaml. A handover is
broader than a single follow-up item: it is the whole session's end state. Full explanation of the
boundary, and why a handover is a snapshot rather than an in-place-edited document (unlike
tool-review-assessment): references/typology-and-lifecycle.md.
assets/templates/handover.yaml - the required section list and frontmatter fields, in the same YAML-template style the journal-entry-creator skill uses for its own templates.assets/schemas/handover-frontmatter.schema.json - the JSON Schema every handover's frontmatter must satisfy.scripts/validate-handover.sh - run against a single handover file or the whole .context/handovers/ directory:
bash <skill-dir>/scripts/validate-handover.sh .context/handovers/. Checks filename shape, that the frontmatter date matches the filename's date segment, required
frontmatter fields (title, type: handover, date, branch, status), and that all required sections are present..context/follow-ups/ entry or flagged as needing one - never left to exist only inside prose that will be someone's second read, not their firstNEVER write a handover that only lists what was attempted, with no evidence of what actually landed. WHY: a reader picking this up needs to know what is safe to build on, not just what was
tried. BAD: "Worked on the migration, made some progress." GOOD: "Migrated 3 of 5 tables (commit a1b2c3d); bun test db/: 12 pass, 0 fail; remaining 2 tables blocked on schema decision, see
Outstanding."
NEVER edit an existing handover in place to reflect a second session's progress. WHY: unlike a tool assessment, a handover is a snapshot of one session's end state; silently rewriting it loses
the audit trail of what the first session actually left behind. BAD: editing 2026-09-01-ticket-123-handover.md directly when a second session continues the work. GOOD: writing
2026-09-03-ticket-123-handover.md with supersedes: .context/handovers/2026-09-01-ticket-123-handover.md.
NEVER duplicate a full .context/follow-ups/ entry's description inside ## Outstanding instead of linking it. WHY: two descriptions of the same open item drift apart over time and nobody
knows which is current. BAD: re-explaining a follow-up's whole context inline. GOOD: "See .context/follow-ups/2026-09-08-x.md - status unchanged since filing."
NEVER use a bare git stash or git stash pop while gathering Current State facts. WHY: the stash stack is shared by every worktree of a repository; a bare pop can steal another session's
in-progress work. BAD: git stash / git stash pop. GOOD: git stash list, and if something must be set aside, git stash push -u -m "<unique-tag>" with the SHA captured immediately.
| Topic | Reference | When to Use |
|---|---|---|
| Section-by-section detail | references/document-structure.md | Full required-section list and frontmatter fields, with a worked example |
| Typology boundary and lifecycle | references/typology-and-lifecycle.md | Why handovers are separate from follow-ups/plans, and the status lifecycle |
| Frontmatter contract | assets/schemas/handover-frontmatter.schema.json | The JSON Schema every handover's frontmatter must satisfy |
| Structure template | assets/templates/handover.yaml | Required sections and frontmatter, in order |
| Mechanical validator | scripts/validate-handover.sh | Run before considering a handover done or a pickup closed out |
| Adjacent typology, different job | create-context-file skill | Single-item follow-ups/plans/findings, tracked in .context/index.yaml |
0e0b9df
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.