- name
- release
- description
- Plugin release process for MAG Claude Plugins marketplace. Covers version bumping, marketplace.json updates, git tagging, and common mistakes. Use when releasing new plugin versions or troubleshooting update issues.
# Plugin Release Process
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**:
1. **`plugins/{plugin-name}/plugin.json`** - The plugin's own version metadata
2. **`.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 update` which reads `marketplace.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` - Update `version` field
- [ ] `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:
1. **Marketplace metadata version** (line ~10):
```json
"metadata": {
"version": "3.3.0" // ← Update this
}
```
2. **Specific plugin version** (in plugins array):
```json
"plugins": [
{
"name": "frontend",
"version": "3.3.0", // ← Update this (CRITICAL!)
"description": "..." // ← Update if description changed
}
]
```
### Step 4: Commit and Tag
```bash
# 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
```bash
/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:**
```bash
# 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:**
1. ✅ Update `plugins/{plugin}/plugin.json` version
2. ✅ Update `.claude-plugin/marketplace.json` plugin version ⚠️ **CRITICAL**
3. ✅ Update `CHANGELOG.md`, `RELEASES.md`, `CLAUDE.md`
4. ✅ Commit: `git commit -m "feat({plugin}): v{X.Y.Z} - {summary}"`
5. ✅ Tag: `git tag -a plugins/{plugin}/v{X.Y.Z} -m "..."`
6. ✅ Push: `git push origin main && git push origin plugins/{plugin}/v{X.Y.Z}`
7. ✅ Verify: `/plugin marketplace update` shows new version
---
## Example Release
```bash
# 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](../../RELEASE_PROCESS.md) - Full detailed documentation
**Last Updated:** November 13, 2025
Ver no GitHub