Skip to content

Commit 9281b0b

Browse files
authored
docs: add conventional commits guidelines for semantic-release (#245)
1 parent e6dc672 commit 9281b0b

2 files changed

Lines changed: 66 additions & 3 deletions

File tree

.claude/CLAUDE.md

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,39 @@ When user input contains "marco" (case insensitive):
259259
- Platform-specific CI testing (excludes emulated archs)
260260

261261
### Release Process
262-
- **Semantic release** with emoji commits
262+
- **Semantic release** with conventional commits
263+
- **git-cliff** generates changelog entries and GitHub release notes
263264
- **GitHub Actions** for build/test/publish
264265
- **Binary wheels** for multiple platforms
265-
- Version sync between pyproject.toml and _version.py
266+
- Version sync between pyproject.toml and _version.py
267+
268+
## Conventional Commits & Version Bumps
269+
270+
**CRITICAL: The commit TYPE controls version bumps, NOT the scope.**
271+
272+
Semantic-release uses the angular parser which determines version bumps
273+
based on commit type prefix:
274+
275+
### Types that trigger version bumps:
276+
- `feat:`**minor** bump (new feature)
277+
- `fix:`**patch** bump (bug fix)
278+
- `perf:`**patch** bump (performance improvement)
279+
280+
### Types that do NOT trigger version bumps:
281+
- `ci:` → no bump (CI/CD changes)
282+
- `build:` → no bump (build system changes)
283+
- `chore:` → no bump (maintenance)
284+
- `docs:` → no bump (documentation)
285+
- `style:` → no bump (formatting)
286+
- `refactor:` → no bump (code restructuring)
287+
- `test:` → no bump (test changes)
288+
289+
### Common Mistake to Avoid:
290+
```
291+
❌ fix(ci): update workflow → triggers patch bump (type is "fix")
292+
✅ ci(publish): update workflow → no bump (type is "ci")
293+
```
294+
295+
The scope in parentheses is for categorization/changelog only - it does
296+
NOT affect whether a version bump occurs. Always use the correct TYPE
297+
for CI/build/chore work to avoid accidental releases.

CLAUDE.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,43 @@ cmake/ # CMake configuration
105105
- Platform-specific CI testing (excludes emulated archs)
106106

107107
### Release Process
108-
- **Semantic release** with emoji commits
108+
- **Semantic release** with conventional commits
109109
- **git-cliff** generates changelog entries and GitHub release notes
110110
- **GitHub Actions** for build/test/publish
111111
- **Binary wheels** for multiple platforms
112112
- Version sync between pyproject.toml and _version.py
113113

114+
## Conventional Commits & Version Bumps
115+
116+
**CRITICAL: The commit TYPE controls version bumps, NOT the scope.**
117+
118+
Semantic-release uses the angular parser which determines version bumps
119+
based on commit type prefix:
120+
121+
### Types that trigger version bumps:
122+
- `feat:`**minor** bump (new feature)
123+
- `fix:`**patch** bump (bug fix)
124+
- `perf:`**patch** bump (performance improvement)
125+
126+
### Types that do NOT trigger version bumps:
127+
- `ci:` → no bump (CI/CD changes)
128+
- `build:` → no bump (build system changes)
129+
- `chore:` → no bump (maintenance)
130+
- `docs:` → no bump (documentation)
131+
- `style:` → no bump (formatting)
132+
- `refactor:` → no bump (code restructuring)
133+
- `test:` → no bump (test changes)
134+
135+
### Common Mistake to Avoid:
136+
```
137+
❌ fix(ci): update workflow → triggers patch bump (type is "fix")
138+
✅ ci(publish): update workflow → no bump (type is "ci")
139+
```
140+
141+
The scope in parentheses is for categorization/changelog only - it does
142+
NOT affect whether a version bump occurs. Always use the correct TYPE
143+
for CI/build/chore work to avoid accidental releases.
144+
114145
## Unicode Support (Issue #207)
115146

116147
### Problem

0 commit comments

Comments
 (0)