4dbb11b190
The claude-plugins provider read installed_plugins.json but never the `enabledPlugins` map Claude Code keeps in ~/.claude/settings.json and <project>/.claude/settings(.local).json. Two consequences: a plugin the user switched off for a project still loaded there, and a local-scope install enabled for a project never loaded unless the project directory matched the install's recorded projectPath exactly. Merge enabledPlugins across the same layers Claude Code consults (user settings, then the active project root's and cwd's .claude/settings.json and settings.local.json; later wins) and apply it in listClaudePluginRoots: `false` hides the plugin, `true` opts a local-scope install in regardless of projectPath. Untouched ids keep the existing behavior. Contributing settings files join the cache key. Solves: Claude marketplace plugins loading in the wrong projects Tests: claude-plugins.test.ts — per-project off switch (local wins over settings.json, other projects unaffected) and enabledPlugins:true opt-in for a local install recorded under a parent directory