Version Bump & Release Workflow skill
Automated semantic versioning and release workflow for Claude Code plugins.
by thedotmack·Apache-2.0 license·★ 95,634 Stars on the repo·GitHub ↗
npx degit thedotmack/claude-mem/plugin/skills/version-bump#main ~/.claude/skills/version-bumpChecked ·commit main
Files of Version Bump & Release Workflow
Show the full text96 lines
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
Analyze: Determine if the change is PATCH (bug fixes), MINOR (features), or MAJOR (breaking).
Environment: Identify repository owner/name from
git remote -v.Paths — every file that carries the version string:
package.json— the npm/npx-published version (npx [email protected]resolves from this)plugin/package.json— bundled plugin runtime deps.claude-plugin/marketplace.json— version insideplugins[0].version.claude-plugin/plugin.json— top-level Claude-plugin manifestplugin/.claude-plugin/plugin.json— bundled Claude-plugin manifest.codex-plugin/plugin.json— Codex-plugin manifestplugin/.codex-plugin/plugin.json— bundled Codex-plugin manifestopenclaw/openclaw.plugin.json— OpenClaw plugin manifest.grok-plugin/plugin.json— Grok plugin manifestclaude-mem-cursor/.cursor-plugin/plugin.json— Cursor plugin manifestclaude-mem-grok-bot/.cursor-plugin/plugin.json— Grok Bot Cursor plugin manifestREADME.md— the version badge (version-X.Y.Z-green), not a"version"key
Verify coverage before editing:
git grep -l "\"version\": \"<OLD>\""should list the eleven JSON files above, andgit grep -n "version-<OLD>-green"the README badge. If a new manifest has been added since this doc was last updated, update this list.
Workflow
Update: Increment the version string in every path above. Do NOT touch
CHANGELOG.md— it's regenerated.Verify:
git grep -n "\"version\": \"<NEW>\""— confirm all eleven JSON files match, and the README badge readsversion-<NEW>-green.git grep -n "\"version\": \"<OLD>\""— should return zero hits.Build and sync:
npm run build-and-syncto regenerate artifacts, sync the local marketplace copy, restart the worker, and clear the queue. Do not use plainnpm run buildfor release validation because it can leave the local marketplace/worker out of sync.Commit:
git add -A && git commit -m "chore: bump version to X.Y.Z".Tag:
git tag -a vX.Y.Z -m "Version X.Y.Z".Push:
git push origin main && git push origin vX.Y.Z.GitHub release:
gh release create vX.Y.Z --title "vX.Y.Z" --notes "RELEASE_NOTES".Changelog: Regenerate via the project's changelog script:
npm run changelog:generate(Runs
node scripts/generate-changelog.js, which pulls releases from the GitHub API and rewritesCHANGELOG.md.)Sync changelog: Commit and push the updated
CHANGELOG.md.Pre-handoff audit: Verify the release commit, tag, GitHub release, and changelog are pushed; confirm the release worktree has no pending tracked changes; and ensure its build dependencies are present because
prepublishOnlyrebuilds the package. Ifnpm view [email protected] versionalready resolves, skip the handoff and continue with post-publish checks.Final human handoff — publish to npm. Do not stop in the middle of the workflow for npm. Finish every agent-owned preparation above first, then make this the final human-required action.
The human maintainer's credentials/2FA are required. The agent MUST NOT run
npm publish(ornp/npm run release:*, which also publish). Give the exact release-worktree path and this command as the only requested action:npm publish # run by the HUMAN — prepublishOnly rebuilds the packageWait for confirmation. Do not ask the human to perform any other release step afterward.
Post-publish verification and notification: After confirmation, verify both the exact version and the latest dist-tag:
npm view [email protected] version npm view claude-mem versionIf the publish build touched tracked artifacts, run
npm run build-and-sync, review the result, and commit/push any legitimate changes. Then run the Discord notification from~/Scripts/claude-mem/, where the.envwith webhook details lives:cd ~/Scripts/claude-mem/ && npm run discord:notify vX.Y.ZDo this only after npm verification, and even when the release worktree does not have a local
.env.Finalize:
git status— working tree must be clean and everything must be pushed. Only automated verification, notification, and cleanup may occur after the final human handoff.
Checklist
- All twelve version files (eleven JSON manifests and the README badge) have matching versions
-
git grepfor old version returns zero hits -
npm run build-and-syncsucceeded - Git tag created and pushed
- GitHub release created with notes
-
CHANGELOG.mdupdated and pushed - Pre-handoff audit passed; no agent-owned release preparation remains
- NPM publishing handed off as the final human-required action (agent does NOT run it)
- Exact npm version and
latestboth verified after the human publishes - Discord notification run from
~/Scripts/claude-mem/only after npm verification -
git statusshows clean tree
| 1 | |
| 2 | name version-bump |
| 3 | description Automated semantic versioning and release workflow for Claude Code plugins. Handles version increments across package.json, marketplace.json, plugin.json manifests, build verification, git tagging, GitHub releases, and changelog generation. NPM publishing is the final human-required handoff because the maintainer raised npm security. |
| 4 | |
| 5 | |
| 6 | # Version Bump & Release Workflow |
| 7 | |
| 8 | **IMPORTANT:** Plan and write detailed release notes before starting. |
| 9 | |
| 10 | **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. |
| 11 | |
| 12 | ## Preparation |
| 13 | |
| 14 | **Analyze**: Determine if the change is **PATCH** (bug fixes), **MINOR** (features), or **MAJOR** (breaking). |
| 15 | **Environment**: Identify repository owner/name from `git remote -v`. |
| 16 | **Paths — every file that carries the version string**: |
| 17 | `package.json` — **the npm/npx-published version** (`npx [email protected]` resolves from this) |
| 18 | `plugin/package.json` — bundled plugin runtime deps |
| 19 | `.claude-plugin/marketplace.json` — version inside `plugins[0].version` |
| 20 | `.claude-plugin/plugin.json` — top-level Claude-plugin manifest |
| 21 | `plugin/.claude-plugin/plugin.json` — bundled Claude-plugin manifest |
| 22 | `.codex-plugin/plugin.json` — Codex-plugin manifest |
| 23 | `plugin/.codex-plugin/plugin.json` — bundled Codex-plugin manifest |
| 24 | `openclaw/openclaw.plugin.json` — OpenClaw plugin manifest |
| 25 | `.grok-plugin/plugin.json` — Grok plugin manifest |
| 26 | `claude-mem-cursor/.cursor-plugin/plugin.json` — Cursor plugin manifest |
| 27 | `claude-mem-grok-bot/.cursor-plugin/plugin.json` — Grok Bot Cursor plugin manifest |
| 28 | `README.md` — the version badge (`version-X.Y.Z-green`), not a `"version"` key |
| 29 | |
| 30 | Verify coverage before editing: `git grep -l "\"version\": \"<OLD>\""` should list the eleven JSON files above, and `git grep -n "version-<OLD>-green"` the README badge. If a new manifest has been added since this doc was last updated, update this list. |
| 31 | |
| 32 | ## Workflow |
| 33 | |
| 34 | **Update**: Increment the version string in every path above. Do NOT touch `CHANGELOG.md` — it's regenerated. |
| 35 | **Verify**: `git grep -n "\"version\": \"<NEW>\""` — confirm all eleven JSON files match, and the README badge reads `version-<NEW>-green`. `git grep -n "\"version\": \"<OLD>\""` — should return zero hits. |
| 36 | **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. |
| 37 | **Commit**: `git add -A && git commit -m "chore: bump version to X.Y.Z"`. |
| 38 | **Tag**: `git tag -a vX.Y.Z -m "Version X.Y.Z"`. |
| 39 | **Push**: `git push origin main && git push origin vX.Y.Z`. |
| 40 | **GitHub release**: `gh release create vX.Y.Z --title "vX.Y.Z" --notes "RELEASE_NOTES"`. |
| 41 | **Changelog**: Regenerate via the project's changelog script: |
| 42 | |
| 43 | npm run changelog:generate |
| 44 | |
| 45 | (Runs `node scripts/generate-changelog.js`, which pulls releases from the GitHub API and rewrites `CHANGELOG.md`.) |
| 46 | **Sync changelog**: Commit and push the updated `CHANGELOG.md`. |
| 47 | **Pre-handoff audit**: Verify the release commit, tag, GitHub release, and |
| 48 | changelog are pushed; confirm the release worktree has no pending tracked |
| 49 | changes; and ensure its build dependencies are present because |
| 50 | `prepublishOnly` rebuilds the package. If `npm view [email protected] version` |
| 51 | already resolves, skip the handoff and continue with post-publish checks. |
| 52 | **Final human handoff — publish to npm.** Do not stop in the middle of the |
| 53 | workflow for npm. Finish every agent-owned preparation above first, then |
| 54 | make this the final human-required action. |
| 55 | |
| 56 | The human maintainer's credentials/2FA are required. The agent MUST NOT run |
| 57 | `npm publish` (or `np` / `npm run release:*`, which also publish). Give the |
| 58 | exact release-worktree path and this command as the only requested action: |
| 59 | |
| 60 | npm publish # run by the HUMAN — prepublishOnly rebuilds the package |
| 61 | |
| 62 | Wait for confirmation. Do not ask the human to perform any other release |
| 63 | step afterward. |
| 64 | **Post-publish verification and notification**: After confirmation, verify |
| 65 | both the exact version and the latest dist-tag: |
| 66 | |
| 67 | npm view [email protected] version |
| 68 | npm view claude-mem version |
| 69 | |
| 70 | If the publish build touched tracked artifacts, run `npm run build-and-sync`, |
| 71 | review the result, and commit/push any legitimate changes. Then run the |
| 72 | Discord notification from `~/Scripts/claude-mem/`, where the `.env` with |
| 73 | webhook details lives: |
| 74 | |
| 75 | cd ~/Scripts/claude-mem/ && npm run discord:notify vX.Y.Z |
| 76 | |
| 77 | Do this only after npm verification, and even when the release worktree does |
| 78 | not have a local `.env`. |
| 79 | **Finalize**: `git status` — working tree must be clean and everything must |
| 80 | be pushed. Only automated verification, notification, and cleanup may occur |
| 81 | after the final human handoff. |
| 82 | |
| 83 | ## Checklist |
| 84 | |
| 85 | [ ] All twelve version files (eleven JSON manifests and the README badge) have matching versions |
| 86 | [ ] `git grep` for old version returns zero hits |
| 87 | [ ] `npm run build-and-sync` succeeded |
| 88 | [ ] Git tag created and pushed |
| 89 | [ ] GitHub release created with notes |
| 90 | [ ] `CHANGELOG.md` updated and pushed |
| 91 | [ ] Pre-handoff audit passed; no agent-owned release preparation remains |
| 92 | [ ] **NPM publishing handed off as the final human-required action** (agent does NOT run it) |
| 93 | [ ] Exact npm version and `latest` both verified after the human publishes |
| 94 | [ ] Discord notification run from `~/Scripts/claude-mem/` only after npm verification |
| 95 | [ ] `git status` shows clean tree |
| 96 |
Discussion
Alternatives
Browse more free Claude skills or everything in Development.