reduce-tokens
reduce-tokens
Every Claude Code request ships the same fixed prelude on every turn: all tool schemas, all proactively-loaded skill descriptions, the system prompt, and any connected MCP servers. On a Sonnet session with a full toolset this is ~40k tokens of tools alone before the model reaches the user's problem. This skill measures that prelude, finds what the user never uses, and removes it via settings.json — so the tokens stop being sent.
Mental model: you are trimming the payload, not disabling capability. A tool removed by a bare-name deny rule is gone from the schema Claude sees, but disableBundledSkills and user-invocable-only leave slash commands still typable. Cut proactive weight; keep on-demand access.
Run the five steps in order. Steps 1–2 are mechanical (bulk log reads, tallies) — delegate them to a Sonnet worker per the plan-big/execute-small rule; keep the judgment (steps 3–5) in the main loop.
Step 1 — Measure the baseline
Get the current payload breakdown two ways; use whichever is available:
/context(ask the user to run it and paste, or read from the conversation if already shown). Gives category totals: System tools, Skills, System prompt, Memory. This is the fast before/after number.- The bundled proxy (
proxy.mjsin this skill dir) for a per-tool byte ranking — the exact cut list. Copy it somewhere writable, then:ANTHROPIC_BASE_URL=http://localhost:8787 claudein another shell, fire one message, and read the newestlogs/*.md— its<audit>block ranks every tool by bytes. Only needed when the user wants precise per-tool numbers;/contextcategories are usually enough to decide.
Record the starting numbers so you can report the delta at the end.