Suggests manual context compaction at logical intervals to preserve context through task phases rather than arbitrary auto-compaction.
Strategic Compact Skill
Suggests manual /compact at strategic points in your workflow rather than relying on arbitrary auto-compaction.
When to Activate
Running long sessions that approach context limits (200K+ tokens)
Working on multi-phase tasks (research → plan → implement → test)
Switching between unrelated tasks within the same session
After completing a major milestone and starting new work
When responses slow down or become less coherent (context pressure)
Why Strategic Compaction?
Auto-compaction triggers at arbitrary points:
Often mid-task, losing important context
No awareness of logical task boundaries
Can interrupt complex multi-step operations
Strategic compaction at logical boundaries:
After exploration, before execution — Compact research context, keep implementation plan
After completing a milestone — Fresh start for next phase
Before major context shifts — Clear exploration context before different task
How It Works
The suggest-compact.js script runs on PreToolUse (Edit/Write) and combines two signals:
Context size (primary) — Reads the latest usage record from the session transcript (transcript_path in the hook payload) and sums input_tokens + cache_read_input_tokens + cache_creation_input_tokens (the true context size of the turn). Suggests /compact at a window-scaled threshold — 160k tokens on a 200k window, 250k on a 1M window (detected from a [1m] model marker, or inferred when observed tokens already exceed 200k) — and re-reminds after every additional 60k tokens of context growth
Tool-call count (secondary) — Counts tool invocations in session; suggests at a configurable threshold (default: 50 calls), then every 25 calls after
Tool count alone is a weak proxy for window pressure: a few large file reads or MCP responses can fill the window in very few calls, while many tiny calls can cross 50 with a near-empty window. The context-size signal fires when it actually matters.
Hook Setup
Installed as a plugin? No setup is needed. The plugin's hooks/hooks.json already registers suggest-compact.js (hook id pre:edit-write:suggest-compact, active in the standard and strict hook profiles). Do not copy the block below into ~/.claude/settings.json — ~/.claude/scripts/ does not exist on plugin installs, and duplicating a plugin hook causes double execution.
If installed manually (./install.sh), add to your ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit",
"hooks": [{ "type": "command", "command": "node ~/.claude/scripts/hooks/suggest-compact.js" }]
},
{
"matcher": "Write",
"hooks": [{ "type": "command", "command": "node ~/.claude/scripts/hooks/suggest-compact.js" }]
}
]
}
}
Configuration
Environment variables:
COMPACT_THRESHOLD — Tool calls before first suggestion (default: 50)
COMPACT_CONTEXT_THRESHOLD — Context tokens before the context-size suggestion (default: 160000 on a 200k window, 250000 on a 1M window; 0 disables the context signal)
COMPACT_CONTEXT_INTERVAL — Additional context tokens before the suggestion repeats (default: 60000)
COMPACT_STATE_TTL_DAYS — Days before stale per-session state files in the temp dir are swept (default: 14)
Compaction Decision Guide
Use this table to decide when to compact:
Phase Transition
Compact?
Why
Research → Planning
Yes
Research context is bulky; plan is the distilled output
Planning → Implementation
Yes
Plan is in TodoWrite or a file; free up context for code
Implementation → Testing
Maybe
Keep if tests reference recent code; compact if switching focus
Debugging → Next feature
Yes
Debug traces pollute context for unrelated work
Mid-implementation
No
Losing variable names, file paths, and partial state is costly
After a failed approach
Yes
Clear the dead-end reasoning before trying a new approach
What Survives Compaction
Understanding what persists helps you compact with confidence:
Persists
Lost
CLAUDE.md instructions
Intermediate reasoning and analysis
TodoWrite task list
File contents you previously read
Memory files (~/.claude/memory/)
Multi-step conversation context
Git state (commits, branches)
Tool call history and counts
Files on disk
Nuanced user preferences stated verbally
Best Practices
Compact after planning — Once plan is finalized in TodoWrite, compact to start fresh
Compact after debugging — Clear error-resolution context before continuing
Don't compact mid-implementation — Preserve context for related changes
Read the suggestion — The hook tells you when, you decide if
Write before compacting — Save important context to files or memory before compacting
Use /compact with a summary — Add a custom message: /compact Focus on implementing auth middleware next
Token Optimization Patterns
Trigger-Table Lazy Loading
Instead of loading full skill content at session start, use a trigger table that maps keywords to skill paths. Skills load only when triggered, reducing baseline context by 50%+:
Trigger
Skill
Load When
"test", "tdd", "coverage"
tdd-workflow
User mentions testing
"security", "auth", "xss"
security-review
Security-related work
"deploy", "ci/cd"
deployment-patterns
Deployment context
Context Composition Awareness
Monitor what's consuming your context window:
CLAUDE.md files — Always loaded, keep lean
Loaded skills — Each skill adds 1-5K tokens
Conversation history — Grows with each exchange
Tool results — File reads, search results add bulk
Duplicate Instruction Detection
Common sources of duplicate context:
Same rules in both ~/.claude/rules/ and project .claude/rules/
Skills that repeat CLAUDE.md instructions
Multiple skills covering overlapping domains
Context Optimization Tools
token-optimizer MCP — Automated 95%+ token reduction via content deduplication
context-mode — Context virtualization (315KB to 5.4KB demonstrated)
Related
The Longform Guide — Token optimization section
Memory persistence hooks — For state that survives compaction
continuous-learning skill — Extracts patterns before session endsdon't have the plugin yet? install it then click "run inline in claude" again.