A marketplace is a Git repository (or local directory) that publishes a single catalog file at .claude-plugin/marketplace.json. The catalog lists plugins and where to fetch each one. Add the catalog once, then install its plugins by name@marketplace without remembering the underlying Git URL.
Adding a source
/marketplace add anthropics/claude-plugins-official
/marketplace add ./my-local-marketplace
/marketplace add https://github.com/org/catalog.gitomp plugin marketplace add <source> works from the shell. The source is classified by shape:
| Source format | Resolves as |
|---|---|
owner/repo | GitHub shorthand |
https://….git or git@… | Git repository |
https://….json | Direct catalog URL |
./path, ~/path, /path | Local directory |
omp clones (or reads) the source, validates .claude-plugin/marketplace.json, and caches the catalog under ~/.omp/plugins/cache/marketplaces/. Run /marketplace update [name] to re-fetch; /marketplace remove <name> to drop it.
Browsing and installing
Type /marketplace with no arguments to open the interactive browser. To install directly:
/marketplace install code-review@claude-plugins-official
/marketplace install --scope project my-plugin@my-marketplace
/marketplace install --force name@marketplace # reinstallCLI equivalents live under omp plugin install. Scope defaults to user (available everywhere, recorded in ~/.omp/plugins/installed_plugins.json); pass --scope project to install only into the current repo’s .omp/plugins/installed_plugins.json — project installs shadow user installs of the same plugin.
omp -p '/extensions' lists every surface that loaded this session, including which plugin and marketplace each came from.
Catalog shape
The catalog must live at .claude-plugin/marketplace.json in the repository root.
{
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
"name": "acme-plugins",
"owner": { "name": "Acme Corp", "email": "plugins@acme.example" },
"metadata": { "description": "Official Acme plugins for omp" },
"plugins": [
{
"name": "acme-linter",
"description": "Enforce Acme coding standards",
"category": "development",
"source": "./plugins/linter"
}
]
}Top-level fields: name (lowercase alphanumeric plus - and ., max 64 chars), owner.name, and plugins are required. metadata.description, owner.email, and metadata.pluginRoot (a prefix prepended to relative plugin sources) are optional.
Each plugin entry needs name and source. Optional fields: description, version, author, homepage, category, tags.
Plugin sources
The source on each entry decides where omp fetches the plugin from:
| Form | Shape |
|---|---|
| Relative path | "./plugins/foo" — a subdirectory of the marketplace repo |
| Git URL | { "source": "url", "url": "….git", "ref": "main", "sha": "…" } |
| GitHub shorthand | { "source": "github", "repo": "org/repo", "ref": "v1.0" } |
| Git subdirectory | { "source": "git-subdir", "url": "…", "path": "packages/foo" } |
| npm | { "source": "npm", "package": "@scope/foo", "version": "1.2.0" } |
Pin sha to lock a plugin to an exact commit. Relative paths that escape the marketplace root and subdirectory paths that escape the cloned repo are rejected. npm sources are parsed but not yet installable — use a Git-based or relative source.
Authoring a marketplace
Create a Git repository with this layout:
my-marketplace/
.claude-plugin/
marketplace.json
plugins/
my-plugin/ ← a plugin tree, see /docs/pluginsA working marketplace.json is as small as:
{
"name": "my-marketplace",
"owner": { "name": "Your Name" },
"plugins": [{ "name": "my-plugin", "source": "./plugins/my-plugin" }]
}Push it to GitHub and share the owner/repo string. Users run /marketplace add owner/repo and then /marketplace install my-plugin@my-marketplace. Test locally first with /marketplace add ./my-marketplace — local directories are first-class sources.
Trust
A marketplace is a list of pointers; the code that runs on your machine is whatever the plugin entries resolve to. There is no signing, no sandbox, no central review. A catalog can ship a plugin that registers hooks firing on every prompt or custom tools the model calls without confirmation.
Vet the catalog repo before /marketplace add. Vet each plugin’s source before install. Pin to a sha or tagged ref rather than tracking main. Prefer --scope project for anything you have not read yourself.