cc-os/plugins/cc-architect/references/layout/plugin-registration.md

76 lines
1.9 KiB
Markdown
Raw Permalink Normal View History

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