name: add-plugin description: >- Install a Claude Code plugin and register it in settings.json so the full team can replicate the install. Use this whenever adding a new plugin to the project — it keeps settings.json in sync with what is actually installed. argument-hint: >- <name@marketplace> [--repo <owner/repo>] user-invocable: true allowed-tools: Read, Edit, Bash
Add Plugin
Role: implementation. This skill installs a Claude Code plugin and
adds it to .claude/settings.json so the project's plugin set is
reproducible.
You have been invoked with the /add-plugin skill.
Implementation constraints
- Always update settings.json. Installing without registering defeats the purpose — the whole point is reproducibility.
- Derive marketplace from the identifier. The
name@marketplaceformat encodes both; never ask the user to repeat information already in the argument. - Do not duplicate entries. Check settings.json before adding; if the plugin is already registered, report it and stop.
- Be concise. Report only the outcome — no narration of each step.
Parse Arguments
Arguments: $ARGUMENTS
Required: plugin identifier ($0) in name@marketplace format —
e.g. skill-creator@claude-plugins-official or refactoring@refactoring.
Optional:
--repo <owner/repo>: GitHub repository to register as the marketplace source before installing (e.g.elifiner/refactoring). Required for plugins not on an official marketplace.
Steps
1. Parse arguments
Extract:
NAME— the part before@in$0MARKETPLACE— the part after@in$0REPO— value of--repo, or empty string if not provided
2. Check for existing registration
Read .claude/settings.json. If enabledPlugins already contains
"<NAME>@<MARKETPLACE>": true, report:
<NAME>@<MARKETPLACE> is already registered in settings.json. Nothing to do.
and stop.
3. Register marketplace (if --repo provided)
If REPO is non-empty, run:
claude plugin marketplace add <REPO>
If this fails, report the error and stop.
4. Install the plugin
Run:
claude plugin install <NAME>@<MARKETPLACE>
If this fails, report the error and stop — do not update settings.json for a plugin that did not install successfully.
5. Add to settings.json
Add to the enabledPlugins object in .claude/settings.json:
"<NAME>@<MARKETPLACE>": true
If a --repo was provided, also add to extraKnownMarketplaces:
"<MARKETPLACE>": {
"source": {
"source": "github",
"repo": "<REPO>"
}
}
6. Report
Installed: <NAME>@<MARKETPLACE>
Repo: <REPO or "official marketplace">
settings.json: updated