| name | strategic-compact |
| description | 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
Hook Setup
Add to your ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit",
"hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/suggest-compact.js" }]
},
{
"matcher": "Write",
"hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/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)
ECC_CONTEXT_WINDOW_TOKENS โ Explicit context-window size, in tokens, overriding auto-detection. Set this for large-window models whose reported id lacks a [1m] marker (e.g. 400k Opus 4.x, or a new 1M-window model family) so the threshold scales to the real window instead of defaulting to 200k and overstating context usage.
CLAUDE_CODE_AUTO_COMPACT_WINDOW โ Claude Code's native window-size override, in tokens; honored as a fallback when ECC_CONTEXT_WINDOW_TOKENS is unset.
The context window is otherwise auto-detected from a [1m] model marker or inferred when observed tokens already exceed 200k. On a large-window model that carries neither signal, set one of the overrides above so the /compact suggestion fires at the right point.
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
Related
- The Longform Guide โ Token optimization section
- Memory persistence hooks โ For state that survives compaction
continuous-learning skill โ Extracts patterns before session ends