Repository navigation
fix(plugin): let each pinned framework tag install its own plugin - #232
Merged
Merged
Conversation
Claude Code caches a plugin by the version in plugin.json, so a release that forgets to bump it leaves installed plugins on old content. The new Release workflow checks the version when a draft is saved or a release is published. On a mismatch it opens a PR that sets the version through the contents API, so GitHub signs the commit, links that PR in the job summary, and fails. When Actions may not create PRs, it links a compare page that opens the PR in one click. make plugin-version VERSION=<tag> sets the version for the PR made before tagging, and the AI instructions add this step to the release rules. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Draft releases cannot trigger the workflow, and partial branch creation prevents reliable retries.
Review effort: Balanced
Findings: 2
Open (2)
What changed in this PR
Adds release safeguards to keep the Claude Code plugin version synchronized with release tags.
Changes:
- Adds a plugin-version Make target.
- Adds automated release validation and corrective PR creation.
- Documents the release-version requirement.
| File | Description |
|---|---|
Makefile |
Adds plugin manifest version updates. |
.github/workflows/release.yml |
Validates release tags and opens corrective PRs. |
.github/copilot-instructions.md |
Documents the generated release guidance. |
.ai/base.md |
Adds the source release guidance. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Claude Code caches a plugin by the version in plugin.json, and consumers pin the marketplace ref to a framework tag. A version that a release forgets to change keeps pinned users on old skills, and a version bumped after the tag never reaches the tag at all. Without a version, Claude Code caches by commit, so each tag installs exactly the plugin it shipped. This replaces the release workflow and make target, which could only check the version after the tag existed, because GitHub runs no workflow for a draft release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
Review round 1 (review base Both findings were correct, and both are resolved by the removal of the release workflow:
No suppressed findings. Comment check: no comment grew. The four removed comments were in the deleted workflow, with the code that they described. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Description
Consumers pin the marketplace
refto a framework tag, so that the plugin skills match the API they build against. Claude Code caches a plugin by theversioninplugin.json. So a release that forgets to change the version keeps pinned users on old skills, as happened from v0.18.0 to v0.22.2. This PR removes theversion. Without one, Claude Code caches the plugin by commit, so each pinned tag installs exactly the plugin that it shipped, with no release step.Changes
plugin/.claude-plugin/plugin.jsonhas noversion.claude plugin validatepasses with a warning that the version is missing..ai/base.md(and the generated.github/copilot-instructions.md): a rule to not add aversionto the plugin or its marketplace entry, and why.Challenges
A check at release time cannot keep the version right. GitHub runs no workflow for a draft release, so a check runs only when the tag exists, and a bump after the tag never reaches a user pinned to that tag.
Testing
claude plugin validate .passes, with the warningNo version specified, and exits 0, so the "Validate Claude plugin" CI job stays green.🤖 Generated with Claude Code