A human-invoked utility that writes a grounded session-handoff document (plus a continuation pointer memory) so a fresh agent can resume in-progress work. Not auto-invoked; a human runs it deliberately.
Installs into .claude/skills of the current project.
Are you the author of Session Handoff?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/dollardill-session-handoff)
---
name: session-handoff
description: A human-invoked utility that writes a grounded session-handoff document (plus a continuation pointer memory) so a fresh agent can resume in-progress work. Not auto-invoked; a human runs it deliberately.
disable-model-invocation: true
---
# Session Handoff
Write a grounded handoff document — and a one-line continuation memory — so a fresh
session can resume exactly where this one left off.
**Announce at start:** "I'm using the session-handoff skill to write a session handoff."
> **Human-invoked only.** A human fires this skill directly (slash command or explicit
> ask) — before `/clear`, `/compact`, a context limit, or a teammate handoff. It stays
> off every agent-trigger surface by design.
## When a human uses this
- Before `/clear` or `/compact`, mid-task, when context is about to be lost.
- End of a working session, to seed the next one.
- Handing work to a teammate or another agent.
Optional argument: a short description of what the next session will focus on — used to
tailor Work In Progress / Loose Threads / Suggested Skills.
## Pipeline
1. **Gather (read-only, run the commands — do not recall):**
`git status -sb`, `git log --oneline -15`, `git diff --stat`, branch + ahead/behind;
`bd ready`, `bd blocked`, `bd count --by-status`, in-progress beads; list the
spec, plan, and architecture-decision-record files touched this session.
Done when: every listed command has run and its output is captured.
2. **Synthesize** into the bundled template (`handoff-template.md`). **Reference
artifacts by path — never paste their bodies** (commits, ADRs, specs, plans, diffs).
Duplicating bloats the doc and goes stale.
Done when: every section maps to a captured fact, referenced by path.
3. **Write the doc** — Default: `.internal/handoff/YYYY-MM-DD[-HHMMSS]-<topic>-handoff.md`
(`-HHMMSS` only if a same-day handoff exists).
(The same-day check globs the inbox `.internal/handoff/*.md` only; archived docs under `archive/` are out of scope and do not affect same-day naming.)
If the human names another location,
write there. `mkdir -p` the target first.
Done when: the doc exists at the target path.
4. **Write the continuation memory** —
`bd remember "continuation-<date>-<topic>: <one-line pointer to doc path + headline state>"`
(episodic continuation record; one-line pointer only).
Done when: `bd remember` has run for the continuation key.
5. **Verification (externally anchored — output the result block):**
- Cross-check each state line against the **captured Phase-1 command output**.
- **Gitignore safety:** `git check-ignore <output-path>`; if NOT ignored, warn the
human ("⚠️ <dir> is not gitignored; a handoff can contain sensitive session
state") and offer to add it to `.gitignore` **before** writing.
- `ls <path>` confirms the doc exists; `bd memories <key>` confirms the memory.
- **Secret-scan grep** over the doc (`sk-`, `ghp_`, `AKIA`, `-----BEGIN`,
`password=`) — a backstop, not a guarantee.
- The narrative synthesis is the author's recollection — not externally verified;
that is why it references artifacts by path.
Done when: the confirmation block is output — doc path · memory key ·
gitignore-safety result · secret-scan result.
## Doctrine
- **Redact secrets** (keys, tokens, passwords, PII) — the doc lands on disk and may be
shared. This is a hard rule; never weaken it.
- **Reference, don't duplicate** — point at commits/ADRs/specs by path.
- **Ground every fact** — run the gather commands; never invent state. If a command
fails (not a git repo, `bd` absent), degrade gracefully and note the gap.
## Red Flags (low-independence backstop — not the primary guard)
| Rationalization | Reality |
|---|---|
| "I'll write it from memory" | Run the gather commands — recollection drifts. |
| "I'll add it to the skill index so the agent finds it" | Forbidden — human-invoked only. |
| "The output dir is probably gitignored" | Run `git check-ignore` — secrets to a tracked path is a leak. |
## Integration
**Standalone.** Human-invoked only, with no skill, hook, or agent-routing surface
pointing to it. Read-side counterpart: `getting-up-to-speed` reads the latest
`.internal/handoff/` doc (no skill-to-skill call) and archives it to
`.internal/handoff/archive/` on close — `.internal/handoff/` is an unread inbox, so a
stale doc is never re-read as the last session.