# 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@<marketplace-id>
```

## 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
  }
}
```
