skillOverrides (name-only/user-invocable-only) silently no-ops for plugin-namespaced skill keys
Description
settings.json's skillOverrides map is documented/expected to control a skill's ambient-context footprint (on = full description, name-only = name only, user-invocable-only/off = hidden from ambient listing but still invocable/fully hidden). This works correctly for bare (non-namespaced) skill names, but silently does nothing for plugin-namespaced keys in the plugin:skill format.
Reproduction
- In
~/.claude/settings.json, set several plugin-namespaced skills toname-only, e.g.:
``json``
{
"skillOverrides": {
"context-mode:context-mode": "name-only",
"firecrawl:firecrawl-monitor": "name-only",
"exa:search": "name-only",
"skill-creator:skill-creator": "name-only",
"claude-md-management:claude-md-improver": "name-only"
}
}
- Start a session and run
/context. - Compare the
Skillstable's per-skill token cost against a bare-name skill also set toname-onlyin the same file.
Expected
All name-only entries should show "< 20 tokens" in /context's Skills breakdown, same as bare-name skills configured the same way (e.g. "loop": "name-only", "context-budget": "name-only" both correctly show "< 20 tokens").
Actual
Bare-name skills correctly drop to "< 20 tokens". Plugin-namespaced skills (plugin:skill format) stay at their full, undiminished token cost despite the name-only override, e.g. (observed in one session):
| Skill | Override | Actual /context cost |
|---|---|---|
| context-mode:context-mode | name-only | ~330 tokens (full) |
| firecrawl:firecrawl-monitor | name-only | ~370 tokens (full) |
| claude-md-management:claude-md-improver | name-only | ~130 tokens (full) |
| skill-creator:skill-creator | name-only | ~120 tokens (full) |
| exa:search | name-only | ~90 tokens (full) |
This appears related to #50631 (user/project-scope skillOverrides reportedly inert on some versions), but is narrower and more specific: the override mechanism works for bare skill names and fails specifically for the plugin:skill-namespaced key format, suggesting the override lookup isn't matching on the namespaced identifier correctly.
Impact
For users with many plugins installed, this silently defeats a meaningful chunk of configured context savings — in the session where this was found, roughly half of the total "Skills" context budget was accounted for by plugin-namespaced skills whose name-only overrides were not taking effect.
Environment
- Claude Code CLI (exact version not captured at time of report; observed in a session using Sonnet 5)
- OS: Linux