ci(release): generate the plugin version after the npm version bump#128
Conversation
@semantic-release/exec (which runs generate:skill-docs -> generate:plugin-version) was ordered before @semantic-release/npm, so sync-plugin-version.js read the pre-bump package.json version and the .claude-plugin manifests lagged a release: 0.8.61 shipped with 0.8.60 manifests, failing the "Verify plugin manifests" check. Move @semantic-release/npm ahead of @semantic-release/exec, and sync the manifests to the current 0.8.61. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Review
This is a CI configuration fix — dimensions 1–5 (component correctness, accessibility, CSS, styling, tests) are N/A. Review focuses on dimension 6 and the release-pipeline logic.
Root cause — correct
@semantic-release/exec (which runs generate:skill-docs → reads package.json for the plugin version) was listed before @semantic-release/npm in the prepare phase. Because @semantic-release/npm is what actually writes the bumped version into package.json, sync-plugin-version.js always read the previous version. The result: 0.8.61 shipped with 0.8.60 manifests.
Fix — correct
Swapping the order so @semantic-release/npm runs first means package.json is already at the new version when generate:skill-docs executes.
The full prepare chain after this PR:
| Step | Plugin | Effect |
|---|---|---|
| 1 | @semantic-release/changelog |
Writes CHANGELOG.md with nextRelease.version (from context, not package.json) |
| 2 | @semantic-release/npm |
Bumps package.json to new version |
| 3 | @semantic-release/exec |
generate:skill-docs reads bumped package.json + updated CHANGELOG.md ✓ |
| 4 | @semantic-release/git |
Commits all assets |
Step 3 now sees the right version for both inputs it depends on. ✅
Manual catch-up bump (0.8.60 → 0.8.61) — appropriate
The ci: commit type doesn't trigger a release, so bumping the manifests here is the right way to fix the one-off desync without creating a spurious release.
No issues found
The fix is minimal, correct, and well-scoped. No follow-up changes needed.
@semantic-release/exec (which runs generate:skill-docs -> generate:plugin-version) was ordered before @semantic-release/npm, so sync-plugin-version.js read the pre-bump package.json version and the .claude-plugin manifests lagged a release: 0.8.61 shipped with 0.8.60 manifests, failing the "Verify plugin manifests" check. Move @semantic-release/npm ahead of @semantic-release/exec, and sync the manifests to the current 0.8.61.