Claude Code plugins¶
- ID
claude-code-plugins- Home page
- Platforms
🐧 Linux · 🍎 macOS · 🪟 Windows
- Operations
installed·install·upgrade·remove·sync·cleanup- purl types
pkg:claude-code-plugins- CLI name
claude- Issues and PRs
- Source
Claude Code’s own plugin system
(https://docs.claude.com/en/docs/claude-code/plugins), driven through the
claude plugin command surface.
A package is a plugin identified as name@marketplace, and every verb takes
that form: it is what the listing reports and what install, uninstall and
update all accept, so ids round-trip without translation. A marketplace is
the registry, added from a URL, a path or a GitHub repository, and several
can be configured at once, which is why the marketplace half of the id is
part of the identity rather than decoration.
Parsing notes, verified against Claude Code 2.1.236 on macOS:
The inventory is
claude plugin list --json. The default output is a multi-line record per plugin, an❯ idline followed by indentedVersion:,Scope:andStatus:lines, which no per-line pattern can reduce. The JSON form is a flat top-level array carrying both fields this needs.claude plugin list --json --availableis not a search source: it answers with an object keyedinstalledandavailablerather than an array, so declaringsearchwould pull the whole manager into a class.No
upgrade_all:claude plugin updaterequires a plugin argument and offers no--all.No
outdated: nothing reports staleness without acting on it.syncrefreshes every configured marketplace at once,updatetaking an optional name and updating all of them when given none.
Note
claude plugin prune --dry-run lists the auto-installed dependencies that
cleanup_orphan removes, which is the shape orphans wants. It is left undeclared
because no populated sample could be captured: the drive host had no
auto-installed plugin to strand.
What mpm adds to claude-code-plugins¶
mpm reaches across every manager at once, not claude-code-plugins alone: mpm installed and mpm outdated cover claude-code-plugins alongside every other manager you run in one table, mpm upgrade --all updates them together, and mpm sbom exports the whole machine as one bill of materials.
Every mpm command also gains --dry-run and --plan previews, cross-scheme version comparison and purl identifiers. See manager augmentations for how each one is built.
Your claude-code-plugins commands, in mpm¶
You already know claude-code-plugins: each operation maps one-to-one onto mpm, in an interface shared by every manager.
To… |
With |
With |
|---|---|---|
List what’s installed |
|
|
Install a package |
|
|
Upgrade one package |
|
|
Remove a package |
|
|
Prefix any command above with --dry-run to simulate the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.
Operations¶
Operation |
Supported |
Notes |
|---|---|---|
|
✓ |
|
|
||
|
||
|
||
|
✓ |
|
|
✓ |
|
|
||
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
Selecting and configuring claude-code-plugins¶
Deselect claude-code-plugins for a single run with --no-claude-code-plugins, or persist the choice in your configuration:
[mpm]
claude-code-plugins = false
Keep it enabled but tune how mpm drives it with a per-manager override:
[mpm.managers.claude-code-plugins]
timeout = 900
mpm config-template claude-code-plugins prints every overridable attribute as a ready-to-paste block.
Recipes¶
A few jobs you would otherwise script around claude-code-plugins, one mpm command each:
Snapshot and clone a machine:
mpm --claude-code-plugins dump claude-code-plugins.toml, thenmpm restore claude-code-plugins.tomlon the next one.Export a compliance SBOM:
mpm --claude-code-plugins sbom(CycloneDX by default,--spdxfor SPDX).
Privilege escalation¶
mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.
None of its operations needs root.
See privilege escalation for the full policy.
Cooldown¶
State of Claude Code plugins’s release-age gating, from the cooldown support table:
Status: ❌ None (marketplace manifests carry no publication date)
A cooldown only pays off where a compromised release can be withdrawn while the clock runs, and can only be emulated where the registry dates its releases. From the retraction table:
Registry: Claude Code marketplaces
Retraction: Manifest edit: a marketplace is a git repository listing its plugins, so a version is withdrawn by its owner dropping the entry or retagging, with no index in between
Publish date: ❌ neither the listing nor a marketplace manifest carries a publication date
With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --cooldown best-effort opts back in.
Version probe¶
The version is probed by running:
$ claude --version
2.1.236 (Claude Code)
and extracted with:
r"(?P<version>\d+\.\d+\.\d+)\s+\(Claude Code\)"
Reference traces¶
Raw native outputs captured in the bundled definition: the reference mpm’s parsers were written against. If you know Claude Code plugins well and a transcript below looks wrong, or a newer release changed its output format, report it.
$ claude plugin list --json
[
{
"id": "pyright-lsp@claude-plugins-official",
"version": "1.0.0",
"scope": "user",
"enabled": true,
"installPath": "/tmp/mpm-drive/.claude/plugins/cache/claude-plugins-official/pyright-lsp/1.0.0",
"installedAt": "2026-08-30T19:20:57.593Z",
"lastUpdated": "2026-08-30T19:20:57.593Z"
}
]
Feed any of these through mpm and the raw output becomes one uniform table, the same shape for every manager: filter it, project columns, or export it (mpm --claude-code-plugins installed --output json, or csv, toml, yaml), each package carrying a purl and a version comparable across managers.
Changelog¶
8.0.0.dev0(unreleased)Add Claude Code plugins manager, with inventory, install, remove, single-plugin upgrade, marketplace sync and orphan cleanup.