by voitta-ai
Make a Claude Code / Codex plugin repo tag itself and publish release notes from its manifest version, and make the version bump non-optional. Use when: (1) the repo has merges piling up with no tags, no GitHub releases, or tags that exist but have no release attached, (2) a CONTRIBUTING/CLAUDE.md rule says "bump the version on every shipping merge" and nothing enforces it, (3) you are hand-running `git tag -a vX.Y.Z <squash-sha> && git push origin vX.Y.Z` after every merge, (4) you are about to add a CHANGELOG.md to a repo whose PR titles already say what changed, (5) users report `claude plugin update` says "up to date" while master has moved, and you want CI to catch the missing bump instead of users catching it months later, (6) you need the tag to land on the squash commit in a squash-merge repo, (7) two PRs merged minutes apart and the second one's release never appeared even though every check is green. Covers the two-job workflow (PR-side bump gate + push-side tag-and-release), `paths-ignore` as the docs-only exemption, why the gate must NOT be a required status check, idempotence for re-runs and the same-version concurrent-merge gap it leaves (the second tag-and-release run reports success while creating nothing - verify the tag's tree, then ship a bump-only PR), queueing several bumping PRs against the gate (rebase + re-bump; a green gate goes stale because base-branch movement does not re-trigger PR CI), and the multi-plugin case where per-plugin versions are separate cache keys the gate cannot see. Pairs with claude-code-plugin-update-flow, which explains why the version is load-bearing in the first place.
Claude Code