
Claude Code Plugin Release
Ship a Claude Code plugin with aligned semver across manifests, verified builds, npm publish, git tags, GitHub releases, and generated changelogs.
Install
npx skills add https://github.com/thedotmack/claude-mem --skill claude-code-plugin-releaseWhat is this skill?
- Semantic version analysis before bumping (major/minor/patch decision ritual)
- Syncs package.json, marketplace.json, and plugin.json in one workflow
- npm publish so npx claude-mem@X.Y.Z (and peers) resolve correctly
- Build verification gate before tagging or publishing
- Git tagging, GitHub releases, and changelog generation from release metadata (up to 50 releases in generator script)
Adoption & trust: 2.2k installs on skills.sh; 81.2k GitHub stars; 2/3 security scanners passed (skills.sh audits).
Recommended Skills
Release Skillsjimliu/baoyu-skills
Changelog Automationwshobson/agents
Msstore Cligithub/awesome-copilot
Changelog Generatorcomposiohq/awesome-claude-skills
Shopify App Store Reviewshopify/shopify-ai-toolkit
Shipping And Launchaddyosmani/agent-skills
Journey fit
Primary fit
Release is the canonical shelf because the workflow’s purpose is cutting a marketplace-ready plugin version and publishing it—not day-to-day coding. Launch subphase covers version bumps, tagging, GitHub releases, and npm resolution so users can install via npx.
Common Questions / FAQ
Is Claude Code Plugin Release safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Claude Code Plugin Release
#!/usr/bin/env node const fs = require('fs'); function generate() { try { const input = fs.readFileSync(0, 'utf8'); if (!input || input.trim() === '') { process.stderr.write('No input received on stdin '); process.exit(1); } const releases = JSON.parse(input); const lines = ['# Changelog', '', 'All notable changes to this project.', '']; releases.slice(0, 50).forEach(r => { const date = r.published_at.split('T')[0]; lines.push(`## [${r.tag_name}] - ${date}`); lines.push(''); if (r.body) lines.push(r.body.trim()); lines.push(''); }); process.stdout.write(lines.join(' ') + ' '); } catch (err) { process.stderr.write(`Error generating changelog: ${err.message} `); process.exit(1); } } generate(); --- name: claude-code-plugin-release description: Automated semantic versioning and release workflow for Claude Code plugins. Handles version increments across package.json, marketplace.json, plugin.json manifests, npm publishing (so `npx claude-mem@X.Y.Z` resolves), build verification, git tagging, GitHub releases, and changelog generation. --- # Version Bump & Release Workflow **IMPORTANT:** Plan and write detailed release notes before starting. **CRITICAL:** Commit EVERYTHING (including build artifacts). At the end of this workflow, NOTHING should be left uncommitted or unpushed. Run `git status` at the end to verify. ## Preparation 1. **Analyze**: Determine if the change is **PATCH** (bug fixes), **MINOR** (features), or **MAJOR** (breaking). 2. **Environment**: Identify repository owner/name from `git remote -v`. 3. **Paths — every file that carries the version string**: - `package.json` — **the npm/npx-published version** (`npx claude-mem@X.Y.Z` resolves from this) - `plugin/package.json` — bundled plugin runtime deps - `.claude-plugin/marketplace.json` — version inside `plugins[0].version` - `.claude-plugin/plugin.json` — top-level Claude-plugin manifest - `plugin/.claude-plugin/plugin.json` — bundled Claude-plugin manifest - `.codex-plugin/plugin.json` — Codex-plugin manifest - `openclaw/openclaw.plugin.json` — OpenClaw plugin manifest Verify coverage before editing: `git grep -l "\"version\": \"<OLD>\""` should list all seven. If a new manifest has been added since this doc was last updated, update this list. ## Workflow 1. **Update**: Increment the version string in every path above. Do NOT touch `CHANGELOG.md` — it's regenerated. 2. **Verify**: `git grep -n "\"version\": \"<NEW>\""` — confirm all seven files match. `git grep -n "\"version\": \"<OLD>\""` — should return zero hits. 3. **Build and sync**: `npm run build-and-sync` to regenerate artifacts, sync the local marketplace copy, restart the worker, and clear the queue. Do not use plain `npm run build` for release validation because it can leave the local marketplace/worker out of sync. 4. **Commit**: `git add -A && git commit -m "chore: bump version to X.Y.Z"`. 5. **Tag**: `git tag -a vX.Y.Z -m "Version X.Y.Z"`. 6. **Push**: `git push origin main && git push origin vX.Y.Z`. 7. **Publish to npm** (this is what makes `npx claude-mem@X.Y.Z` work): ```bash npm publish ``` The `prepublishOnly` script re-runs the package build automatically. After publish, run `npm run build-and-sync` again if the publish build touched local artifacts. Confirm publish succeeded: ```bash npm view claude-mem@X.Y.Z version # should print X.Y.Z ``` Alternative: `npm run release:patch` / `release:minor` / `release:major` invokes `np` and handles tag+push+publish in one shot — use ONLY if you skipped steps 4–6, otherwise `np` will error on the existing tag. 8. **GitHub release**: `gh release create vX.Y.Z --title "vX.Y.Z" --notes "RELEASE_NOTES"`. 9. **Changelog**: Regenerate via the project's changelog script: ```bash npm run changelog:generate ``` (Runs `node scripts/generate-changelog.js`, which p