76 lines
1.9 KiB
Markdown
76 lines
1.9 KiB
Markdown
|
|
# 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
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|