baton

mgerasolo's avatarfrom mgerasolo

Context management system for solving compaction problems. Provides TLDR summaries, conversation tracking, and efficient post-compaction recovery. Triggers on "/baton".

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 3, 2026

When & Why to Use This Skill

Baton is a sophisticated context management system designed to solve the 'compaction' problem in long-running AI agent sessions. It maintains a structured memory of tasks, decisions, and bugs within a local `.claude/` directory, allowing Claude to restore full project context instantly with minimal token overhead. By providing automated TLDR summaries and state snapshots, it ensures continuity and prevents the loss of critical technical details during autonomous workflows, achieving up to a 100x reduction in token usage for context restoration.

Use Cases

  • Maintaining continuity in long-running autonomous coding sessions where context window resets (compactions) occur frequently, preventing the loss of technical rationale.
  • Managing multiple concurrent workstreams by using the switch command to jump between different feature branches or conversation contexts without losing state.
  • Tracking architectural decisions and failed implementation attempts in dedicated logs to prevent the AI from entering repetitive 'retry loops'.
  • Generating automated progress reports for team standups and detailed git commit messages based on tracked task completion and file modifications.
  • Ensuring project health and data integrity through automated validation checks and archival of completed tasks to prevent file bloat.
namebaton
descriptionContext management system for solving compaction problems. Provides TLDR summaries, conversation tracking, and efficient post-compaction recovery. Triggers on "/baton".

Baton - Context Management Skill

Manages context across sessions and compactions using TLDR summaries and structured documentation.

Implementation

When /baton is invoked, parse the subcommand and execute the corresponding action:

Core Commands

  • No arguments or load: Display current TLDR summary
  • init: Initialize new conversation
  • rename <title>: Set conversation title (max 60 chars)
  • rename --suggest: Get AI-generated title suggestions
  • save [note]: Save current state with optional note
  • update [section]: Update SUMMARY.md sections automatically
  • update --auto: Auto-generate updates from recent activity
  • history: Show all conversations with titles
  • status: Show token usage and save recommendation
  • archive: Archive completed items to prevent file bloat
  • switch <conv-id-or-title>: Switch to different conversation
  • switch --recent: Show recent conversations to choose from

Search & Discovery

  • search <term>: Search across all conversations, bugs, decisions
  • search --bugs <term>: Search only bugs
  • search --decisions <term>: Search only decisions
  • search --conversations <term>: Search only conversations
  • context <topic>: Load relevant past context (smart search)

Reporting & Analytics

  • report [timeframe]: Generate work summary report
  • report --today: Today's work summary
  • report --week: Past week summary
  • report --conversation <id>: Specific conversation report
  • metrics: Show baton system effectiveness metrics
  • stats: Alias for metrics

Validation & Health

  • validate: Check file structure integrity
  • health: Alias for validate

Configuration

  • auto-save on|off|status: Configure auto-save triggers
  • template create <name>: Create custom SUMMARY.md template
  • template use <name>: Switch to custom template
  • template list: Show available templates

Git Integration

  • git-link: Associate conversation with current git branch
  • git-summary: Generate commit message from SUMMARY.md

Implementation Details

Each command should be implemented by reading/writing the appropriate files in .claude/:

For /baton init

CONV_ID="conv-$(date +%Y%m%d-%H%M%S)"
mkdir -p .claude/conversations/$CONV_ID
echo $CONV_ID > .claude/CURRENT_CONVERSATION_ID
# Create SUMMARY.md from template
# Initialize shared files if they don't exist
touch .claude/{BUGS.md,DECISIONS.md,CONVERSATION_HISTORY.md,ENHANCEMENTS.md,USER_FEEDBACK.md}
mkdir -p .claude/{archive,templates}
# Create default settings if missing
cat > .claude/settings.json <<EOF
{
  "autoSave": {
    "enabled": true,
    "thresholds": [70, 85, 95],
    "notifyOnSave": true
  },
  "archiveThresholds": {
    "conversations": 10,
    "bugs": 20,
    "decisions": 15
  },
  "defaultTemplate": "standard"
}
EOF

For /baton load

  • Read .claude/CURRENT_CONVERSATION_ID
  • Display .claude/conversations/{conv-id}/SUMMARY.md
  • Display filtered entries from .claude/BUGS.md (matching conversation ID)
  • Display filtered entries from .claude/DECISIONS.md (matching conversation ID)
  • Display current TODO list if available

For /baton rename <title>

  • Read .claude/CURRENT_CONVERSATION_ID
  • Update .claude/conversations/{conv-id}/SUMMARY.md Title field
  • Update .claude/CONVERSATION_HISTORY.md entry for this conversation
  • Validate title length (max 60 chars for clean display)
  • Used in standardized response format header
  • Example: /baton rename Self-Improving AI Chatbot

For /baton rename --suggest

  • Analyze recent work: TODO items, file changes, recent conversation
  • Generate 3-5 concise title suggestions (max 60 chars each)
  • Display suggestions with numbers for easy selection
  • Allow user to choose or provide custom title
  • Example output:
    Suggested titles based on recent work:
    1. API Authentication System
    2. User Login Bug Fixes
    3. Database Schema Migration
    4. Payment Integration Setup
    5. Custom: [Enter your own]
    
    Choose (1-5) or press Enter for custom:
    

For /baton save [note]

  • Read current state (TODO list, recent changes)
  • Update .claude/conversations/{conv-id}/SUMMARY.md
  • Add timestamp and optional note
  • Update Task Checklist, Key Files, State Snapshot sections
  • Show confirmation: "Saved at 45% token usage"

For /baton update [section]

Auto-update specific sections:

  • --auto: Analyze recent activity and update all sections
  • tasks: Update Task Checklist from TODO list
  • files: Update Key Files from recent git changes
  • state: Update State Snapshot from current file/line
  • context: Update Context in 3 Lines from recent work

Implementation:

  • Read recent TODO completions, file modifications
  • Analyze conversation for decisions, bugs discovered
  • Update relevant SUMMARY.md sections
  • Show what was updated: "Updated: Task Checklist (3 completed), Key Files (2 modified)"

For /baton history

  • Display .claude/CONVERSATION_HISTORY.md
  • Format with conversation IDs, titles, status, dates
  • Show active vs completed conversations

For /baton status

  • Check current token usage (estimate from conversation length)
  • Calculate percentage to 70% threshold
  • Show time since last SUMMARY.md update
  • Recommend save if > 70%
  • Check file sizes and recommend archival if thresholds exceeded:
    • CONVERSATION_HISTORY.md > 10 conversations
    • BUGS.md > 20 bugs
    • DECISIONS.md > 15 decisions
  • Display auto-save configuration status

For /baton archive

  • Count items in each file by status
  • Move completed/fixed/implemented items to .claude/archive/
  • Archive structure:
    • archive/conversations/YYYY-MM.md (completed conversations by month)
    • archive/bugs/fixed-YYYY-MM.md (fixed bugs by month)
    • archive/decisions/implemented-YYYY-MM.md (implemented decisions by month)
  • Update main files to remove archived items
  • Show summary: "Archived 5 conversations, 12 bugs, 8 decisions"
  • Keep last 10 active conversations, all active/in-progress bugs, all proposed/accepted decisions

For /baton switch <conv-id-or-title>

Switch between conversations:

  • Accept either conversation ID or title (fuzzy match)
  • Update .claude/CURRENT_CONVERSATION_ID
  • Load new conversation's SUMMARY.md
  • Show transition message: "Switched from 'API Redesign' → 'Bug Fixes'"
  • Display new conversation's current state

With --recent flag:

  • List 5-10 most recent conversations
  • Show: ID, Title, Last Modified, Status
  • Allow numbered selection
  • Example:
    Recent conversations:
    1. [Active] API Authentication System (modified 2h ago)
    2. [Active] Database Migration (modified 5h ago)
    3. [Paused] Payment Integration (modified 2d ago)
    
    Choose conversation (1-3):
    

For /baton search <term>

Search across all baton files:

  • Search SUMMARY.md files in all conversations
  • Search BUGS.md, DECISIONS.md, ENHANCEMENTS.md, USER_FEEDBACK.md
  • Return matches with context (file, conversation ID, line)
  • Highlight matching text
  • Sort by relevance (exact match > partial match)

Example output:

Found 'authentication' in 5 locations:

CONVERSATIONS:
  conv-20251224-015859: API Authentication System
    - Line 12: "Implementing OAuth2 authentication"

  conv-20251223-140521: User Login Refactor
    - Line 8: "Fixed authentication token expiry bug"

DECISIONS:
  Decision #3 (conv-20251224-015859)
    - "Chose OAuth2 over email/password authentication"

BUGS:
  Bug #7 (conv-20251223-140521)
    - "Authentication fails after 24 hours"

With specific filters:

  • --bugs: Search only BUGS.md
  • --decisions: Search only DECISIONS.md
  • --conversations: Search only SUMMARY.md files

For /baton context <topic>

Smart context loading:

  • Semantic search across past conversations for topic
  • Load relevant decisions, bugs, failed attempts
  • Show context from most relevant conversations
  • Example: /baton context authentication

Output:

Loading context for 'authentication'...

Found 3 relevant conversations:

1. conv-20251224-015859: API Authentication System (Active)
   Decisions: OAuth2 implementation, JWT tokens
   Bugs: None currently
   Status: 85% complete

2. conv-20251223-140521: User Login Refactor (Completed)
   Decisions: Session timeout 24h
   Bugs: Fixed token expiry issue
   Failed: Email/password approach (too complex)

3. conv-20251220-093012: Security Audit (Completed)
   Decisions: Require 2FA for admin accounts

Key learnings:
- Avoid email/password (maintenance overhead)
- Use OAuth2 with established providers
- JWT tokens preferred over sessions

For /baton report [timeframe]

Generate work summary reports:

  • Aggregate work across conversations
  • Count tasks completed, bugs fixed, decisions made
  • List key files modified
  • Perfect for standups, status updates

Timeframes:

  • --today: Today's work
  • --week: Past 7 days
  • --month: Past 30 days
  • --conversation <id>: Specific conversation
  • No flag: Ask for timeframe

Example output:

## Work Summary: Past 7 Days (Dec 18-25, 2025)

**Active Conversations:** 3
**Completed Conversations:** 2

### Tasks Completed: 24
- API authentication system (12 tasks)
- Database migration (8 tasks)
- Bug fixes (4 tasks)

### Bugs Fixed: 5
- Authentication token expiry
- Database connection timeout
- API rate limiting error
- UI rendering glitch
- Memory leak in cron job

### Decisions Made: 8
- OAuth2 for authentication
- PostgreSQL for main database
- Redis for caching
- Next.js for frontend
- ... (4 more)

### Files Modified: 47
Top 10:
- src/auth/oauth.ts (23 changes)
- src/db/schema.sql (18 changes)
- src/api/endpoints.ts (15 changes)
... (7 more)

### Key Achievements:
- Completed API authentication system
- Migrated database schema to v2
- Reduced bug count from 12 → 7

For /baton metrics or /baton stats

Show system effectiveness:

  • Total conversations tracked
  • Token savings vs full conversation logs
  • Compaction survival rate
  • Average context restoration time
  • File sizes and growth trends

Example output:

📊 Baton System Metrics

CONVERSATIONS:
  Total: 12 (3 active, 9 completed)
  Avg Duration: 3.2 hours
  Avg Compactions: 4.2 per conversation
  Longest: conv-20251215-081234 (12 compactions)

TOKEN EFFICIENCY:
  Full Conversation Logs: ~612,000 tokens
  TLDR Summaries: ~6,200 tokens
  Compression Ratio: 98.9% (99x reduction)
  Estimated Cost Savings: $18.36 (at $0.03/1K tokens)

CONTEXT RESTORATION:
  Success Rate: 100% (12/12 compactions survived)
  Avg Restoration Time: 1.2 seconds
  Avg Tokens Read: 1,150 per restoration

FILE HEALTH:
  CONVERSATION_HISTORY.md: 2.1 KB (12 entries)
  BUGS.md: 1.8 KB (7 active, 15 archived)
  DECISIONS.md: 2.4 KB (11 active, 8 implemented)
  Archive Size: 18.2 KB (47 archived items)

RECOMMENDATIONS:
  ✅ System healthy
  ℹ️ Consider archiving (BUGS.md has 22 total entries)

For /baton validate or /baton health

Check file integrity:

  • Verify .claude/ directory structure exists
  • Check all required files present
  • Validate SUMMARY.md has required sections
  • Detect missing conversation IDs, broken tags
  • Check for orphaned files
  • Validate settings.json syntax

Example output:

🔍 Baton Health Check

DIRECTORY STRUCTURE:
  ✅ .claude/ exists
  ✅ .claude/conversations/ exists
  ✅ .claude/archive/ exists
  ✅ .claude/templates/ exists

REQUIRED FILES:
  ✅ CONVERSATION_HISTORY.md (2.1 KB)
  ✅ BUGS.md (1.8 KB)
  ✅ DECISIONS.md (2.4 KB)
  ✅ CURRENT_CONVERSATION_ID (present)
  ✅ settings.json (valid JSON)
  ⚠️ ENHANCEMENTS.md (empty)
  ⚠️ USER_FEEDBACK.md (empty)

CONVERSATIONS:
  ✅ conv-20251224-015859: All sections present
  ✅ conv-20251223-140521: All sections present
  ❌ conv-20251220-093012: Missing "Failed Attempts" section

TAGS:
  ✅ All BUGS.md entries have Conv: tags
  ⚠️ 2 DECISIONS.md entries missing Conv: tags

ISSUES FOUND: 3
  [1] conv-20251220-093012/SUMMARY.md missing "Failed Attempts"
  [2] DECISIONS.md line 45 missing Conv: tag
  [3] DECISIONS.md line 67 missing Conv: tag

FIX COMMAND:
  /baton fix --auto   # Auto-fix common issues

For /baton auto-save on|off|status

Configure automatic saves:

  • on: Enable auto-save at configured thresholds
  • off: Disable auto-save
  • status: Show current configuration

Auto-save behavior:

  • Monitor token usage continuously
  • Save at thresholds: 70%, 85%, 95% (configurable)
  • Show notification: "🔁 Auto-saved at 72% token usage"
  • Never interrupt user work
  • Settings stored in .claude/settings.json

Example output:

Auto-Save Configuration:
  Status: ✅ Enabled
  Thresholds: 70%, 85%, 95%
  Notify on save: Yes
  Last auto-save: 15 minutes ago (at 71%)

Current token usage: 68% (save at 70%)

For /baton template create <name>

Create custom templates:

  • Copy current SUMMARY.md structure
  • Save to .claude/templates/<name>.md
  • Allow editing/customization
  • Templates stored for reuse

Example:

/baton template create research

Created template: research
Location: .claude/templates/research.md

Customize with additional sections:
- Research Questions
- Literature Review
- Methodology
- Data Sources

For /baton template use <name>

Switch templates:

  • Load template from .claude/templates/<name>.md
  • Apply to new conversations
  • Existing conversations keep their template

For /baton template list

Show available templates:

Available Templates:
  ✓ standard (default) - Standard development template
  • research - Academic research template
  • devops - Infrastructure/deployment template
  • bugfix - Bug investigation template

Current conversation template: standard

Git integration:

  • Associate current conversation with git branch
  • Store mapping in .claude/git_links.json
  • Add conversation ID to commit template
  • Tag commits with conversation context

Example:

/baton git-link

✅ Linked conversation to git:
   Conv: conv-20251224-015859
   Branch: feature/oauth-authentication

Commits on this branch will be tagged with conversation ID.
Use /baton git-summary to generate commit message.

For /baton git-summary

Generate commit message from SUMMARY:

  • Extract Task Checklist completed items
  • Summarize key changes
  • Include conversation ID for traceability

Example output:

feat: implement OAuth2 authentication system

- Add OAuth2 provider integration (Google, GitHub)
- Create JWT token generation and validation
- Implement user session management
- Add authentication middleware
- Write integration tests for auth flow

Related to conversation: conv-20251224-015859

Problem Solved

During long autonomous sessions, Claude Code can go through 5-10 auto-compactions, losing critical technical details:

  • Bug reproduction steps
  • Failed approaches (leads to retry loops)
  • Architecture decisions and rationale
  • Exact file locations and current state
  • What was tried and why it didn't work

Solution

Two-tier context system with intelligent automation:

  • Tier 1 (TLDR): ~1,000 tokens - Always read after compaction
  • Tier 2 (Full details): ~50,000 tokens - Read on-demand only
  • Compression: 25-100x token reduction
  • Auto-save: Never lose work at compaction boundaries
  • Search: Find past context instantly
  • Smart updates: Reduce manual overhead

Commands Reference

Core Commands

/baton init Initialize context management for new conversation

/baton load or /baton Display current conversation TLDR

/baton save [note] Manually save current state

/baton update [section] ⭐ NEW Auto-update SUMMARY.md from recent activity

/baton rename <title> Set conversation title (max 60 chars)

/baton rename --suggest ⭐ NEW Get AI-generated title suggestions

/baton history Show all conversations and status

/baton status Check token usage, get save recommendations

/baton archive Archive completed items to prevent bloat


/baton switch <conv-id-or-title> ⭐ NEW Switch between conversations

/baton switch --recent ⭐ NEW Show recent conversations menu


Search & Discovery

/baton search <term> ⭐ NEW Search across conversations, bugs, decisions

/baton search --bugs <term> ⭐ NEW Search only bugs

/baton search --decisions <term> ⭐ NEW Search only decisions

/baton context <topic> ⭐ NEW Load relevant past context (smart search)


Reporting

/baton report [timeframe] ⭐ NEW Generate work summary report

/baton metrics ⭐ NEW Show system effectiveness metrics

/baton stats ⭐ NEW Alias for metrics


Validation

/baton validate ⭐ NEW Check file structure integrity

/baton health ⭐ NEW Alias for validate


Configuration

/baton auto-save on|off|status ⭐ NEW Configure automatic saves

/baton template create <name> ⭐ NEW Create custom SUMMARY.md template

/baton template use <name> ⭐ NEW Switch to custom template

/baton template list ⭐ NEW Show available templates


Git Integration

/baton git-link ⭐ NEW Associate conversation with git branch

/baton git-summary ⭐ NEW Generate commit message from SUMMARY


ENHANCEMENTS.md - Future Ideas Tracking

Track potential improvements and feature ideas:

## Enhancement #1: Add Dark Mode
**Conv:** conv-20251224-015859
**Proposed:** 2025-12-24
**Priority:** High | Medium | Low
**Status:** Proposed | Accepted | In Progress | Implemented | Rejected
**Rationale:** Users requested dark mode for nighttime viewing
**Impact:** Affects all UI components, requires theme system
**Effort:** ~2 days
**Dependencies:** None
**Proposed By:** User | Claude
**Notes:** Consider CSS variables for easy theming

When to add:

  • User mentions "we should..." or "it would be nice if..."
  • Claude identifies optimization opportunities
  • Discussing future improvements
  • Brainstorming features

Status progression:

  • Proposed → Accepted → In Progress → Implemented
  • Or: Proposed → Rejected (with reason)

USER_FEEDBACK.md - Questions Waiting for User

Critical for long autonomous sessions when user is away:

## Feedback Request #1: Authentication Method
**Conv:** conv-20251224-015859
**Asked:** 2025-12-24 03:15
**Risk Level:** High | Medium | Low
**Status:** Pending | Auto-Decided | Answered | No Longer Needed
**Context:** Building user authentication system
**Question:** Should we use OAuth2 or email/password auth?
**Options:**
1. OAuth2 (Google + GitHub) - Easier for users, harder to implement
2. Email/Password - Traditional, requires password reset flow
3. Both - Best UX, most complex
**Blockers:** Can't proceed with auth implementation until decided
**Workaround:** Working on other features in the meantime
**Recommendation:** OAuth2 (most common for modern apps, aligns with best practices)
**Auto-Decision:** [If Low risk, Claude fills this in with choice made]
**User Validation:** [User confirms or requests redo]

Risk Assessment Guide:

High Risk - Block and wait for user (COSTS MONEY or irreversible):

  • Costs money: Cloud provider choice (AWS vs GCP), paid services, API pricing
  • Expensive to redo: 3+ days of rework if wrong choice
  • Architecture decisions affecting entire system
  • Breaking changes or data migration
  • Security-critical choices (authentication, authorization, encryption)
  • Irreversible decisions (data deletion, production deployments)
  • User explicitly requested input on this type of decision
  • RULE: If choosing wrong costs money or >2 days rework → HIGH RISK

Medium Risk - Auto-decide, document, validate (easy to redo):

  • Framework/library choices (can swap in <1 day)
  • UI/UX decisions (can redesign easily)
  • Non-critical performance tradeoffs
  • Feature prioritization
  • RULE: If wrong choice costs <1 day to fix → MEDIUM RISK

Low Risk - Auto-decide, implement, validate later (trivial to redo):

  • Variable naming conventions (<1 hour to refactor)
  • File organization (can reorganize easily)
  • Minor styling choices (quick CSS changes)
  • Error message wording (find/replace)
  • Default values (config change)
  • Logging verbosity (config change)
  • RULE: If wrong choice costs <1 hour to fix → LOW RISK

When to add:

  • High Risk: Add to USER_FEEDBACK.md, block work on that feature
  • Medium/Low Risk: Make decision, document in DECISIONS.md with status="Auto-Decided"

Auto-Decision Workflow (Low/Medium Risk):

  1. Claude makes best-guess decision
  2. Implements the feature
  3. Documents in DECISIONS.md:
    **Status:** Auto-Decided (Pending User Validation)
    **Chosen:** OAuth2
    **Rationale:** Modern apps prefer OAuth, easier UX
    **Alternatives:** Email/password, Both
    **Risk:** Low - Can swap auth provider without data loss
    **Redo Effort:** ~2 hours if user prefers different approach
    
  4. At next session start, ask user: "I chose OAuth2 for auth (modern standard). Alternatives were email/password or both. Okay with this?"
  5. User validates (70% chance) or requests redo (30% chance)

Critical behavior:

  • ALWAYS check USER_FEEDBACK.md at start of session
  • Surface pending HIGH-RISK questions immediately
  • For Auto-Decided items: Ask user for validation
  • Be ready to redo work if user disagrees (~30% of time)
  • Mark as "Validated" once user confirms

Auto-Behavior (No Command Needed)

Claude automatically follows these behaviors if .claude/ directory exists:

On Session Start:

  1. Check for .claude/CURRENT_CONVERSATION_ID
  2. Read CONVERSATION_HISTORY.md (all conversations overview)
  3. Read conversations/{conv-id}/SUMMARY.md (this conversation's TLDR)
  4. Read BUGS.md and DECISIONS.md (filtered to this conversation)
  5. Read USER_FEEDBACK.md - Surface any pending questions immediately
  6. Read settings.json - Load auto-save configuration
  7. Total: ~1,000-1,500 tokens for full context restoration

During Work:

  • Use standardized response format (see CLAUDE.md) with Title, Request, Tasks, Summary
  • Monitor token usage for auto-save triggers
  • Update SUMMARY.md after significant actions
  • Update conversation Title via /baton rename when conversation focus shifts
  • Append to BUGS.md when discovering bugs
  • Append to DECISIONS.md when making architecture choices
  • Append to ENHANCEMENTS.md when ideas are discussed
  • Append to USER_FEEDBACK.md when user input needed but user away
  • Update CONVERSATION_HISTORY.md on major milestones
  • Auto-save at 70%, 85%, 95% token thresholds if enabled

After Compaction:

  • IMMEDIATELY run /baton load equivalent automatically
  • Restore from TLDR (~1K tokens instead of 50K+ full log)
  • Resume work with full context

Auto-Save Triggers:

  • At 70% token usage: First checkpoint
  • At 85% token usage: Second checkpoint
  • At 95% token usage: Final checkpoint before compaction
  • Show notification: "🔁 Auto-saved at 72% token usage"

File Structure

.claude/
├── CONVERSATION_HISTORY.md          # All conversations (~200 tokens)
├── BUGS.md                          # All bugs, tagged with conv-id
├── DECISIONS.md                     # All decisions, tagged with conv-id
├── ENHANCEMENTS.md                  # Future enhancement ideas
├── USER_FEEDBACK.md                 # Questions waiting for user input
├── CURRENT_CONVERSATION_ID          # Current conversation ID
├── settings.json                    # Baton configuration
├── git_links.json                   # Git branch associations
├── conversations/
│   └── {conv-id}/
│       └── SUMMARY.md               # This conversation TLDR (~300 tokens)
├── templates/
│   ├── standard.md                  # Default template
│   ├── research.md                  # Research project template
│   └── devops.md                    # DevOps/infrastructure template
└── archive/
    ├── conversations/
    │   └── YYYY-MM.md               # Archived conversations by month
    ├── bugs/
    │   └── fixed-YYYY-MM.md         # Fixed bugs by month
    └── decisions/
        └── implemented-YYYY-MM.md   # Implemented decisions by month

settings.json Configuration

{
  "autoSave": {
    "enabled": true,
    "thresholds": [70, 85, 95],
    "notifyOnSave": true
  },
  "archiveThresholds": {
    "conversations": 10,
    "bugs": 20,
    "decisions": 15
  },
  "defaultTemplate": "standard",
  "gitIntegration": {
    "enabled": true,
    "tagCommits": true,
    "addConvIdToMessage": true
  },
  "search": {
    "caseSensitive": false,
    "maxResults": 50
  }
}

SUMMARY.md Format

# Conversation {conv-id} - TLDR

**Title:** [Brief conversation goal, set via /baton rename, max 60 chars]
**Status:** Active | Completed | Paused
**Started:** YYYY-MM-DD HH:MM
**Duration:** Xh
**Compactions:** N

## Context in 3 Lines
[High-level overview of what's happening]

## Task Checklist
- [x] Completed task
- [ ] Pending task

## Decisions Made
- Decision #N: What was decided and why

## Key Files Created/Modified
- path/to/file.ts (what changed)

## Failed Attempts (Don't Retry)
- Approach X: Why it failed

## Next Actions
1. First priority
2. Second priority

## State Snapshot
**Current file:** exact/path.ts
**Current line:** 42
**Current task:** Specific thing being worked on
**Blockers:** Any blockers
**Ready to:** Next immediate action

Conversation ID Tagging

When adding to shared files (BUGS.md, DECISIONS.md):

**Conv:** conv-20251223-225929

This enables:

  • Multiple conversations working simultaneously
  • Each conversation identifying their work
  • Shared awareness across conversations
  • No file conflicts

Integration with CLAUDE.md

Add this to your project's CLAUDE.md:

## Context Management Protocol

This project uses `.claude/` context management system.

**After compaction:** Automatically reads TLDR summaries
**Manual control:** Use `/baton` skill commands
**Token efficiency:** 25-100x compression (50K→1K tokens)
**Auto-save:** Enabled at 70%, 85%, 95% thresholds

See full protocol in CLAUDE.md for details.


Portability

To use across multiple projects:

  1. Option A - Local per project:

    cp -r .claude-code/skills/baton /path/to/other/project/.claude-code/skills/
    
  2. Option B - Global symlink:

    # Move to central location
    mv .claude-code/skills/baton /mnt/foundry_project/Claude_skills/
    
    # Symlink from ~/.claude/skills/
    ln -s /mnt/foundry_project/Claude_skills/baton ~/.claude/skills/baton
    
  3. Option C - Copy to central location:

    cp -r .claude-code/skills/baton /mnt/foundry_project/Claude_skills/
    ln -s /mnt/foundry_project/Claude_skills/baton ~/.claude/skills/baton
    

Token Efficiency

  • Full conversation log: 50,000+ tokens
  • TLDR summary: 500-2,000 tokens
  • Compression ratio: 25-100x
  • Post-compaction read: ~1,000-1,500 tokens total
  • Auto-save overhead: ~50 tokens per save
  • Enables: Long autonomous sessions without context loss

Benefits

✅ For humans:

  • Quick scan of what happened
  • Thread view of conversations
  • Easy navigation
  • Instant search across all work
  • Weekly/monthly reports for standups

✅ For Claude:

  • Efficient context restoration
  • No retry of failed approaches
  • Preserves technical details
  • Enables multi-conversation work
  • Auto-saves prevent context loss

✅ For projects:

  • Portable across projects
  • Standardized context management
  • Reduced token costs (98%+ reduction)
  • Better long-running session support
  • Git integration for traceability

Version

Baton v2.0 - Enhanced with 11 new features (2025-12-25)

New in v2.0:

  1. Auto-save triggers (prevent context loss)
  2. Conversation switching (multi-conversation workflow)
  3. Smart SUMMARY.md updates (reduce manual overhead)
  4. Search across conversations (find past context)
  5. Title auto-suggestions (AI-powered naming)
  6. Validation & health check (data integrity)
  7. Export & reporting (status summaries)
  8. Conversation metrics (prove system value)
  9. Smart context loading (relevance-based)
  10. Git integration (branch association, commit messages)
  11. Template customization (project-specific needs)