Capture the orchestrator's mental model for a structured session transition. Use at end of long sessions, when /session-health recommends a fresh session, or before switching workstreams.
!bd list --status=in_progress 2>/dev/null
!git log --oneline -10
You are running a session handoff -- capturing the orchestrator's mental model so a future session can pick up where this one left off. Focus area (optional): $ARGUMENTS
Handoff works in 4 phases:
Gather state (backlog + git + context)
-> Document decisions and discoveries
-> Identify loose ends and risks
-> Write handoff note
bd stats
bd list --status=in_progress
bd ready
bd blocked
Note which tasks are in-progress, what is blocked, and what is ready to pick up.
git status
git log --oneline -10
git stash list
Note any uncommitted changes, recent commits made this session, and stashed work.
Review what you set out to do this session and what actually happened:
List every significant decision made during this session:
These are the decisions most likely to be re-litigated in a fresh session without context.
Note any patterns, conventions, or codebase behaviors discovered during exploration:
Capture the high-level understanding built up during this session:
For each in-progress task:
Flag anything that could cause problems:
List unresolved questions that came up during the session:
Sharpening gate: Transform vague questions into decision frameworks. For each question:
Example transformation:
src/cache/provider.ts: Redis (latency <10ms, requires infra) vs in-memory (no infra, scale limit at ~1M records). Decision criteria: expected data volume and ops budget. Ask: product team for volume projections"Produce a structured handoff document:
## Session Handoff: [date or topic]
### What Got Done
- [completed task/outcome 1]
- [completed task/outcome 2]
### Key Decisions
- **[Decision]**: [reasoning] (rejected: [alternatives])
### Patterns & Discoveries
- [pattern/discovery with evidence]
### In-Progress Work
- **[task/bead ID]**: [status, where to pick up, what remains]
### Uncommitted Changes
- [file or area]: [what changed and why it is not yet committed]
### Blocked Work
- **[task/bead ID]**: blocked on [reason]
### Open Questions
- **[Component/file]**: [decision needed] — Options: [A (pros/cons), B (pros/cons)]. Criteria: [what determines choice]. Ask: [who or what investigation resolves this]
### Recommended Next Steps
1. [Highest priority action with specific file/function/command to run]
2. [Second priority with pickup point]
3. [Third priority with context]
### Risks & Warnings
- [anything the next session should watch out for]
If $ARGUMENTS specifies a focus area, use it as the filename context. Write the handoff note to the project's memory:
bd create --title="HANDOFF: [summary of session]" --type=task --priority=1 \
--description="[full handoff note content]"
If the project has a memory/ directory, optionally write the handoff note there as memory/handoff-[date].md for persistent reference.