Continuous-Claude-v3 continuity-ledger
Create or update continuity ledger for state preservation across clears
git clone https://github.com/parcadei/Continuous-Claude-v3
T=$(mktemp -d) && git clone --depth=1 https://github.com/parcadei/Continuous-Claude-v3 "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/continuity_ledger" ~/.claude/skills/parcadei-continuous-claude-v3-continuity-ledger && rm -rf "$T"
.claude/skills/continuity_ledger/SKILL.mdContinuity Ledger
Note: This skill is now an alias for
. Both output the same YAML format./create_handoff
Create a YAML handoff document for state preservation across
/clear. This is the same as /create_handoff.
Process
1. Filepath & Metadata
First, determine the session name from existing handoffs:
ls -td thoughts/shared/handoffs/*/ 2>/dev/null | head -1 | xargs basename
This returns the most recently modified handoff folder name (e.g.,
open-source-release). Use this as the handoff folder name.
If no handoffs exist, use
general as the folder name.
Create your file under:
thoughts/shared/handoffs/{session-name}/YYYY-MM-DD_HH-MM_description.yaml, where:
is from existing handoffs (e.g.,{session-name}
) oropen-source-release
if none existgeneral
is today's dateYYYY-MM-DD
is the current time in 24-hour format (no seconds needed)HH-MM
is a brief kebab-case descriptiondescription
Examples:
thoughts/shared/handoffs/open-source-release/2026-01-08_16-30_memory-system-fix.yamlthoughts/shared/handoffs/general/2026-01-08_16-30_bug-investigation.yaml
2. Write YAML handoff (~400 tokens)
CRITICAL: Use EXACTLY this YAML format. Do NOT deviate or use alternative field names.
The
goal: and now: fields are shown in the statusline - they MUST be named exactly this.
--- session: {session-name from ledger} date: YYYY-MM-DD status: complete|partial|blocked outcome: SUCCEEDED|PARTIAL_PLUS|PARTIAL_MINUS|FAILED --- goal: {What this session accomplished - shown in statusline} now: {What next session should do first - shown in statusline} test: {Command to verify this work, e.g., pytest tests/test_foo.py} done_this_session: - task: {First completed task} files: [{file1.py}, {file2.py}] - task: {Second completed task} files: [{file3.py}] blockers: [{any blocking issues}] questions: [{unresolved questions for next session}] decisions: - {decision_name}: {rationale} findings: - {key_finding}: {details} worked: [{approaches that worked}] failed: [{approaches that failed and why}] next: - {First next step} - {Second next step} files: created: [{new files}] modified: [{changed files}]
Field guide:
+goal:
- REQUIRED, shown in statuslinenow:
- What was accomplished with file referencesdone_this_session:
- Important choices and rationaledecisions:
- Key learningsfindings:
/worked:
- What to repeat vs avoidfailed:
- Action items for next sessionnext:
DO NOT use alternative field names like
, session_goal
, objective
, focus
, etc.
The statusline parser looks for EXACTLY current
and goal:
- nothing else works.now:
3. Mark Session Outcome (REQUIRED)
IMPORTANT: Before responding to the user, you MUST ask about the session outcome.
Use the AskUserQuestion tool with these exact options:
Question: "How did this session go?" Options: - SUCCEEDED: Task completed successfully - PARTIAL_PLUS: Mostly done, minor issues remain - PARTIAL_MINUS: Some progress, major issues remain - FAILED: Task abandoned or blocked
After the user responds, mark the outcome:
# Mark the most recent handoff (works with PostgreSQL or SQLite) PROJECT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null || echo "${CLAUDE_PROJECT_DIR:-.}") cd "$PROJECT_ROOT/opc" && uv run python scripts/core/artifact_mark.py --latest --outcome <USER_CHOICE>
4. Confirm completion
After marking the outcome, respond to the user:
Handoff created! Outcome marked as [OUTCOME]. Resume in a new session with: /resume_handoff path/to/handoff.yaml
When to Use
- Before running
/clear - Context usage approaching 70%+
- Multi-day implementations
- Complex refactors you pick up/put down
- Any session expected to hit 85%+ context
When NOT to Use
- Quick tasks (< 30 min)
- Simple bug fixes
- Single-file changes
Why Clear Instead of Compact?
Each compaction is lossy compression—after several compactions, you're working with degraded context. Clearing + loading the handoff gives you fresh context with full signal.