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.git

omp plugin marketplace add <source> works from the shell. The source is classified by shape:

Source formatResolves as
owner/repoGitHub shorthand
https://….git or git@…Git repository
https://….jsonDirect catalog URL
./path, ~/path, /pathLocal 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        # reinstall

CLI 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:

FormShape
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/plugins

A 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.

  • Plugins — the units that marketplaces distribute.

  • Skills — on-demand playbooks plugins commonly ship.

  • Hooks — lifecycle code a plugin can register; the main reason to vet a marketplace before adding it.\n

Ask Docs

AI assistant to help answer questions about the documentation. Answers are read-only and cite docs/source.

Hi! How can I help you with the documentation today? Answers are read-only and cite docs/source.

Ctrl+Enter to send