handofflisted
Install: claude install-skill Ansarac/cairn
# Close out a session
Invoked manually, at the end of a session. **Never wire this to a Stop hook** — the
user knows when a session ends and Claude does not, and a Stop hook fires every turn.
(cairn's own bell already uses that hook; a second thing there would fight it.)
The job is **triage and promotion**, not filling in a template. A template has fixed
sections, fixed sections get filled with something, and that is how a handoff grows
without bound. Each run is a chance to delete what has since found a home
elsewhere.
**One file: `handoffs/HANDOFF.md`.** Overwritten every time, never appended,
**gitignored**. That last part is load-bearing rather than incidental: anything left
only in the handoff does not survive a fresh clone and reaches nobody. A durable item
still sitting there at the end of a run is a defect, not a filing choice.
## 1. Get the facts from the repo, never from memory
**This is the step that earns the skill its keep.** The failure mode is not a
forgotten handoff, it is a confidently wrong one. A missing handoff is obvious. A
wrong one is trusted.
```bash
git status --short --branch
git rev-list --count @{u}..HEAD # unpushed, the actual number
just check # ruff + vendor guard + pytest
git log --oneline -15 # find the commit this session started from
git diff --stat <base>..HEAD -- src/cairn/wire.py
```
`<base>` is the commit the session started from. The previous handoff usually names
it, and