Skillshub marketplace-manager
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.
git clone https://github.com/ComeOnOliver/skillshub
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/marketplace-manager" ~/.claude/skills/comeonoliver-skillshub-marketplace-manager && rm -rf "$T"
skills/jeremylongshore/claude-code-plugins-plus-skills/marketplace-manager/SKILL.mdMarketplace Manager
Purpose
Automatically manages the claude-code-plugins marketplace catalog system, handling updates to marketplace.extended.json, syncing to marketplace.json, and ensuring catalog integrity.
Trigger Keywords
- "update marketplace"
- "sync marketplace" or "sync catalog"
- "add to marketplace"
- "marketplace catalog"
- "update catalog"
- "regenerate marketplace"
Two-Catalog System
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
Marketplace Management Tasks
1. Add Plugin to Catalog
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
2. Update Plugin Version
When bumping version:
- Update
plugins/category/plugin-name/.claude-plugin/plugin.json - Update marketplace.extended.json entry
- Run
npm run sync-marketplace - Validate sync worked:
git diff .claude-plugin/marketplace.json
3. Sync Validation
After 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
4. Featured Plugin Management
Mark plugin as featured:
{ "name": "plugin-name", "featured": true, // Add this field // ... rest of fields }
Featured plugins appear first in marketplace.
5. Catalog Integrity Checks
I automatically verify:
- ✅ No duplicate plugin names
- ✅ All source paths exist
- ✅ All plugins have required fields
- ✅ Versions are semantic (x.y.z)
- ✅ Categories are valid
- ✅ JSON is valid
- ✅ Sync is current (no uncommitted changes to marketplace.json)
Valid Categories
productivity, security, testing, deployment, documentation, analysis, integration, ai, devops, debugging, code-quality, design, example, api-development, database, crypto, performance, ai-ml, other
Sync Process
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"
Sanitized Fields
These fields are REMOVED from marketplace.json (CLI):
- Extended metadatafeatured
- Extended metadatamcpTools
- Extended metadatapluginCount
- Extended metadatapricing
- Extended metadatacomponents
Only add these to marketplace.extended.json
Marketplace Schema
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)" }
Common Issues & Fixes
Issue: Sync fails with schema error
# Check marketplace.extended.json syntax jq empty .claude-plugin/marketplace.extended.json # Common errors: # - Missing comma # - Invalid field type # - Duplicate plugin name
Issue: marketplace.json out of sync
# Regenerate from source npm run sync-marketplace # If still fails, check git status git status .claude-plugin/
Issue: Plugin not appearing
# Verify entry exists jq '.plugins[] | select(.name == "plugin-name")' .claude-plugin/marketplace.extended.json # Check source path ls -la ./plugins/category/plugin-name
Automation
I can automatically:
- Add plugin entries with all required fields
- Update version across plugin + catalog
- Sync marketplace.json
- Validate catalog integrity
- Check for duplicates
- Fix common issues
Output Format
📦 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"
Repository-Specific Features
For claude-code-plugins repo:
- Manages
marketplaceclaude-code-plugins-plus - Handles both extended and CLI catalogs
- Validates against repository structure
- Checks plugin count accuracy
- Ensures featured plugins are quality plugins
Examples
User says: "Add the new security-scanner plugin to marketplace"
I automatically:
- Read plugin.json for metadata
- Add entry to marketplace.extended.json
- Run npm run sync-marketplace
- Validate both catalogs
- Check no duplicates
- Report success
User says: "Sync the marketplace catalog"
I automatically:
- Run npm run sync-marketplace
- Validate marketplace.json generated
- Check git diff
- Report changes
User says: "Update plugin version in marketplace"
I automatically:
- Find plugin entry
- Update version in marketplace.extended.json
- Sync marketplace.json
- Validate versions match
- Report success