Skip to content
Development
Skill

/usage-audit

Audit a Claude Code setup for token waste and context bloat. Checks MCP servers, CLAUDE.md, skills, and settings against bloat filters. Triggers on: "audit my context", "usage audit", "token audit", "context bloat". NOT for codebase audits.

From plugin
armory
31181 skills2 agents1 command
Install
$ npx -y skills add Mathews-Tom/armory --skill usage-audit --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/usage-audit

Context preview

The summary Claude sees to decide when to auto-load this skill.

Audit a Claude Code setup for token waste and context bloat. Checks MCP servers, CLAUDE.md, skills, and settings against bloat filters. Triggers on: "audit my context", "usage audit", "token audit", "context bloat". NOT for codebase audits.

SKILL.md

usage-audit.SKILL.md
name: usage-audit
description: 'Audit a Claude Code setup for token waste and context bloat. Checks MCP servers, CLAUDE.md, skills, and settings against bloat filters. Triggers on: "audit my context", "usage audit", "token audit", "context bloat". NOT for codebase audits.'
metadata:
  version: 1.0.0
  category: review
  tags: [context, tokens, audit, claude-code, bloat]
  difficulty: intermediate

Usage Audit

Bloated context costs twice: you burn usage limits faster and output quality drops because models attend most to the start and end of context. This skill finds the waste and tells you what to cut.

Credit: adapted from the `context-audit` skill in the Claude Code Context Cleanup Guide (2026). Armory port adds package-aware checks and treats the scoring rubric as an overridable reference, not a verdict.

Step 1: Get /context Data

Check the conversation for recent `/context` output. If the user has not run it in this session, ask:

> "Run `/context` in this terminal and paste the output. I can't run slash > commands myself — once I can see the breakdown I'll audit everything it > flags."

**STOP HERE.** Do not proceed to Step 2 until real `/context` data is available. The breakdown determines what to audit and in what order. Without it, the audit is guessing. Output the message above and wait.

Step 2: Audit What's Bloated

Work the categories from largest to smallest in the `/context` output. Run independent checks in parallel.

MCP Servers

Each connected server loads full tool definitions into context every turn (~15,000-20,000 tokens each), whether you invoke a tool or not. Under Opus 4.7 this figure can run 1.0–1.35× higher for the same schemas due to a tokenizer update — prefer measured values from `/context` over these static estimates.

  • Count configured servers in `settings.json` and `~/.claude/settings.json`.
  • Report total MCP overhead from `/context`.
  • Flag any server with a CLI equivalent (Playwright, GitHub, Google Workspace,

Notion, Slack, etc.) — the CLI costs zero tokens when idle.

  • Cross-reference installed armory packages: if `mcp-to-skill` is installed,

recommend it explicitly for the heaviest server.

CLAUDE.md Files

Read every CLAUDE.md in scope (project root, `.claude/`, `~/.claude/`). For each file: count lines, then test every rule against the five filters.

| Filter | Flag when... | |--------|-------------| | **Default** | Claude already does this without being told ("write clean code", "handle errors") | | **Contradiction** | Conflicts with another rule in the same or a different file | | **Redundancy** | Repeats something already covered elsewhere | | **Bandaid** | Added to fix one specific bad output, not improve outputs generally | | **Vague** | Interpreted differently every time ("be natural", "use good tone") |

If a CLAUDE.md exceeds 200 lines, check for progressive-disclosure opportunities: rules that only apply to specific tasks (API conventions, deploy steps, testing) should move to reference files with one-line pointers from the core file. A lean CLAUDE.md under 200 lines with universal context is fine as a single file — do not split for the sake of splitting.

Rules Packages (armory-specific)

Armory `rules/` packages load into every session like CLAUDE.md does — they are the real silent base tax. Higher priority than skill bloat.

  • Enumerate installed rules packages via `~/.claude/settings.json` or the

armory installer registry if present.

  • For each rules package, read its `RULE.md` body, count lines, apply the

same five filters.

  • Flag any rules package over 300 lines. These hit every turn.

Installed Skills

Scan `~/.claude/skills/*/SKILL.md` and any project-local skills. For each:

  • **Measure SKILL.md body lines only** — do NOT count files under

`references/`, `scripts/`, or `evals/`. Those load on demand, not on trigger. Penalizing total package LOC misattributes cost.

  • Flag SKILL.md body > 200 lines (warn) or > 500 lines (critical).
  • Run the five filters on skill instructions: restated goals, hedging ("you

may want to"), synonymous instructions ("be concise" + "keep it short" + "don't be verbose").

  • **Frontmatter description audit:** count words in each skill's `description`

field. Flag any over 60 words. Skill descriptions load into the router on every session and should be trigger-focused, not prose.

Settings

Check `settings.json` for these keys:

| Setting | Flag if | Recommended | |---------|---------|-------------| | `autocompact_percentage_override` | Missing or > 80 | `75` | | `env.BASH_MAX_OUTPUT_LENGTH` | At default (30-50K) | `150000` |

File Permissions

Check `permissions.deny` in `settings.json`. If missing, inspect the project and flag bloat directories that should be denied:

| If this exists... | Should deny... | |-------------------|---------------| | `package.json` | `node_modules`, `dist`, `build`, `.next`, `coverage` | | `Cargo.toml` | `target` | | `go.mod` | `vendor` | | `pyproject.toml` / `requirements.txt` | `__pycache__`, `.venv`, `*.egg-info` |

Step 3: Score and Report

The rubric below is a **reference default**, not gospel. A "reference" skill that wraps a large CLI surface (e.g., `github`, `agent-builder`) may legitimately exceed line thresholds — judge the body, not the file count. Users can override any deduction in their project CLAUDE.md.

Score starts at 100. Deduct per issue:

| Issue | Points | |-------|--------| | CLAUDE.md > 200 lines | -10 | | CLAUDE.md > 500 lines | -20 | | Rules package > 300 lines (body) | -10 each | | Per 5 rules flagged by filters | -5 | | Contradictions between files | -10 | | Missing `autocompact_percentage_override` | -10 | | Missing `BASH_MAX_OUTPUT_LENGTH` override | -5 | | Skill body > 200 lines | -5 each | | Skill body > 500 lines | -10 each | | Skill description > 60 words | -2 each | | Per connected MCP server with CLI equivalent | -5 each | | No `permissions.deny` and bloat dirs exist | -10 |

Fl

Read more
Ships witharmory

Curated, production-grade skills, agents, hooks, rules, commands, utilities, and presets for AI coding agents. No magic, no demos — battle-tested workflows built for developers who use AI seriously.

Get the whole plugin

Other skills on armory.