ci: require plugin version bump for any plugin change#10
ci: require plugin version bump for any plugin change#10myasnikovdaniil wants to merge 1 commit into
Conversation
Adds a `Check plugin version bump` workflow that runs on PRs touching `agents/`, `hooks/`, `mcp/`, or `skills/`. For each `<category>/<name>/` directory with changes in the PR, it asserts that `<category>/<name>/ .claude-plugin/plugin.json` `.version` is strictly greater (by `sort -V`) than the version on the base branch. New plugins (no manifest on base) are exempted. The check is hard-failed (`exit 1`) with a clear inline annotation pointing at the offending manifest. Documents the convention in `CLAUDE.md` so contributors see the expectation when modifying a plugin. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
There was a problem hiding this comment.
Code Review
This pull request updates CLAUDE.md to document the requirement for version bumps when modifying existing plugins. The feedback highlights that the GitHub Actions workflow mentioned in the documentation is missing from the current changes. It is also suggested to clarify that this rule applies specifically to updates of existing plugins to avoid confusion for contributors adding new ones.
IvanHunters
left a comment
There was a problem hiding this comment.
Requesting changes — the workflow watches a repository layout that no longer exists, so it enforces nothing.
- This branch's base is a month behind main, from before the top-level
agents/ hooks/ mcp/ skills/layout was replaced byplugins/<vendor>/skills/<name>/. The workflow triggers onskills/** agents/** hooks/** mcp/**, but on current main those top-level dirs hold only.gitkeep— every real plugin now lives underplugins/. A change to any real plugin (exactly what #15 does toplugins/cozystack/skills/dev-ui-bootstrap/SKILL.md) will not trigger the workflow at all, so the stated goal isn't met. Please rebase onto current main and rework for theplugins/**layout. - The manifest-path derivation (
cut -d/ -f2producing<category>/<name>/.claude-plugin/plugin.json) is also wrong for the new layout, where the manifest is atplugins/<vendor>/.claude-plugin/plugin.json(vendor level) while changed files are atplugins/<vendor>/skills/<name>/....
Non-blocking once rebased: deleting or renaming a whole plugin trips a false "missing .version on HEAD" (consider --diff-filter / -M); a malformed base manifest silently skips the bump check (only the HEAD side fails closed). The version_gt comparator itself is correct.
(For the record: the two "human" review points are author replies to the gemini bot; gemini's "workflow file not included" claim is a false positive — the file is present in the diff and on HEAD.)
Summary
PR #9 changed
skills/cozystack-upgrade/SKILL.mdwithout bumpingplugin.json.version, and nothing in CI caught it. This adds an automated check so the same gap doesn't recur..github/workflows/check-plugin-version-bump.yml— on PRs touchingagents/,hooks/,mcp/, orskills/, asserts that every modified plugin's.claude-plugin/plugin.json.versionis strictly greater (bysort -V) than on the base branch. New plugins (no manifest on base) are exempted. Failures emit a::error file=…annotation pointing at the offending manifest.CLAUDE.md— documents the convention under a new## Modifying an Existing Pluginsection.Test plan
skills/<name>/file without bumping the manifest and confirm this workflow fails it🤖 Generated with Claude Code