-
Notifications
You must be signed in to change notification settings - Fork 17
fix(skills): treat internal-scope feat commits as patch in /release #642
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -46,9 +46,15 @@ Scan **every commit message** between the last tag and HEAD. Apply these rules i | |||||
| | Condition | Bump | | ||||||
| |-----------|------| | ||||||
| | Any commit has a `BREAKING CHANGE:` or `BREAKING-CHANGE:` footer, **or** uses the `!` suffix (e.g. `feat!:`, `fix!:`, `refactor!:`) | **major** | | ||||||
| | Any commit uses `feat:` or `feat(scope):` | **minor** | | ||||||
| | Any commit uses `feat:` or `feat(scope):` **with a user-facing scope** | **minor** | | ||||||
| | Everything else (`fix:`, `refactor:`, `perf:`, `chore:`, `docs:`, `test:`, `ci:`, etc.) | **patch** | | ||||||
|
|
||||||
| **Internal scopes — treat as patch, not minor:** The following scopes represent internal developer tooling and infrastructure, not user-facing features. A `feat:` commit with one of these scopes counts as a **patch**, not a minor bump: | ||||||
|
|
||||||
| `titan`, `skills`, `hooks`, `claude`, `ci`, `bench`, `dogfood`, `release`, `housekeep`, `review`, `deps-audit`, `test-health`, `architect` | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
The added scope list includes
Suggested change
(Remove
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The \ scope is intentional — commits like \ are internal tooling, not user-facing features. I've kept it in the list and alphabetized all scopes for easier maintenance (addressing Claude bot's suggestion as well). |
||||||
|
|
||||||
| For example, `feat(titan): first full pipeline run` is internal tooling — patch. But `feat(cfg): control-flow graph generation` is user-facing — minor. | ||||||
|
|
||||||
| Given the current version `MAJOR.MINOR.PATCH` from `package.json`, compute the new version: | ||||||
| - **major** → `(MAJOR+1).0.0` | ||||||
| - **minor** → `MAJOR.(MINOR+1).0` | ||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
feat:commitsThe updated table cell reads:
Any commit uses \feat:` or `feat(scope):` with a user-facing scope. The trailing qualifier can be read as applying to both alternatives — implying that even a barefeat:commit (no scope) needs a "user-facing scope" to trigger minor. The intent is clearly that barefeat:is always minor; onlyfeat(scope):` is filtered by the exclusion list.A small reword prevents the AI from mis-reading this:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed. Reworded the table row to: "Any
feat:commit or anyfeat(scope):where the scope is not in the internal list below". This removes the ambiguity — barefeat:is clearly always minor.