Skip to content
compact logo

Manual Context Save (Compact Workaround)

compact

Manually trigger context save when auto-compact fails in VSCode/Cursor extensions. Use when context is high and you need to preserve state before starting fresh.

SKILL.md

Full skill instructions

Manual Context Save (Compact Workaround)

Why This Exists

VSCode and Cursor extensions have limited hook support (GitHub issue #15021). The PreCompact hook may not trigger automatically, leading to lost context. This skill provides manual control to save state before context overflow.

When to Use

  • Context warning shows 80%+ usage
  • Working in VSCode or Cursor extension
  • Before starting a new conversation
  • When auto-compact doesn't seem to work

Execution Steps

Step 1: Detect Environment

# Check current environment
source ~/​.claude/​hooks/​detect-environment.sh 2>/​dev/​null && print_env_info || echo "Environment detection unavailable"

Step 2: Get Current Session ID

The session ID is needed to save context properly:

# Try to get session ID from state
SESSION_ID=$(cat ~/​.ralph/​state/​current-session 2>/​dev/​null || echo "manual-$(date +%Y%m%d-%H%M%S)")
echo "Session: $SESSION_ID"

Step 3: Extract and Save Context

# Run the pre-compact hook manually
export SESSION_ID="${SESSION_ID:-manual-$(date +%Y%m%d-%H%M%S)}"

# Create input JSON for the hook
echo "{\"hook_event_name\":\"PreCompact\",\"session_id\":\"$SESSION_ID\",\"transcript_path\":\"\"}" | \
    ~/​.claude/​hooks/​pre-compact-handoff.sh

echo ""
echo "✅ Context saved to:"
echo "   Ledger: ~/​.ralph/​ledgers/​CONTINUITY_RALPH-$SESSION_ID.md"
echo "   Handoff: ~/​.ralph/​handoffs/​$SESSION_ID/"

Step 4: Verify Save

# Show the saved ledger
echo "=== SAVED LEDGER ==="
head -30 ~/​.ralph/​ledgers/​CONTINUITY_RALPH-$SESSION_ID.md 2>/​dev/​null || echo "Ledger not found"

Alternative: Use Ralph CLI

If the above doesn't work, use the Ralph CLI directly:

ralph compact

This wrapper command handles all the complexity automatically.

Post-Compact Actions

After saving context:

  1. Start fresh: Use /​clear or start a new conversation
  2. Restore context: The SessionStart hook will auto-load the saved ledger
  3. Verify restoration: Check that your objective is loaded

Recovery

If context was lost without saving:

# List recent ledgers
ralph ledger list

# Load a specific ledger
ralph ledger load <session-id>

# Search handoffs
ralph handoff search "keyword"

Troubleshooting

Hook not found

# Verify hooks exist
ls -la ~/​.claude/​hooks/​pre-compact-handoff.sh
ls -la ~/​.claude/​hooks/​detect-environment.sh

# If missing, sync from repo
ralph sync-global

Permission denied

# Make hooks executable
chmod +x ~/​.claude/​hooks/​*.sh
chmod +x ~/​.claude/​scripts/​*.py

Context extractor fails

# Test context extractor directly
python3 ~/​.claude/​scripts/​context-extractor.py --project . --pretty