skills/session-handoff/SKILL.md
Synthesizes the current session into a structured HANDOFF block for context transfer between sessions. Captures what was built, decisions made, and unresolved items.
npx skillsauth add SethGammon/Citadel session-handoffInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use when ending a session and wanting to preserve context for the next one. Also used automatically by orchestrators (Archon, Fleet) at session boundaries.
Don't use when: You want to extract reusable patterns from a completed campaign (use /learn), write a structured postmortem for a failed campaign (use /postmortem), or produce documentation rather than a context transfer.
Collect session data (run in parallel):
git log --oneline -20 and git diff HEAD --stat.planning/campaigns/ for files with status: active.planning/fleet/ for files with status: active or needs-continueIdentify the primary thread: If an active campaign exists, use its current phase as the anchor. If multiple campaigns are active, list each. If no campaign, use the most recent git commits as the frame.
Map data to HANDOFF fields:
blocked or parked; TODOs added this session; anything explicitly deferredOutput the HANDOFF block.
---HANDOFF---
- {what was built or changed — be specific}
- {key decisions and tradeoffs — include reasoning}
- {unresolved items — what's blocking}
- {next steps — what the next session should do first}
---
Keep it to 3-5 bullets, under 150 words. This is a context transfer, not a report.
.planning/ does not exist: Skip campaign and fleet checks. Treat as "no active campaigns" and proceed with git-only context.
Corrupted or unparseable campaign file (malformed frontmatter, invalid status, or truncated content in .planning/campaigns/): Skip that file and treat it as inactive. Output: "Campaign file at {path} could not be parsed — treating as inactive. Check the file manually if this is unexpected."
No active campaign and no git changes: If there is nothing to summarize, say so explicitly: "No active campaign or session changes found. Nothing to hand off." Do not fabricate a handoff.
No context to summarize (fresh session with no edits): Output a minimal handoff noting the session start state. At minimum, include what the user asked about and what was found.
Campaign is in a blocked/parked state: Include the block reason and the recommended next action in the handoff so the next session can resume immediately.
Reversibility: Green — this skill writes nothing to disk; the HANDOFF block is display-only. Cost: No cost actions — synthesis only; no agents spawned, no confirmation needed. Trust: No gates — safe at all trust levels.
Output the HANDOFF block and then wait for the next command. This skill does not write to disk — the HANDOFF block is the deliverable, for the user to copy into the next session or save manually.
tools
Bounded foreground repetition for the current session. Creates a loop contract, runs or coordinates an action plus verifier up to a declared attempt limit, and records evidence under .planning/loops/. Use for repeat-until-pass work that is too small for daemon and not time-based scheduling.
testing
Remove Citadel from a project. Exports valuable state (campaigns, postmortems, research, backlog, discoveries) to docs/citadel/ as human-readable markdown, then removes all harness files and hooks. The archive is detected by /do setup on re-install and offered for restore.
development
Research-driven multi-cycle improvement director. Forms causal hypotheses about why scores are low, validates them with scout agents before attacking, dispatches axis-parallel fleet attacks, extracts transferable patterns, and runs indefinitely within a budget envelope. Accumulates a persistent belief model and pattern library across sessions.
data-ai
Multi-repo campaign coordinator. Same lifecycle as fleet -- scope claims, discovery relay, wave-based execution -- but the unit of work is a repo, not a file. Coordinates campaigns across repositories with shared context.