The four commands
| Command | Effect |
|---|---|
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 list | Show 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-official — name@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 + marketplaceThe 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.mdAt 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.
Bundled surfaces — quick links
-
Skills — on-demand playbooks under
skills/<name>/SKILL.md. -
Prompt templates — Markdown slash commands under
commands/. -
Hooks — lifecycle handlers under
hooks/pre/andhooks/post/. -
Custom tools — TypeBox-schema’d tools under
tools/<name>/index.ts. -
MCP servers — extra
mcpServersentries via the plugin’smcp.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.
Related
-
Slash commands —
/marketplaceand/pluginsinteractive surfaces. -
Settings — per-plugin enable/disable via
disabledExtensions.\n