# Release

> 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.

- Skill: `diegosouzapw/release-6` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/release-6`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/release-6/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/diegosouzapw/release-6

---


# 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

