Automatically manages marketplace catalog updates, syncs marketplace.json, and handles plugin distribution when user mentions marketplace update, sync catalog, or add to marketplace. specific to claude-code-plugins two-catalog system.
Limited to specific tools
Additional assets for this skill
This skill is limited to using the following tools:
assets/README.mdreferences/README.mdscripts/README.mddescription: Automatically manages marketplace catalog updates, syncs marketplace.json, and handles plugin distribution when user mentions marketplace update, sync catalog, or add to marketplace. specific to claude-code-plugins two-catalog system. allowed-tools:
Automatically manages the claude-code-plugins marketplace catalog system, handling updates to marketplace.extended.json, syncing to marketplace.json, and ensuring catalog integrity.
Critical Understanding:
marketplace.extended.json (SOURCE OF TRUTH)
├── Full metadata
├── Extended fields (featured, mcpTools, etc.)
└── Edit THIS file manually
↓ npm run sync-marketplace
marketplace.json (GENERATED)
├── CLI-compatible subset
├── Sanitized fields
└── NEVER edit directly
When adding new plugin:
// Add to marketplace.extended.json
{
"name": "plugin-name",
"source": "./plugins/category/plugin-name",
"description": "Clear one-line description",
"version": "1.0.0",
"category": "productivity",
"keywords": ["keyword1", "keyword2"],
"author": {
"name": "Author Name",
"email": "[email protected]"
},
"repository": "https://github.com/user/repo",
"featured": false // true for featured plugins
}
Then:
npm run sync-marketplace
When bumping version:
plugins/category/plugin-name/.claude-plugin/plugin.jsonnpm run sync-marketplacegit diff .claude-plugin/marketplace.jsonAfter sync, verify:
# Check marketplace.json was regenerated
git status .claude-plugin/marketplace.json
# Validate JSON syntax
jq empty .claude-plugin/marketplace.extended.json
jq empty .claude-plugin/marketplace.json
# Check specific plugin entry
jq '.plugins[] | select(.name == "plugin-name")' .claude-plugin/marketplace.json
Mark plugin as featured:
{
"name": "plugin-name",
"featured": true, // Add this field
// ... rest of fields
}
Featured plugins appear first in marketplace.
I automatically verify:
productivity, security, testing, deployment, documentation,
analysis, integration, ai, devops, debugging, code-quality,
design, example, api-development, database, crypto,
performance, ai-ml, other
When I sync marketplace:
Backup Current State
cp .claude-plugin/marketplace.json .claude-plugin/marketplace.json.backup
Run Sync Script
npm run sync-marketplace
# or: node scripts/sync-marketplace.cjs
Validate Output
# Check sync success
jq empty .claude-plugin/marketplace.json
# Verify plugins count
jq '.plugins | length' .claude-plugin/marketplace.json
Check Diff
git diff .claude-plugin/marketplace.json
Commit if Valid
git add .claude-plugin/marketplace.extended.json .claude-plugin/marketplace.json
git commit -m "chore: Update marketplace catalog"
These fields are REMOVED from marketplace.json (CLI):
featured - Extended metadatamcpTools - Extended metadatapluginCount - Extended metadatapricing - Extended metadatacomponents - Extended metadataOnly add these to marketplace.extended.json
Required fields for every plugin:
{
"name": "string (kebab-case)",
"source": "string (relative path from repo root)",
"description": "string (clear, concise)",
"version": "string (semver: x.y.z)",
"category": "string (from valid list)",
"keywords": "array (at least 2)",
"author": {
"name": "string",
"email": "string (valid email)"
}
}
Optional fields:
{
"repository": "string (GitHub URL)",
"homepage": "string (docs URL)",
"license": "string (MIT, Apache-2.0, etc.)",
"featured": "boolean (extended only)",
"mcpTools": "number (extended only)"
}
# Check marketplace.extended.json syntax
jq empty .claude-plugin/marketplace.extended.json
# Common errors:
# - Missing comma
# - Invalid field type
# - Duplicate plugin name
# Regenerate from source
npm run sync-marketplace
# If still fails, check git status
git status .claude-plugin/
# Verify entry exists
jq '.plugins[] | select(.name == "plugin-name")' .claude-plugin/marketplace.extended.json
# Check source path
ls -la ./plugins/category/plugin-name
I can automatically:
📦 MARKETPLACE UPDATE REPORT
Action: Add plugin "new-plugin"
Location: plugins/productivity/new-plugin/
✅ COMPLETED STEPS:
1. Added entry to marketplace.extended.json
2. Ran npm run sync-marketplace
3. Validated marketplace.json
4. Checked for duplicates: NONE
5. Verified source path exists
📊 MARKETPLACE STATS:
Total plugins: 227 (+1)
Categories: 14
Featured: 3
Latest sync: 2025-10-16 14:30 UTC
✨ Ready to commit:
git add .claude-plugin/marketplace.extended.json .claude-plugin/marketplace.json
git commit -m "feat: Add new-plugin to marketplace"
For claude-code-plugins repo:
claude-code-plugins-plus marketplaceUser says: "Add the new security-scanner plugin to marketplace"
I automatically:
User says: "Sync the marketplace catalog"
I automatically:
User says: "Update plugin version in marketplace"
I automatically: