feat: adopt release-please for per-plugin versioning and releases - #30
Conversation
Installed plugins are cached per version at plugins/cache/<owner>/<plugin>/<version>/, so a change that ships without a version bump never reaches an already-installed box. That is not theoretical: #25 landed the gate-fork `model: sonnet` pin but left procedures at 0.2.1, and a live /how-do-i fork measured after the merge still ran all 39 calls on the parent's model because the cached 0.2.1 copy had no `model:` line. The repo had no workflows at all, so nothing caught it. Manifest mode, one independently versioned+tagged package per plugin (<plugin>-v<version>), with an extra-files json updater pointing at each .claude-plugin/plugin.json `$.version` — that file, not a package.json, is the version an install actually resolves. Manifest is seeded from the current on-main versions, so the first release PR computes from real history rather than re-releasing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 54 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
All four manifest entries now match origin/main's plugin.json exactly, so the first release PR computes from real history instead of re-releasing 0.2.2. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Puts
release-pleasein place so plugin versions are never bumped by hand again.Why now
Installed plugins are cached per version at
plugins/cache/<owner>/<plugin>/<version>/. A change that ships without a version bump never reaches an already-installed box.That is exactly what just happened. PR #25 landed the gate-fork
model: sonnetpin but leftproceduresat0.2.1. Measured on this machine after the merge:procedures/0.2.1/skills/how-do-i/SKILL.mdhad nomodel:line at all (diffvsorigin/mainshows the three pin lines absent);/how-do-ifork ran all 39 calls onclaude-opus-5, the parent session model, not sonnet.The repo had no
.github/workflows/at all, so nothing caught the missing bump. PR #29 is the one-line hotfix; this PR is the fix for the class.What this sets up
<plugin>-v<version>) — all four:procedures,delegation,about-my-person,take-note.extra-filesjson updater on each.claude-plugin/plugin.json$.version. That is the field an install actually resolves; there is nopackage.jsonhere, so the stock updaters do not apply.separate-pull-requests: true— aproceduresfix does not drag the other three into a release.chore:ordocs:produces no release and therefore no bump, so it stays invisible to every installed box.Verification
jq -e .parses both JSON files;yaml.safe_loadparses the workflow.<pkg>/.claude-plugin/plugin.json.procedures0.2.1, other three 0.1.0) — seeded from reality, so the first release PR computes from real history instead of re-releasing.diffof configpackageskeys vs manifest keys — identical.Not verified: no release PR has been generated yet: that only happens once this is on
main. The first push tomainafter merge should open one.Merge order
Independent of #29 — and self-healing either way. If #29 merges first,
plugin.jsonreads0.2.2while the manifest says0.2.1; release-please then computes0.2.2from thefix:commit and converges on the next run.🤖 Generated with Claude Code