strategic-compact
Suggests manual context compaction at logical intervals to preserve context through task phases rather than arbitrary auto-compaction. Use when a se…
它会碰到什么
逐条看命中(3 条严重或高危)
- 高
SKILL.md:43identity-config-write"hooks": { - 高
SKILL.md:47identity-config-write"hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/suggest-compact.js" }] - 高
SKILL.md:51identity-config-write"hooks": [{ "type": "command", "command": "node ~/.claude/skills/strategic-compact/suggest-compact.js" }]
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
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
usagerecord from the session transcript (transcript_pathin the hook payload) and sumsinput_tokens + cache_read_input_tokens + cache_creation_input_tokens(the true context size of the turn). Suggests/compactat 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;0disables 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 whenECC_CONTEXT_WINDOW_TOKENSis 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 written down (a file, or the task list if you have one); 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 |
| Files on disk | File contents you previously read |
| Memory files (~/.claude/memory/) | Multi-step conversation context |
| Git state (commits, branches) | Tool call history and counts |
| The task list — only if you have the todo tools (see below) | Nuanced user preferences stated verbally |
> ### Don't rely on the task list surviving — it may not exist
>
> Claude Code 2.1.233 removed the todo/task tools by default on Opus 4.8, Sonnet 5,
> Fable 5, Mythos 5 and newer models (TodoWrite, TaskCreate/Get/Update/List).
> CLAUDE_CODE_ENABLE_TODO_TOOLS=1 brings them back, but that is a per-machine
> environment setting — it does not travel with this skill, so you cannot assume the
> reader has it.
>
> This matters because "my todo list survives compaction" is a reason people compact
> instead of writing state down. If the tools are absent there is no list to survive,
> and the plan is simply gone. Write the plan to a file before compacting — a file
> persists on every version and every model. Treat the task list as a convenience that
> may be missing, never as your durable record.
Best Practices
- Compact after planning — Once the plan is finalized and written to a file, 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
/compactwith 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-learningskill — Extracts patterns before session ends
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。
同名技能的其他版本
有 7 个不同仓库或目录里都有叫 strategic-compact 的技能。它们内容并不相同,别混用:
- affaan-m/ECC — Suggests manual context compaction at logical intervals to preserve context through task p
- affaan-m/ECC — 任意の自動コンパクションではなく、タスクフェーズを通じてコンテキストを保持するための論理的な間隔での手動コンパクションを提案します。
- affaan-m/ECC — 임의의 자동 컴팩션 대신 논리적 간격에서 수동 컨텍스트 압축을 제안하여 작업 단계를 통해 컨텍스트를 보존합니다.
- affaan-m/ECC — 建议在逻辑间隔处手动压缩上下文,以在任务阶段中保留上下文,而非任意的自动压缩。
- affaan-m/ECC — Suggests manual context compaction at logical intervals to preserve context through task p
- affaan-m/ECC — Suggests manual context compaction at logical intervals to preserve context through task p