plugin/skills/version-bump/SKILL.md
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.
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 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.
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 eight files match. git grep -n "\"version\": \"<OLD>\"" — should return zero hits.
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.
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 rewrites CHANGELOG.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
prepublishOnly rebuilds the package. If npm view [email protected] version
already 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 (or np / 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 package
Wait 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 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:
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.
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.
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