跳到主要内容
知仓学习社ZHICANG

strategic-compact

Suggests manual context compaction at logical intervals to preserve context through task phases rather than arbitrary auto-compaction. Use when a se…

写文件严重 0 · 高危 3affaan-m/ECC

它会碰到什么

扫了多少1 个文本文件,8 KB
它会碰到什么写文件
命中总数3 处
命中统计严重 0 · 高 3 · 中 0 · 低 0
逐条看命中(3 条严重或高危)
  • SKILL.md:49identity-config-write
    "hooks": {
  • SKILL.md:53identity-config-write
    "hooks": [{ "type": "command", "command": "node ~/.claude/scripts/hooks/suggest-compact.js" }]
  • SKILL.md:57identity-config-write
    "hooks": [{ "type": "command", "command": "node ~/.claude/scripts/hooks/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:

  1. 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
  2. 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)
  • 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 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

  1. Compact after planning — Once the plan is finalized and written to a file, compact to start fresh
  2. Compact after debugging — Clear error-resolution context before continuing
  3. Don't compact mid-implementation — Preserve context for related changes
  4. Read the suggestion — The hook tells you when, you decide if
  5. Write before compacting — Save important context to files or memory before compacting
  6. 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 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 — 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