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
Navigation & Switching
- •
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.mdTitle field - •Update
.claude/CONVERSATION_HISTORY.mdentry 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:
code
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:
code
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
For /baton git-link
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
Navigation
/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):
- •Claude makes best-guess decision
- •Implements the feature
- •Documents in DECISIONS.md:
markdown
**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
- •At next session start, ask user: "I chose OAuth2 for auth (modern standard). Alternatives were email/password or both. Okay with this?"
- •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:
- •Check for
.claude/CURRENT_CONVERSATION_ID - •Read
CONVERSATION_HISTORY.md(all conversations overview) - •Read
conversations/{conv-id}/SUMMARY.md(this conversation's TLDR) - •Read
BUGS.mdandDECISIONS.md(filtered to this conversation) - •Read
USER_FEEDBACK.md- Surface any pending questions immediately - •Read
settings.json- Load auto-save configuration - •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 renamewhen 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 loadequivalent 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:
- •
Option A - Local per project:
bashcp -r .claude-code/skills/baton /path/to/other/project/.claude-code/skills/
- •
Option B - Global symlink:
bash# 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
- •
Option C - Copy to central location:
bashcp -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:
- •Auto-save triggers (prevent context loss)
- •Conversation switching (multi-conversation workflow)
- •Smart SUMMARY.md updates (reduce manual overhead)
- •Search across conversations (find past context)
- •Title auto-suggestions (AI-powered naming)
- •Validation & health check (data integrity)
- •Export & reporting (status summaries)
- •Conversation metrics (prove system value)
- •Smart context loading (relevance-based)
- •Git integration (branch association, commit messages)
- •Template customization (project-specific needs)