Skip to content

Build1 publisher3 min readPublished

Sixteen idle skills inside a used plugin escape /skill-doctor's prune list

Running Claude Code's new /skill-doctor on a 40-skill setup put the standing context cost at about 3,060 tokens a turn, and the three skills it told the shop to disable were worth a fraction of the sixteen it left alone.

The Engineer · Build desk

Illustration accompanying Sixteen idle skills inside a used plugin escape /skill-doctor's prune list

What happened

  • Claude Code v2.1.252 added /skill-doctor, a per-skill report of what each loaded skill costs in context and how often it has been used.
  • A run on v2.1.263 on 2026-09-10 listed 40 skills at about 3,060 tokens on every turn, flagged three as never invoked, and attributed 149 million tokens over seven days to one skill.
  • A memory plugin supplies 19 of the 40 skills; three have ever been invoked, and the sixteen untouched ones cost about 1,470 tokens per turn between them.
  • The three skills the report flagged were a user-level review skill and two project skills, monthly-report, frozen on purpose since early summer, and subagent-ops, created the day before the run.
  • The sixteen costliest never-used skills were not flagged at all, because they belong to a plugin that is used, and four plugin skills appeared twice in the listing.

Compiled by The EngineerSomething wrong?How this is made

Why it matters

  • cost Every turn in that repository pays for sixteen skills nobody has ever called. Whoever installed the plugin set the size of that bill.
  • contradiction The docs say to start with the idle skills that cost the most, while the report's own never-invoked summary skipped the most expensive idle block, so a team that trusts the summary prunes the cheap end of its listing.
  • decision Teams with skills that only a human calls by name now face a three-way choice instead of keep-or-delete, because skillOverrides can shrink an entry to a few tokens while leaving the slash command alive.
  • constraint Shops running Claude Code behind a proxy that blocks feature-flag fetching, or driving it over Remote Control, cannot get this number at all, so their pruning stays guesswork.

The column that answers "what does this cost me" is labelled context, and it measures the size of the skill's one-line entry in the listing Claude sees on every turn, not the size of `SKILL.md`, which loads only when the skill runs [10]. A dash in that column means the skill is not in the current listing and costs nothing until it fires [10]. Pruning recovers listing entries, not skill bodies.

Across 40 rows those entries sum to about 3,060 tokens per turn, and the repository's ten project skills account for about 720 of it [11]. That leaves roughly 2,340 tokens coming from user-level and plugin skills [23], and puts the average row near 77 tokens [20]. The sixteen unused memory-plugin skills average about 92 tokens each [25], so sixteen rows out of forty carry roughly 48 percent of the total [24].

The report ends with two summaries: skills in the listing that have never been invoked, and plugins not used recently [9]. The second one aggregates at plugin granularity. The memory plugin has fired three of its nineteen skills [12], which makes it a used plugin, and its sixteen idle skills clear both checks [5].

The `monthly-report` entry is about 60 tokens, and `skillOverrides` takes it down to a handful [17]. The sixteen unflagged skills cost about 24 times that single entry [22]. Meanwhile the docs' one rule of thumb says to find the skills that never fire and turn them off, starting with the ones that cost the most [2]. The three the report did flag are ordinary rows; project skills in this repository average about 72 tokens each [21].

Keep-or-delete is also the wrong frame for one of them. The shop froze its monthly report in early summer, recorded the freeze in a state file, and runs a health check that watches for the unfreeze condition, so the skill has to exist for the unfreeze to land somewhere [16]. The docs' `skillOverrides` setting has two states for that case: `"name-only"` keeps the skill in the listing without its description, and `"user-invocable-only"` stops Claude from invoking it automatically while keeping the slash command [17].

The second misfire is not fixable from the report's own data. `subagent-ops` was moved out of `CLAUDE.md` into a skill on 2026-09-08, the day before the run, to keep the main file under its size budget [18]. Uses and last-used are both zero for a one-day-old skill [19].

One more caution on the total: four plugin skills appeared twice [5]. The post does not say whether the duplication is in the report or in the listing Claude actually receives, so some part of the 3,060 may be four rows counted twice.

For 3,060 to transfer to your setup, you would need roughly the same shape: 40 skills, nineteen of them from a single plugin, three of those nineteen ever invoked [11][12]. The comparison worth copying is the local one. This shop's `CLAUDE.md` body is capped at 33KB by a test, about 10,000 tokens; the skill listing runs about a third of that and grows every time someone installs a plugin [13].

What to watch

  • Whether a later Claude Code release breaks the never-invoked summary out per plugin skill instead of rolling up to the plugin.
  • Whether skillOverrides applies to plugin-supplied skills, since that is where about 1,470 tokens per turn sit.
  • A second run with the memory plugin disabled, showing how much of the 3,060 tokens actually clears.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories