The four commands

CommandEffect
omp install <source>Install a plugin into ~/.omp/plugins/.
omp remove <name>Uninstall a plugin and unregister its surfaces.
omp update [name]Re-fetch one plugin or every installed plugin.
omp listShow every installed plugin with source, version, and scope.

Pass -l (or --scope project) to install/remove/update to operate on .omp/plugins/ in the current repo instead. Project installs shadow user installs of the same plugin. Commit .omp/plugins/installed_plugins.json to share a plugin set with your team without forcing it on their global setup.

Sources

Every omp install source resolves to one of:

npm package omp install @scope/plugin-foo. Bare names and scoped names both work; semver ranges are accepted as name@^1.2. Git repository omp install github:user/repo, omp install https://github.com/user/repo.git, or a Git URL with a ref: user/repo#tag. Local path omp install ./path/to/plugin — useful while developing one. omp symlinks the directory and watches it for changes. Marketplace plugin omp install code-review@claude-plugins-officialname@marketplace form, after the catalog is added with omp marketplace add <source>.

Marketplace catalogs

A marketplace is a Git repository (or local directory) with a .claude-plugin/marketplace.json catalog at its root. Adding one makes its plugin set installable by short name.

omp marketplace add anthropics/claude-plugins-official
omp marketplace discover           # browse plugins in the catalog
omp install code-review@claude-plugins-official
omp list                           # everything installed, npm + marketplace

The marketplace surface is Claude-Code-compatible — existing catalogs work as-is. Interactive equivalents live under /marketplace and /plugins inside omp; see slash commands.

What a plugin can bundle

A plugin’s root layout mirrors the extension directories. Each subfolder is optional.

my-plugin/
  plugin.json              # name, version, description, entry points
  skills/<name>/SKILL.md   # → /docs/skills
  commands/<name>.md       # → /docs/prompt-templates
  hooks/pre/*.ts           # → /docs/hooks
  hooks/post/*.ts
  tools/<name>/index.ts    # → /docs/custom-tools
  mcp.json                 # → /docs/mcp
  themes/<name>.json       # → /docs/themes
  README.md

At install time, omp merges each subdirectory into its corresponding discovery surface. The plugin’s mcp.json contributes additional mcpServers entries; its themes/ directory contributes additional theme files; and so on. Uninstalling reverses all of it.

  • Skills — on-demand playbooks under skills/<name>/SKILL.md.

  • Prompt templates — Markdown slash commands under commands/.

  • Hooks — lifecycle handlers under hooks/pre/ and hooks/post/.

  • Custom tools — TypeBox-schema’d tools under tools/<name>/index.ts.

  • MCP servers — extra mcpServers entries via the plugin’s mcp.json.

  • Themes — palettes under themes/<name>.json.

Listing what loaded

omp list shows installed plugins; omp -p '/extensions' shows the per-surface view — every skill, command, hook, tool, MCP server, and theme that resolved on this session, with the plugin or directory that supplied it.

Security

A plugin can register hooks that run on every prompt, custom tools the model may call without confirmation, and MCP servers that talk to remote services with your tokens. Install only from sources you trust — you are running arbitrary TypeScript on every turn.

Audit a plugin before installing: clone the source, read its hooks/ and tools/, and skim its mcp.json. Prefer project-scoped installs (-l) for code you have not vetted, and pin to a specific Git tag or npm version rather than tracking main. The same caveats apply to marketplace catalogs — vet the catalog repo before adding it.

  • Slash commands/marketplace and /plugins interactive surfaces.

  • Settings — per-plugin enable/disable via disabledExtensions.\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