End-of-session checklist: issue capture, session report, ship. Triggers on 'wrap up', 'close session', 'end session', 'wrap things up', or /wrap-up. Do NOT use mid-session or for task completion without ending the session.
Run three phases in order. All phases auto-apply without asking; present a consolidated report at the end.
Do a quick session health check (inline, no subagents):
If YES to any: Extract issues and save a structured issue file.
Scan the entire conversation for issues across these categories:
Save to Documents/Field-Notes/Logs/YYYY-MM-DD-Session-Issues.md (append if file exists from an earlier session):
# Session Issues — YYYY-MM-DD (Session N)
## Issues Found
### 1. [Category] Brief description
- **Severity:** high/medium/low
- **Occurrences:** N
- **Context:** What happened — include error messages, file paths, sequence of attempts. Rich enough for someone with no conversation context to understand the issue.
- **What was tried:** Solutions attempted, in order
- **What worked:** Final resolution (if any)
### 2. ...
## Determinism Candidates
- [description of mechanical instruction that should be a script]
Write rich context for each issue. Error messages, file paths, what was tried and in what order, why workarounds were needed. This is the only record available for later analysis.
If NO to all (clean session): Skip issue capture. Note "Clean session — no issues" in the session report.
Create the session report:
bash .claude/scripts/session-report-scaffold.sh
Fill in the sections based on the conversation:
# Session Report — [date]
**Session focus:** [1 sentence — what was the main goal?]
## What Got Done
- [Concrete outcomes — shipped code, created files, decisions made]
## Decisions Made
- [Brief — log significant decisions to Decision-Log.md if applicable]
## Open Items
- [Unfinished, blocked, or needs attention next session]
## Commitments Made
- [**What** — by when — to whom (if applicable)]
## Context for Next Session
- [WIP state, gotchas, things to watch for]
## Handoff
**Status: Complete** — No additional work needed.
OR if the session's stated focus has unfinished work:
## Handoff
**Status: Continues**
**Resume prompt:** `<exact prompt to paste into a fresh session>`
**What's left:** [brief list of remaining items]
**Blockers:** [anything that must happen before resumption, or "None"]
Handoff rules:
Skip empty sections (except Handoff — always include it).
bash .claude/scripts/wrap-up-ship.sh "Wrap-up: <brief description of session>"
After shipping, always end with the Handoff status stated directly in the conversation:
Handoff: Complete — No additional work needed.
or
Handoff: Continues — [what's left + resume prompt]
This is the last thing [Your Name] sees. Don't skip it.