.claude/skills/manage-plugins/SKILL.md
Use when the user wants to add, remove, update, list, or sync plugins in this marketplace. Covers both remote (GitHub) and local plugin management, keeping marketplace.json and README.md in sync.
npx skillsauth add jason-hchsieh/marketplace manage-pluginsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You manage the plugin catalog for this marketplace. Every operation MUST keep two files consistent:
.claude-plugin/marketplace.json (source of truth)README.md (generated tables){
"name": "jasonhch-plugins",
"owner": { "name": "Jason" },
"metadata": { "description": "Personal Claude Code plugins" },
"plugins": [
{
"name": "<plugin-name>",
"source": "<source>",
"description": "<description>"
}
]
}
Source formats:
{ "source": "github", "repo": "<owner>/<repo>" }{ "source": "github", "repo": "<owner>/<repo>", "path": "<path>" }"./plugins/<name>" (string, not object)Located at plugins/<name>/.claude-plugin/plugin.json:
{
"name": "<plugin-name>",
"version": "1.0.0",
"description": "<description>"
}
README tables use these categories in this fixed order. Assign each plugin to exactly one:
*-lsp)*-output-style)When the user doesn't specify a category, infer from the plugin name and description. Ask if ambiguous.
Each category section looks like:
### <Category Name>
| Plugin | Description | Source |
|--------|-------------|--------|
| <name> | <description> | <source-link> |
Source column rules:
| Source type | Link text | URL |
|---|---|---|
| anthropics/claude-plugins-official with path | claude-plugins-official | https://github.com/anthropics/claude-plugins-official/tree/main/<path> |
| Other GitHub repo with path | <owner>/<repo> | https://github.com/<owner>/<repo>/tree/main/<path> |
| GitHub repo root (no path) | <owner>/<repo> | https://github.com/<owner>/<repo> |
| Local (./plugins/<name>) | Local | (no link) |
Trigger: User provides a GitHub URL or owner/repo reference.
Steps:
owner, repo, and optional path.gh api "repos/<owner>/<repo>/contents/<path>/.claude-plugin/plugin.json" --jq '.content' | base64 -d
If no path, try the repo root. If the manifest is not found, ask the user for name and description.{ "source": "github", "repo": "<owner>/<repo>", "path": "<path>" }{ "source": "github", "repo": "<owner>/<repo>" }.claude-plugin/marketplace.json for duplicate names. Abort if duplicate found.plugins array in marketplace.json.Trigger: User asks to create/scaffold a new local plugin.
Steps:
plugins/<name>/
├── .claude-plugin/
│ └── plugin.json
└── (requested components)
plugin.json with name, version: "1.0.0", and description.marketplace.json with source "./plugins/<name>".Local.Trigger: User asks to remove/delete a plugin.
Steps:
marketplace.json.plugins array../plugins/<name> source), ask the user whether to also delete the directory. Only delete if confirmed.Trigger: User asks to change a plugin's description, source, category, or name.
Steps:
marketplace.json.marketplace.json entry.plugin.json.plugin.json.Trigger: User asks to list or show plugins.
Steps:
marketplace.json and group plugins by category.marketplace.json appears in README and vice versa../plugins/<name>) have a corresponding directory with plugin.json.Trigger: User asks to sync, regenerate, or fix README tables.
Steps:
marketplace.json as the source of truth.## Available Plugins and ## Structure, preserving the fixed category order.Before writing any file, verify:
marketplace.jsonjq to verify if unsure)./plugins/<name>) have a matching directoryWhen creating plugin components, refer to these docs for correct formats:
.mcp.jsontools
Bootstrap versioning for a project - detect project type, initialize git-cliff config, and generate initial CHANGELOG.md using semantic versioning
development
Validate version consistency across all project files, check semver format, git tag alignment, and changelog synchronization per https://semver.org/
tools
Generate or update CHANGELOG.md using git-cliff from conventional commit history - see https://git-cliff.org/docs/category/usage
tools
Bump the project version following semver, update all version files per https://semver.org/