You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adopt Conventional Commits and make the rules binding (#985)
* Adopt Conventional Commits and make the rules binding
CONTRIBUTING.md banned Conventional Commits outright. Its load-bearing
argument was that nothing here generates from commit types, because
release notes were hand-written in CHANGELOG.md. Notes are moving to
generated, so that premise goes.
Subjects become <type>(<scope>): <description>, keeping the component as
the scope. The bans that were right are kept verbatim: ticket IDs, status
tags, filenames in subjects. A short note records that the policy changed
so it is not re-litigated from older git log entries.
Co-Authored-By is now banned explicitly, on any artifact, whoever wrote
the change.
AGENTS.md states that the rules bind humans and agents equally and that a
violating pull request is declined rather than fixed in review. Its inline
copy of the prefix rules is gone — a second copy is one that goes stale.
CL-7880
* Update the layers that enforce the commit rule, not just the doc
Flipping CONTRIBUTING.md alone would have left the repo fighting itself.
The style skill — loaded by builder and other agents — banned subject
prefixes outright and listed `feat: add retry logic` as a bad example, so
agents would keep writing subjects the new rule declines. The review
skill would then flag the compliant ones as prefix violations.
Updated together: the style skill now specifies the type/scope form and
keeps the ticket-ID, status-tag and filename bans; the review skill flags
a missing or unrecognized type instead of flagging types themselves; the
implement skill and the builder director prompt stop telling workers the
title is a plain-English sentence; the PR template matches.
CONTRIBUTING.md also states the consequence directly, so the README can
point at it rather than making a claim the source of truth does not.
CL-7880
* Name the real product in release forms and drop notes commits
Copy file name to clipboardExpand all lines: plugins/corbits-skills/skills/implement/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -113,7 +113,7 @@ Run `make` (or the project's equivalent full pipeline: format, lint, build, test
113
113
114
114
Update `activeForm` to "Committing: {subject}".
115
115
116
-
Create the commit. Follow the commit message conventions from the `style` skill. Include the test in the same unit of work as the implementation — same commit when committing — one logical unit — and update the docs when the commit changes documented behavior. Worker-chain branch/PR convention: branch name carries the issue id, the PR body ends with `Fixes CL-…` and carries no AI-attribution lines (CONTRIBUTING: title stays a plain-English sentence, body is Summary/Verification).
116
+
Create the commit. Follow the commit message conventions from the `style` skill. Include the test in the same unit of work as the implementation — same commit when committing — one logical unit — and update the docs when the commit changes documented behavior. Worker-chain branch/PR convention: branch name carries the issue id, the PR body ends with `Fixes CL-…` and carries no AI-attribution lines (CONTRIBUTING: title is a Conventional Commits subject, body is Summary/Verification).
-**Prefix violations.**Any subject starting with a `word:`, `[tag]`, or `(scope)` pattern. Includes Conventional Commits (`feat:`, `fix:`), component or scope prefixes (`Anthropic adapter:`, `mm:`, `[X86]`), ticket IDs (`INTR-79:`), and status tags (`WIP:`). Project convention is plain English sentences; any prefix is a violation regardless of how idiomatic it looks in other ecosystems.
260
+
-**Subject-form violations.**Project convention is Conventional Commits: `<type>(<scope>): <description>` with type from `feat`, `fix`, `perf`, `refactor`, `test`, `docs`, `build`, `ci`, `chore`, `style`. Flag a subject with no type (`Anthropic adapter: handle 429s`, `Add retry logic`), an unrecognized type, a ticket ID (`INTR-79:`), or a status tag (`WIP:`, `[urgent]`). Do **not** flag `feat:`/`fix:`-style prefixes themselves — those are the convention.
261
261
-**Filename or path references.** Tokens that look like file paths or extensions (`server.ts`, `INFERENCE.md`, `src/foo/bar.py`). The diff lists what changed; subjects describe the change, not the file.
262
262
-**Trailing punctuation.** Subjects ending with `.`, `!`, or `?`.
The existing commits document the project's actual subject convention — verb tense, level of detail, voice, capitalization. Match what is there.
106
106
107
-
The project's log can override the no-prefix rule below, but only when the recent history is **predominantly** prefixed in a single consistent convention — i.e., the prefix is the obvious shape of the last ~20 commits, not a minority pattern visible in a few. Mixed signals fall through to the no-prefix rule; tie goes to no prefix.
**No subject prefixes.** Summary lines are plain English sentences that start with a verb and describe the change directly. Do not prefix the subject with anything — no tag, no scope, no category, no ticket ID, no severity marker. This is a flat rule across every prefix convention, including:
110
+
```text
111
+
<type>(<scope>): <description>
112
+
```
113
+
114
+
-**Type** — one of `feat`, `fix`, `perf`, `refactor`, `test`, `docs`, `build`,
115
+
`ci`, `chore`, `style`
116
+
-**Scope** — the component the change lives in. Omit only when the change
117
+
genuinely spans the whole project
118
+
-**Description** — plain English, imperative, starts with a verb, describes
119
+
the change directly
120
+
-**Breaking changes** — `!` after the type/scope, or a `BREAKING CHANGE:`
121
+
footer
122
+
123
+
Everything after the colon still obeys the rules below: no abbreviations, no
124
+
trailing punctuation, no filenames, self-contained.
125
+
126
+
**Still banned as subject prefixes**, before or instead of the type:
- Status or severity tags: `WIP:`, `[urgent]`, `(security):`
115
-
116
-
Several of these patterns are widespread in well-known projects (Linux kernel, LLVM, Conventional-Commits-adopting projects) and feel idiomatic from sheer exposure. They are still banned here. Familiarity is not a justification.
130
+
- Bare component prefixes with no type: `Anthropic adapter:`, `mm:`, `[X86]`,
131
+
`drivers/net:`, `frontend:` — the component belongs in the scope, so
132
+
`mm: fix leak` becomes `fix(mm): fix leak`
117
133
118
134
Summary lines also use no abbreviations and do not end with punctuation.
119
135
120
136
**Good examples:**
121
137
122
138
```
123
-
Add retry logic for failed network requests
124
-
Fix race condition in transaction verification
125
-
Document API response format
139
+
feat(executor): add retry logic for failed network requests
140
+
fix(inference): resolve race condition in transaction verification
Copy file name to clipboardExpand all lines: src/agent/directors/builder/package.ts
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -81,7 +81,7 @@ For implementation work, run the repository-defined typecheck command and releva
81
81
82
82
**Don't shortcut verify.** The value is in the discipline. Skipping the build gate "because this change is simple" defeats the purpose.
83
83
84
-
**Keep units focused.** Deliver a working tree that satisfies the brief and report. Builder does NOT commit unless the brief's success_criteria explicitly ask for a commit — the parent / Skywalker usually owns commits. Prefer: working tree + report envelope. Worker-chain branch/PR convention for the parent's handoff: branch name carries the issue id, the PR body ends with \`Fixes CL-…\` and carries no AI-attribution lines (CONTRIBUTING: title stays a plain-English sentence, body is Summary/Verification only).
84
+
**Keep units focused.** Deliver a working tree that satisfies the brief and report. Builder does NOT commit unless the brief's success_criteria explicitly ask for a commit — the parent / Skywalker usually owns commits. Prefer: working tree + report envelope. Worker-chain branch/PR convention for the parent's handoff: branch name carries the issue id, the PR body ends with \`Fixes CL-…\` and carries no AI-attribution lines (CONTRIBUTING: title is a Conventional Commits subject, body is Summary/Verification only).
85
85
86
86
**Discovered extra work** belongs under Blockers / Findings for a future unit — finish the current brief first.
0 commit comments