[Bug] Project-scoped plugin install not shareable across team clones
Bug Description
Project-scoped plugin install does not work for teammates who clone/pull the repo
What happened
I installed eli5@claude-community with project scope. The only thing added to
the project's .claude/settings.json was an enablement flag:
"enabledPlugins": { "eli5@claude-community": true }
Everything else lives under the user directory:
- Plugin body: ~/.claude/plugins/cache/claude-community/eli5/1.0.0
- Marketplace registration: ~/.claude/plugins/known_marketplaces.json
- Install record (scope: "project"): ~/.claude/plugins/installed_plugins.json
There is not a single eli5-related file anywhere under the project directory.
Why this is a problem
My reason for choosing project scope is to share the setup with my team through
GitHub, so that it just works after they clone or pull. It does not.
.claude/settings.json is tracked by git, so the flag does reach them. But the
source that flag resolves against ("claude-community") is recorded only in
known_marketplaces.json, which lives in the user directory and is never
committed. The plugin body is not in their ~/.claude/plugins/cache/ either.
So the teammate ends up with a plugin enabled by name that cannot be resolved on
their machine, and nothing works until they manually run/plugin marketplace add ... themselves. What gets shared is the intent -- "this
project uses that plugin" -- but not a working state. In that respect I do not
see much practical difference from a local-scope install.
The core of the mismatch, for me, is that installed_plugins.json records
scope: "project" while nothing is actually left in the project.
Note
How to fix it is a design decision, but for reference, two directions came to
mind: allowing the marketplace source to be declared in .claude/settings.json so
it can be fetched on first launch, or copying the plugin body into the project.
For what it is worth, the plugin body here was 16K, while the full source
repository clone was 3.7M.
Environment
Claude Code 2.1.246
macOS 26.1 (Darwin 25.1.0)
Environment Info
- Platform: darwin
- Terminal: Apple_Terminal
- Version: 2.1.246
- Feedback ID: 9e630a77-da9e-4619-a9f1-f5c2456ad838
Errors
[]
Follow-up to my previous report.
I have since found that extraKnownMarketplaces already exists and does let a
repo share the marketplace source. My earlier "Note" suggested this as a new
idea, which was wrong -- apologies.
That does not change the substance of the report, though. The docs state:
"A plugin that only the project's .claude/settings.json enables, and that
comes from an external source such as a GitHub repository or npm package,
doesn't load until the team member installs it."
So even with extraKnownMarketplaces committed, a teammate who clones the repo
still has to run claude plugin install by hand. The marketplace is shared;
the working state is not.