Preflight Checklist
Problem Statement
Problem
enabledPlugins only works in the global ~/.claude/settings.json. There's no way to enable or disable a plugin per project. This means a plugin that's useful in one project loads its full skill descriptions into every project's context — even projects that set all the plugin's skills to "off" via skillOverrides.
The gap
Per-project overrides exist for most settings: permissions, hooks, skillOverrides, env. But enabledPlugins is global-only. This creates an asymmetry:
| Setting |
Global |
Per-project |
permissions |
✅ |
✅ |
hooks |
✅ |
✅ |
skillOverrides |
✅ |
✅ |
env |
✅ |
✅ |
enabledPlugins |
✅ |
❌ |
Why skillOverrides: "off" doesn't solve this
Setting a plugin's skills to "off" suppresses auto-triggering but does not prevent the skill descriptions from loading into the system prompt. A project that disables all 28 anthropic-skills via skillOverrides still pays ~4,800 tokens per turn for descriptions it never uses.
Measured impact
From a real project audit (Opus 4, 200k context window):
- 28 plugin skills set to
"off" in project settings.local.json
- All 28 descriptions still appear in the system prompt every turn
- Cost: ~4,800 tokens/turn (2.4% of context window)
- 6 of those skills duplicate project-level skills, adding ~920 tokens of pure redundancy
On a 200k window this is tolerable. On smaller models or projects that push the context limit, it's a meaningful loss — and it's entirely uncontrollable.
Proposed solution
Allow enabledPlugins in project-level .claude/settings.json (or .claude/settings.local.json), with the same merge semantics as other per-project settings. A project that sets "anthropic-skills": false at the project level would not load that plugin's skill descriptions into context for sessions in that project.
// .claude/settings.json (project-level)
{
"enabledPlugins": {
"anthropic-skills": false
}
}
Proposed Solution
- skillOverrides: "off" should mean off
The simplest change and the one that fixes the most pain. If I set a skill to "off", its description should not load into context.
- Per-project enabledPlugins for bulk control
Individual skillOverrides entries work for fine-grained control. But when I want to disable an entire plugin for a project, I shouldn't have to list all 28 skills one by one. A project-level enabledPlugins: { "anthropic-skills": false } should disable the whole plugin for that project — no descriptions loaded, no skills available.
Alternative Solutions
The only current workaround is disabling the plugin globally in ~/.claude/settings.json, which affects all projects — including ones where the plugin is wanted.
Priority
Critical - Blocking my work
Feature Category
CLI commands and flags
Use Case Example
I use the anthropic-skills plugin globally — it's useful for general-purpose work. But I have one project with its own custom skills that cover the same ground. I don't need the plugin there.
Today:
I set all 28 plugin skills to "off" in my project's settings.local.json.
They still load into context every turn. ~4,800 tokens.
Autocompact can't evict them — they're in the system prompt.
My only option is disabling the plugin globally, which breaks my other projects.
With per-project enabledPlugins:
I add "anthropic-skills": false to my project's .claude/settings.json.
No descriptions load. 4,800 tokens freed.
The plugin still works in every other project.
Additional Context
No response
Preflight Checklist
Problem Statement
Problem
enabledPluginsonly works in the global~/.claude/settings.json. There's no way to enable or disable a plugin per project. This means a plugin that's useful in one project loads its full skill descriptions into every project's context — even projects that set all the plugin's skills to"off"viaskillOverrides.The gap
Per-project overrides exist for most settings:
permissions,hooks,skillOverrides,env. ButenabledPluginsis global-only. This creates an asymmetry:permissionshooksskillOverridesenvenabledPluginsWhy
skillOverrides: "off"doesn't solve thisSetting a plugin's skills to
"off"suppresses auto-triggering but does not prevent the skill descriptions from loading into the system prompt. A project that disables all 28anthropic-skillsviaskillOverridesstill pays ~4,800 tokens per turn for descriptions it never uses.Measured impact
From a real project audit (Opus 4, 200k context window):
"off"in projectsettings.local.jsonOn a 200k window this is tolerable. On smaller models or projects that push the context limit, it's a meaningful loss — and it's entirely uncontrollable.
Proposed solution
Allow
enabledPluginsin project-level.claude/settings.json(or.claude/settings.local.json), with the same merge semantics as other per-project settings. A project that sets"anthropic-skills": falseat the project level would not load that plugin's skill descriptions into context for sessions in that project.Proposed Solution
The simplest change and the one that fixes the most pain. If I set a skill to "off", its description should not load into context.
Individual skillOverrides entries work for fine-grained control. But when I want to disable an entire plugin for a project, I shouldn't have to list all 28 skills one by one. A project-level enabledPlugins: { "anthropic-skills": false } should disable the whole plugin for that project — no descriptions loaded, no skills available.
Alternative Solutions
The only current workaround is disabling the plugin globally in ~/.claude/settings.json, which affects all projects — including ones where the plugin is wanted.
Priority
Critical - Blocking my work
Feature Category
CLI commands and flags
Use Case Example
I use the anthropic-skills plugin globally — it's useful for general-purpose work. But I have one project with its own custom skills that cover the same ground. I don't need the plugin there.
Today:
I set all 28 plugin skills to "off" in my project's settings.local.json.
They still load into context every turn. ~4,800 tokens.
Autocompact can't evict them — they're in the system prompt.
My only option is disabling the plugin globally, which breaks my other projects.
With per-project enabledPlugins:
I add "anthropic-skills": false to my project's .claude/settings.json.
No descriptions load. 4,800 tokens freed.
The plugin still works in every other project.
Additional Context
No response