Session Cleanup
Structured end-of-session housekeeping: doc review, branch audit, worktree removal, and remote sync.
Behavioral Classification
Type: Guided Decision
Directive: ASK, THEN EXECUTE
Audits each category and presents findings before taking any destructive action. Deletions always follow an explicit audit phase.
Execution Context Requirements
This skill spawns a general-purpose subagent that performs git operations and file edits.
Foreground execution required: Yes
Required tools: Read, Write, Edit, Bash, Grep, Glob
Fallback: If tools are denied, the subagent returns a checklist of recommended actions for the coordinator to apply manually.
Usage
Invoke at the end of a working session:
/session-cleanup
Or trigger via phrases: "end of session", "clean up branches", "clean up worktrees", "session cleanup"
Out of scope: PR creation/merge (/ship), production deploys, Linear issue updates (/linear), resolving merge conflicts.
Five Phases
- Doc Review — CLAUDE.md staleness, MEMORY.md updates, submodule dirty state
- Branch Audit — PR status check, unpushed commit detection, squash-merge artifact filtering
- Branch Cleanup — Push unreleased content, cherry-pick docs to main, delete merged branches
- Worktree Cleanup — Remove stale worktrees via project script or
git worktree remove - Final State — Sync main, confirm clean working tree, report summary
Pre-Dispatch Check (REQUIRED — run before spawning agent)
Before launching the cleanup agent, run these two commands via Bash:
git status --porcelain
git branch --list | grep -v "^\* main$"
If both return empty (working tree clean AND only main branch exists locally), cleanup has almost certainly already run this session. Do NOT spawn the agent. Instead, tell the user:
"The repo looks clean already — only
main, nothing uncommitted. Cleanup appears to have already run this session. Run it again anyway?"
Only proceed to Dispatch if the user confirms, or if either check returns output (there is real work to do).
Dispatch
Use the Task tool with subagent_type="general-purpose" and pass the full contents
of ~/.claude/skills/session-cleanup/agent-prompt.md as the prompt.
Changelog
v1.2.1 (2026-03-28)
- Fixed: Phase 3b remote branch deletion now batches all deletes into a single
git push origin --delete b1 b2 ... bNinvocation instead of a per-branch loop. Eliminates O(N) pre-push hook runs and avoids partial-deletion state from mid-loop hook failures. (SMI-3710)
v1.2.0
- Initial structured release with five-phase workflow and pre-dispatch idempotency check