From toby-session
Resumes a Claude Code session from the most recent handoff document, verifying its claims against the live codebase and git history before reporting findings.
How this skill is triggered — by the user, by Claude, or both
Slash command
/toby-session:catchupThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Resume a Claude Code session from the handoff document left by the previous session — but **verify before acting**. The core rule: a handoff document is a hypothesis. The previous session may have been under-caffeinated, confused, or wrong. This skill's job is to reconcile the handoff's claims with the current state of the code and git, report divergences, and then stop and wait for user instru...
Resume a Claude Code session from the handoff document left by the previous session — but verify before acting. The core rule: a handoff document is a hypothesis. The previous session may have been under-caffeinated, confused, or wrong. This skill's job is to reconcile the handoff's claims with the current state of the code and git, report divergences, and then stop and wait for user instruction.
Handoff is hypothesis, not fact.
If the handoff says "the retry path is scaffolded at TokenService.kt:L45-L72", do not trust that — Read the file and confirm. If the lines have shifted or the content disagrees with the claim, flag it in the report.
PROJECT_ROOT=$(git rev-parse --show-toplevel)
HANDOFF_DIR="${PROJECT_ROOT}/.claude/reports/handoff"
LATEST=$(ls -1t "${HANDOFF_DIR}"/handoff-*.md 2>/dev/null | head -1)
If no handoff exists (directory missing or empty): tell the user plainly:
"No handoff document found under
.claude/reports/handoff/. Either this is the first session, or the previous session didn't write one. Do you want to start fresh, or should I ignore catchup and wait for your instruction?"
Then stop. Do not invent context.
If multiple handoffs exist: the newest by mtime wins. Mention the age of the file in your report ("Handoff written 18 hours ago") — old handoffs are stale hypotheses, and the user should know.
Read all of these in parallel (independent lookups):
cat).git status to see uncommitted state.git log --oneline -15 to see what has moved since the handoff was written.git diff --stat if there are uncommitted edits.CLAUDE.md at the project root if it exists — but only to know what NOT to restate in your report.For each entry under "Relevant Files" in the handoff:
Do this in parallel when there are 2+ files to check.
Compare the handoff's claims against git:
Produce a verification report with this structure (use plain markdown, do NOT restate CLAUDE.md content):
## Catchup Report
**Handoff source:** `.claude/reports/handoff/handoff-<timestamp>.md` (written {N} hours ago)
**Previous session summary:** {1–2 lines quoted from the handoff's Summary section}
### Verification of referenced files
- ✅ `src/auth/TokenService.kt:L45-L72` — matches handoff description.
- ⚠️ `src/auth/OAuthClient.kt:L10-L30` — file exists but refresh method has moved to L44-L66 since the handoff was written.
- ❌ `src/auth/BackoffUtil.kt` — file not found; handoff may be stale or this was an unfulfilled plan.
### Git movement since handoff
- {N} new commits since handoff timestamp: {list `--oneline`}
- Uncommitted changes: {file list from `git diff --stat`, or "none"}
### Open Work reconciled against current state
- {Item from handoff} — still matches / now done / divergent (explain).
- ...
### Traps to Avoid (carried forward from handoff)
- {List verbatim — these failed-approach warnings are the handoff's highest-value content.}
### What I am NOT doing
I'm treating this handoff as a hypothesis, not a work order. I've verified the above and I am now waiting for your instructions before touching anything. Tell me what you want to work on.
Then stop. Do not start implementing. Do not propose a next action unless the user asks. The whole point of the skill is to restore situational awareness, not to auto-resume work from stale notes.
/clear followed by catchup is the canonical resume pattern. The previous session runs handoff just before exiting; the new session starts, the user runs /catchup (or this skill auto-triggers), and the fresh context gets a compact hypothesis-style brief from the handoff plus a verification pass. Total token cost: a few thousand, vs. rebuilding the whole context from scratch.handoff. The two skills are paired: handoff writes the artifact catchup consumes. If you find yourself wanting to write something in handoff that catchup couldn't meaningfully verify, that's a smell — lean on concrete file:line references instead of abstract descriptions.This skill operationalizes the verification side of the "Document & Clear" pattern (Tier 2 of the handoff strategy in claude-session-context-handoff-4-layer-strategy.md). The reference article's core insight — that handoffs must be treated as hypothesis, not fact — is enforced structurally here: the skill physically cannot skip the verification step, because reporting requires the verification output.
npx claudepluginhub tobyilee/toby-plugins --plugin toby-sessionGenerates a structured handoff document capturing progress, open tasks, key decisions, and resume context when ending a session or planning to continue later.
Generates a forward-looking handoff document (~2K tokens) under .claude/reports/handoff/ so the next Claude Code session can resume work without re-explaining context. Includes Summary, Key Decisions, Traps to Avoid, line-numbered file references, and Open Work as status.
Resumes parked coding sessions from handoff documents: locates in CLAUDE.md or .parkinglot/, summarizes next steps, validates git branches/files, offers update or fresh start options.