From toby-session
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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/toby-session:handoffThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Write a compact, forward-looking document that lets the **next** Claude Code session resume this work without re-explaining everything. The document is a *hypothesis for the next session to verify*, not a fact sheet — it names files and line numbers so the next session can confirm claims against live code.
Write a compact, forward-looking document that lets the next Claude Code session resume this work without re-explaining everything. The document is a hypothesis for the next session to verify, not a fact sheet — it names files and line numbers so the next session can confirm claims against live code.
src/auth/TokenService.kt:L45-L72 — refresh logic, race condition suspected beats "look at TokenService"..claude/reports/ and link to them; keep the handoff itself short enough to read in one pass.PROJECT_ROOT=$(git rev-parse --show-toplevel)
HANDOFF_DIR="${PROJECT_ROOT}/.claude/reports/handoff"
mkdir -p "${HANDOFF_DIR}"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
FILENAME="${HANDOFF_DIR}/handoff-${TIMESTAMP}.md"
Use the git root, not pwd — matches the rest of this plugin's skills and works from subdirectories.
In parallel, gather:
git status — uncommitted work in progress.git log --oneline -20 — commits created this session.git diff --stat — scope of uncommitted edits.Use the Write tool to create ${FILENAME} with this structure:
# Handoff — {YYYY-MM-DD HH:MM}
Session: {branch name, commit range if any}
Model: {e.g. Opus 4.7 (1M context)}
Handoff target: next Claude Code session on the same task
## Summary
{1–3 sentences. What was this session about? What shifted?}
## Key Decisions
- {Decision} — because {rationale}. Alternatives considered: {X (rejected: reason), Y (rejected: reason)}.
- ...
## Traps to Avoid
- {Approach that looked good but failed} — {why it broke, or which assumption was wrong}.
- {Subtle constraint easy to miss} — {where it lives in code or docs}.
- ...
## Working Agreements
- {User preference that emerged this session, e.g. "review diffs before committing", "한국어로 답변"}.
- ...
## Relevant Files
- `path/to/file.ext:Lstart-Lend` — {why this matters to the next session}.
- `path/to/other.ext:L123` — {specific line of interest}.
- ...
## Open Work
{Write as STATUS, not COMMANDS. Examples:}
- The retry path is scaffolded in `TokenService.kt:L45-L72` but the backoff utility it depends on is not finalized — blocker pending.
- Integration test `AuthFlowSpec` currently skips the refresh case (see `@Disabled` marker) because the mock HTTP fixture is stale.
- {NOT: "Implement retry logic" — that's imperative and skips verification.}
## Pointers to deeper reports (optional)
- `.claude/reports/impl/FEAT-123-impl.md` — full implementation notes
- `.claude/reports/arch/FEAT-123-decisions.md` — ADR-level decisions
- (Omit this section if there are none.)
## Prompt for New Chat
Copy-paste this into the next session:
> I'm resuming work from a handoff document at `.claude/reports/handoff/handoff-{TIMESTAMP}.md`.
>
> Please:
> 1. Read CLAUDE.md first. Do NOT restate anything already covered there.
> 2. Read the handoff file listed above.
> 3. For every file referenced under "Relevant Files", use the Read tool to verify the file exists and that the cited lines still match what the handoff claims. Treat the handoff as a HYPOTHESIS, not fact — the previous session may have been confused when writing it.
> 4. Run `git status` and `git log --oneline -10` so you see what has actually moved since the handoff was written.
> 5. Report your verification results: which claims confirmed, which diverged, what moved. Then WAIT for my instructions — do not start implementing anything on your own.
Before returning to the user, re-read the draft and check:
.claude/reports/{impl,arch,analysis}/ and reference it from the Pointers section.Fix any violations before saving.
Tell the user:
"Handoff 문서를 작성했습니다:
.claude/reports/handoff/handoff-{TIMESTAMP}.md"
Then show the first 20–30 lines so they can spot-check the Summary / Key Decisions / Traps sections before ending the session.
.claude/reports/ is gitignored or not is the user's call; some users commit handoffs to share across machines, others don't. The skill just writes the file.catchup picks the newest by mtime.save-conversation. save-conversation is a retrospective transcript log of what was discussed. handoff is forward-looking: it's what the next session needs to know to continue. Both can coexist in the same session.This skill operationalizes the "Document & Clear" pattern (Tier 2 of the handoff strategy in claude-session-context-handoff-4-layer-strategy.md): before ending a session, dump the session's evolved understanding to a markdown file so a fresh session can pick up from a clean context without re-doing the exploration. Paired skill: catchup (reads this document at the start of the next session and verifies its claims).
npx claudepluginhub tobyilee/toby-plugins --plugin toby-sessionGenerates HANDOFF.md file summarizing completed tasks, in-progress work, next steps, notes, related files, and git state before Claude Code session end. Useful for context reset and work resumption.
Produces a handoff document so a fresh agent can continue work from the current session. Handles both mid-arc continuation and backlog handoffs.
Produces a compact handoff document that transfers context, state, and next objective without copying source material. Use when ending a session or passing work to another agent.