feat: path-based per-plugin release detection#3
Merged
Conversation
Drop the scope-required release gate. A commit now qualifies for a plugin if it changed release-worthy content under plugins/<plugin>/ (anything except tests/ and the CI-managed CHANGELOG.md) OR its subject is scoped to the plugin (back-compat). The conventional-commit type sets the bump (feat -> minor, fix/perf/refactor -> patch, !/BREAKING -> major); a plugin with changes but no typed commit is not released. Loop-safe: bot 'chore(release)' commits are type chore (no bump) and the release commit is excluded by the plugin's own tag range. Shared .claude-plugin/marketplace.json is outside plugins/<plugin>/ so it never counts as a plugin path. - automated-release.yml: add touches_plugin(); qualify = path OR scope; header comment updated - CLAUDE.md / CONTRIBUTING.md: release tables rewritten to the path+type model This change touches only .github + docs (no plugins/<p> content) so it triggers no release itself; once on master the existing in-range fc383cc (PR #2, feat:, code-intelligence content) releases code-intelligence 0.2.0 -> 0.3.0 as intended.
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.
Summary
Replace the scope-required release gate with path + type detection.
A commit qualifies for a plugin if it changed release-worthy content under
plugins/<plugin>/(anything excepttests/and the CI-managedCHANGELOG.md) OR its subject is scoped to that plugin (back-compat).The conventional-commit type then sets the bump:
feat-> minor,fix/perf/refactor-> patch,!/BREAKING CHANGE-> major. A pluginwith changes but no typed commit in range is not released.
automated-release.yml:touches_plugin()helper; qualify = path ORscope; header comment + skip message updated.
CLAUDE.md,CONTRIBUTING.md: release tables rewritten to the new model.Loop-safety
chore(release): ...commits are typechore-> no bump even thoughthey path-touch the released plugin.
<plugin>-v<new>; that plugin's next range<tag>..HEADexcludes it..claude-plugin/marketplace.jsonis outsideplugins/<plugin>/,so it never counts as a plugin path.
Expected effect on merge (intended)
This PR touches only
.github/+ docs (noplugins/<p>/content), so thesquash commit itself triggers no release. But code-intelligence's range is
still
code-intelligence-v0.2.0..HEAD, which containsfc383cc(PR #2,feat:, changedplugins/code-intelligence/commands/+.codex-plugin/).Under the new logic that qualifies -> code-intelligence auto-releases
v0.3.0 on the master push, capturing the doctor command + Codex manifest.
This is the desired retroactive release.
Test plan
py_compile).fc383ccqualifies code-intelligence(
feat-> minor); rangecode-intelligence-v0.2.0..HEAD-> feats=1-> minor (0.2.0 -> 0.3.0).
tests/,CHANGELOG.md,README.md, shared.claude-plugin/marketplace.json-> not qualifying;commands/,.codex-plugin/-> qualifying.markdownlint-cli2 README.md CONTRIBUTING.md plugins/**/*.md-> 0.code-intelligence-v0.3.0, syncs the three version files, prependsCHANGELOG, creates the GitHub Release.
Note
Pre-existing em dash in
CONTRIBUTING.md:34is unrelated to this change(left untouched, out of scope).