Complete guide for releasing new versions of plugins in the MAG Claude Plugins marketplace.
Critical Understanding
Claude Code plugin discovery works through TWO configuration files that MUST BOTH BE UPDATED:
plugins/{plugin-name}/plugin.json- The plugin's own version metadata.claude-plugin/marketplace.json- The marketplace catalog (what users see when browsing)
Why both?
plugin.json- Defines the plugin itself (agents, commands, version)marketplace.json- The "catalog" that Claude Code reads for plugin discovery- Users run
/plugin marketplace updatewhich readsmarketplace.json - If you only update
plugin.json, users won't see the new version!
Release Checklist
Step 1: Update Plugin Files
-
plugins/{plugin-name}/plugin.json- Updateversionfield -
plugins/{plugin-name}/agents/*.md- Add new agents (if any) -
plugins/{plugin-name}/commands/*.md- Update commands (if any) -
plugins/{plugin-name}/skills/*/SKILL.md- Add new skills (if any)
Step 2: Update Documentation
-
CHANGELOG.md- Add new version entry at the top -
RELEASES.md- Add detailed release notes at the top -
CLAUDE.md- Update ALL version references (6+ locations)
Step 3: ⚠️ CRITICAL - Update Marketplace Catalog
File: .claude-plugin/marketplace.json
Update TWO fields:
-
Marketplace metadata version (line ~10):
"metadata": { "version": "3.3.0" // ← Update this } -
Specific plugin version (in plugins array):
"plugins": [ { "name": "frontend", "version": "3.3.0", // ← Update this (CRITICAL!) "description": "..." // ← Update if description changed } ]
Step 4: Commit and Tag
# Commit all changes
git add -A
git commit -m "feat({plugin}): v{X.Y.Z} - {Feature summary}"
# Create tag (format: plugins/{plugin-name}/v{X.Y.Z})
git tag -a plugins/{plugin}/v{X.Y.Z} -m "..."
# Push
git push origin main
git push origin plugins/{plugin}/v{X.Y.Z}
Step 5: Verify
/plugin marketplace update mag-claude-plugins
# Should show new version ✅
Common Mistakes
❌ #1: Forgot to update marketplace.json
Symptom: Users still see old version after /plugin marketplace update
Fix:
# Update .claude-plugin/marketplace.json
vim .claude-plugin/marketplace.json
# Update plugins[].version field
git add .claude-plugin/marketplace.json
git commit -m "fix(marketplace): Update {plugin} version to v{X.Y.Z}"
git push origin main
❌ #2: Wrong git tag format
Wrong: frontend-v3.3.0, v3.3.0, frontend/v3.3.0
Correct: plugins/frontend/v3.3.0 ✅
❌ #3: Inconsistent versions
Problem: plugin.json says v3.3.0 but marketplace.json says v3.2.0
Prevention: Use checklist, search for old version: grep -r "3.2.0" .
Version Numbering
MAJOR (X.0.0): Breaking changes (removed agents, changed behavior) MINOR (x.Y.0): New features (new agents/commands, backward compatible) PATCH (x.y.Z): Bug fixes (no new features, backward compatible)
Quick Reference
Minimal checklist:
- ✅ Update
plugins/{plugin}/plugin.jsonversion - ✅ Update
.claude-plugin/marketplace.jsonplugin version ⚠️ CRITICAL - ✅ Update
CHANGELOG.md,RELEASES.md,CLAUDE.md - ✅ Commit:
git commit -m "feat({plugin}): v{X.Y.Z} - {summary}" - ✅ Tag:
git tag -a plugins/{plugin}/v{X.Y.Z} -m "..." - ✅ Push:
git push origin main && git push origin plugins/{plugin}/v{X.Y.Z} - ✅ Verify:
/plugin marketplace updateshows new version
Example Release
# 1. Update versions
vim plugins/frontend/plugin.json # version: "3.3.0"
vim .claude-plugin/marketplace.json # plugins[0].version: "3.3.0" ← DON'T FORGET!
vim CHANGELOG.md RELEASES.md CLAUDE.md
# 2. Commit
git add -A
git commit -m "feat(frontend): v3.3.0 - Multi-Model Plan Review"
# 3. Tag
git tag -a plugins/frontend/v3.3.0 -m "Frontend Plugin v3.3.0"
# 4. Push
git push origin main
git push origin plugins/frontend/v3.3.0
# 5. Verify
/plugin marketplace update mag-claude-plugins
# Output: frontend v3.3.0 ✅
Troubleshooting
Q: Users still see old version
A: Check .claude-plugin/marketplace.json - version must match plugin.json
Q: Tag already exists
A: git tag -d {tag} then git push origin :{tag} then recreate
Q: How to test locally?
A: /plugin marketplace add /path/to/claude-code
Related: RELEASE_PROCESS.md - Full detailed documentation
Last Updated: November 13, 2025