Your Claude Code skills are being silently demoted, and nothing tells you. Every skill you install injects its name and description into the model's context on every turn — used or not. Claude Code budgets that listing at 1% of your context...
Your Claude Code skills are being silently demoted, and nothing tells you.
Every skill you install injects its name and description into the model's context on every turn — used or not. Claude Code budgets that listing at 1% of your context window (skillListingBudgetFraction, default 0.01). When the listing overflows, it drops descriptions starting with your least-used skills. No warning in the UI. Just a --debug log line.
A skill without a description has nothing left for the model to match your request against. So it quietly stops being chosen. One measured setup found a full plugin install pushing the listing to ~10.8x the default budget — meaning most of the catalog was effectively invisible, and nobody was told.
I built a CLI that finds these skills before it happens.
skill-tax-cli
skill-tax-cli audits the context tax of your Claude Code skills: it scans every skill source, measures each skill's always-on listing cost and full-load cost in tokens, replays the listing-budget overflow rule deterministically, and tells you exactly which skills would lose their descriptions.
Zero dependencies. Python standard library only.
pip install skill-tax-cli
List every skill Claude Code can see — user skills, project skills, and marketplace plugin skills:
$ skill-tax-cli list
huge plugin:acme 236 listing / 1482 load tokens
proj project 6 listing / 16 load tokens
tiny user 6 listing / 16 load tokens
3 skill(s)
Audit the tax — ranked by full-load cost, with share of your context window, plus the other always-on sources (rules, memory, MCP configs) in one table:
$ skill-tax-cli audit --window 200000
skill source listing load load%window
huge plugin:acme 236 1482 0.74%
tiny user 6 16 0.01%
Detect the silent drops — this is the part nothing else does. gate replays the documented overflow rule (least-used skills lose their descriptions first) and fails with a non-zero exit code when a skill would be silently stripped:
$ skill-tax-cli gate --window 200000
SILENT-DROP RISK: 2 of 34 skill(s) exceed the 2000-token listing budget:
- huge [plugin:acme] desc ~230 tokens, usage=1 -> description would be silently stripped
- helper [user] desc ~88 tokens, usage=0 -> description would be silently stripped
$ echo $?
1
Exit codes are 0 clean / 1 silent drops / 2 config error, and every command has --json — so it drops straight into pre-commit hooks and CI. Pass --usage usage.json ({"skill-name": invocation_count}) to replay your real usage instead of the deterministic fallback.
Why another skill auditor?
It's the only CI-friendly, deterministic one. The official /skill-doctor and every community skill-doctor I found are interactive — they show a report inside a session. This is a plain CLI with stable exit codes, built for pipelines.
Silent-exclusion detection is the point. The docs describe the 1% budget and the least-used-first drop order, but no tool replays the rule to tell you which skills are about to go dark. Now one does.
One CLI for all always-on sources. Skills, CLAUDE.md rules, MEMORY.md, and MCP configs measured together — the full per-turn tax, not four tools.
Token math is the honest kind: round(chars / 4), the same gauge my mcp-tax tool uses for MCP server schemas. Order-of-magnitude, not a billing meter — good enough to answer "which skill is eating my window?"
Links: GitHub · PyPI
10 smoke tests pass, including the budget simulation and gate exit codes. If your skill fleet has grown past "I remember installing that," run skill-tax-cli gate — you might find half your catalog is already invisible.