Help us improve
Share bugs, ideas, or general feedback.
From darkroom
Saves session state at end of session and resumes it at start of next session. Useful when context is running out, wrapping up, or continuing previous work.
npx claudepluginhub darkroomengineering/cc-settingsHow this skill is triggered — by the user, by Claude, or both
Slash command
/darkroom:handoffThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Two-mode skill: **Save** state at end of session, **Resume** state at start of next session.
Manages context handoffs between AI coding sessions. Detects HANDOFF.md files on startup, trigger words like 'handoff' or 'resume', and suggests transfers at milestones or session ends.
Wraps up a work session by recording changed files, caveats, decisions, and next steps so a fresh session can resume without re-deriving context.
Saves session state and writes a handoff note so the next Claude Code session can continue cleanly. Read/writes a remember.md file at the project root.
Share bugs, ideas, or general feedback.
Two-mode skill: Save state at end of session, Resume state at start of next session.
Save current session state for later resumption. This is the end-of-session boundary skill — for mid-task rollback points before risky operations, use /checkpoint.
bun ~/.claude/src/scripts/handoff.ts create
Or use the native command:
/handoff
The handoff file includes:
If the current branch is linked to a GitHub Issue (e.g., feat/123-description):
Post a progress comment on the issue:
gh issue comment 123 --body "## Session Update
- Completed: [summary of work done]
- Files modified: [list]
- Next steps: [what remains]"
Check off completed tasks in the issue body if any task checkboxes were resolved during this session.
This ensures project progress is visible to the whole team, not just in local handoff files.
~/.claude/handoffs/
├── project-name-2024-01-15-1430.md
├── project-name-2024-01-14-0900.md
└── ...
The setup automatically creates handoffs:
Confirms:
/context skill)The statusline shows live context usage:
Opus 4.8 | my-project | main*↑ | ▊░░░░░░░░░ 8% (84k/1.0M)
| Usage | Action |
|---|---|
| 70–79% | Consider wrapping up or handing off |
| 80–89% | Start wrapping up — run /handoff |
| 90%+ | Run /handoff now |
Degradation is not gradual — it follows a step function. Place critical information at the beginning and end of context (attention-favored positions). Avoid burying key facts in the middle.
| Model | Noticeable degradation | Severe degradation |
|---|---|---|
| Claude Opus 4.8 | ~100K tokens | ~180K tokens |
| Claude Sonnet 4.6 | ~80K tokens | ~150K tokens |
| Claude Haiku 4.5 | ~50K tokens | ~90K tokens |
Key patterns:
When compaction is unavoidable, populate this template — each section forces preservation of the dimensions most often lost:
## Session Intent
[What the user is trying to accomplish — the "why"]
## Files Modified
- path/to/file.ts: What changed and why
## Files Read (Not Modified)
- path/to/reference.ts: Why it was consulted
## Decisions Made
- Decision 1: Rationale
## Errors Encountered
- Error message → Resolution applied (or "still unresolved")
## Current State
- Build status / test status / what works / what doesn't
## Next Steps
1. Immediate next action
2. Following action
The artifact trail (which files were touched, what changed) is universally the weakest dimension after compression. Dedicated sections force preservation of file paths, error messages, and decisions that would otherwise silently drift away.
After compaction, probe 3–5 critical facts before continuing work:
If any probe returns vague or incorrect answers, re-read the handoff file (/handoff resume mode) to restore critical context.
context: fork — skills that fork don't bloat main contextLoad state from a previous session and continue work.
bun ~/.claude/src/scripts/handoff.ts resume
Or use:
/handoff resume
Before loading the local handoff, check for a linked GitHub Issue:
BRANCH=$(git branch --show-current)
ISSUE_NUM=$(echo "$BRANCH" | grep -oE '[0-9]+' | head -1)
if [[ -n "$ISSUE_NUM" ]]; then
gh issue view "$ISSUE_NUM" --comments
fi
If an issue is found, present it as the primary context — it's the shared source of truth. The local handoff supplements it with session-specific details.
Present a combined summary:
List handoffs for current project:
ls ~/.claude/handoffs/ | grep "$(basename $(pwd))"
/handoff
Loads the most recent handoff for current project.
/handoff project-name-2024-01-15-1430
Loads a specific handoff file.
/handoff list
Shows available handoffs.
When starting a new session, the setup automatically: