# Plugin Registration How to make a plugin discoverable and installable in a marketplace. ## Registry file `.claude-plugin/marketplace.json` at the host repo's root controls which plugins are discoverable and installable. ## Adding a plugin Add an entry to the `plugins` array: ```json { "name": "plugin-name", "source": "./plugin-name", "description": "Brief description of what it does" } ``` **Required fields:** - `name` - Plugin identifier (must match directory name) - `source` - Relative path to plugin directory (may be nested, e.g. `./plugins/plugin-name`) - `description` - One-line description for discovery Prefer the `register`/`unregister` operations of `${CLAUDE_PLUGIN_ROOT}/workflows/plugin-config.md` (backed by `plugin_config.rb`) over hand-editing this file — the script verifies the write and supports `--marketplace_file` to target a marketplace.json anywhere on disk. If no marketplace file exists at all, marketplace checks are skipped rather than failing. ## Checklist 1. Plugin directory exists with `.claude-plugin/plugin.json` 2. Entry added to `.claude-plugin/marketplace.json` 3. Description matches between both files ## Verification After registering, the plugin should be installable via: ``` /install plugin-name@ ``` ## Project-Scoped Installation After `/install plugin@marketplace --scope=project`: 1. Plugin is registered in `~/.claude/plugins/installed_plugins.json` 2. **REQUIRED**: Enable in project via `/enable-plugin` or manually add to `.claude/settings.json` Without step 2, the plugin will not activate in the project context. ### Manual Enablement If not using `/enable-plugin`, create or update `.claude/settings.json` in the target project: ```json { "enabledPlugins": { "{plugin-name}@{marketplace-id}": true } } ``` Example: ```json { "enabledPlugins": { "decomposer@cc-plugins": true } } ```