Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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 (so `npx claude-mem@X.Y.Z` resolves) is handed off to the human maintainer, who raised npm security.
.claude/skills/thedotmack-version-bump/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 50% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 72% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 76% | 0% |
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.
git remote -v.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 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 manifestVerify coverage before editing: git grep -l "\"version\": \"<OLD>\"" should list all eight. If a new manifest has been added since this doc was last updated, update this list.
CHANGELOG.md — it's regenerated.git grep -n "\"version\": \"<NEW>\"" — confirm all eight files match. git grep -n "\"version\": \"<OLD>\"" — should return zero hits.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.git add -A && git commit -m "chore: bump version to X.Y.Z".git tag -a vX.Y.Z -m "Version X.Y.Z".git push origin main && git push origin vX.Y.Z.gh release create vX.Y.Z --title "vX.Y.Z" --notes "RELEASE_NOTES".bash npm run changelog:generate (Runs node scripts/generate-changelog.js, which pulls releases from the GitHub API and rewrites CHANGELOG.md.)
CHANGELOG.md.changelog are pushed; confirm the release worktree has no pending tracked changes; and ensure its build dependencies are present because prepublishOnly rebuilds the package. If npm view claude-mem@X.Y.Z version already resolves, skip the handoff and continue with post-publish checks.
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 (or np / npm run release:*, which also publish). Give the exact release-worktree path and this command as the only requested action: bash npm publish # run by the HUMAN — prepublishOnly rebuilds the package Wait for confirmation. Do not ask the human to perform any other release step afterward.
both the exact version and the latest dist-tag: bash npm view claude-mem@X.Y.Z version npm view claude-mem version If 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 .env with webhook details lives: bash cd ~/Scripts/claude-mem/ && npm run discord:notify vX.Y.Z Do this only after npm verification, and even when the release worktree does not have a local .env.
git status — working tree must be clean and everything mustbe pushed. Only automated verification, notification, and cleanup may occur after the final human handoff.
git grep for old version returns zero hitsnpm run build-and-sync succeededCHANGELOG.md updated and pushedlatest both verified after the human publishes~/Scripts/claude-mem/ only after npm verificationgit status shows clean tree| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,624 | 14,999 | -4% | 1 | 1 | 0% | 287 | 1,548 | +439% | 0 | 0 | — |
case-02 | fail→fail | 23,617 | 16,542 | -30% | 1 | 1 | 0% | 1,793 | 1,633 | -9% | 0 | 0 | — |
case-03 | fail→fail | 8,293 | 14,981 | +81% | 1 | 1 | 0% | 392 | 1,625 | +315% | 0 | 0 | — |
case-04 | fail→pass | 20,028 | 10,289 | -49% | 1 | 1 | 0% | 2,270 | 2,186 | -4% | 0 | 0 | — |
case-05 | fail→pass | 15,061 | 8,310 | -45% | 1 | 1 | 0% | 1,395 | 1,835 | +32% | 0 | 0 | — |
case-06 | pass→pass | 11,607 | 7,963 | -31% | 1 | 1 | 0% | 1,181 | 1,849 | +57% | 0 | 0 | — |
case-07 | fail→pass | 16,056 | 13,029 | -19% | 1 | 1 | 0% | 1,899 | 2,843 | +50% | 0 | 0 | — |
case-08 | pass→fail | 9,810 | 16,631 | +70% | 1 | 1 | 0% | 701 | 1,726 | +146% | 0 | 0 | — |
case-09 | pass→pass | 11,967 | 8,898 | -26% | 1 | 1 | 0% | 1,010 | 1,872 | +85% | 0 | 0 | — |
case-10 | fail→pass | 11,510 | 7,950 | -31% | 1 | 1 | 0% | 1,013 | 1,740 | +72% | 0 | 0 | — |
case-11 | fail→pass | 11,540 | 6,836 | -41% | 1 | 1 | 0% | 929 | 1,632 | +76% | 0 | 0 | — |
case-12 | pass→pass | 10,751 | 8,317 | -23% | 1 | 1 | 0% | 811 | 1,757 | +117% | 0 | 0 | — |
case-13 | pass→pass | 12,621 | 7,982 | -37% | 1 | 1 | 0% | 1,121 | 1,835 | +64% | 0 | 0 | — |
case-14 | fail→pass | 5,451 | 8,284 | +52% | 1 | 1 | 0% | 976 | 1,979 | +103% | 0 | 0 | — |
case-15 | pass→pass | 9,882 | 7,709 | -22% | 1 | 1 | 0% | 850 | 1,778 | +109% | 0 | 0 | — |
case-16 | fail→pass | 16,856 | 11,442 | -32% | 1 | 1 | 0% | 1,984 | 2,327 | +17% | 0 | 0 | — |
case-17 | pass→pass | 13,029 | 8,280 | -36% | 1 | 1 | 0% | 1,376 | 1,643 | +19% | 0 | 0 | — |
case-18 | pass→pass | 7,939 | 7,577 | -5% | 1 | 1 | 0% | 482 | 1,789 | +271% | 0 | 0 | — |
case-19 | fail→pass | 14,290 | 9,131 | -36% | 1 | 1 | 0% | 1,607 | 2,085 | +30% | 0 | 0 | — |
case-20 | pass→pass | 17,620 | 12,408 | -30% | 1 | 1 | 0% | 2,128 | 3,239 | +52% | 0 | 0 | — |
case-21 | pass→fail | 9,429 | 18,109 | +92% | 1 | 1 | 0% | 822 | 1,668 | +103% | 0 | 0 | — |
case-22 | pass→pass | 10,381 | 15,589 | +50% | 1 | 1 | 0% | 1,541 | 2,870 | +86% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +27 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/7/2026 | +48% |
Other measured skills in the registry, with their headline benchmark lift.