Commit Authoring
Write commit messages following Conventional Commits v1.0.0.
Message Structure
code
<type>[optional scope]: <description> [optional body] [optional footer(s)]
Rules
- •Prefix with type, optional scope in parentheses, optional
!for breaking changes, colon, space - •
featfor new features (MINOR in SemVer) - •
fixfor bug fixes (PATCH in SemVer) - •Description immediately follows the colon and space
- •Body separated by one blank line, free-form
- •Footers one blank line after body, token-separator-value format
- •Footer tokens use
-instead of spaces (exceptBREAKING CHANGE) - •
!before:indicates breaking change;BREAKING CHANGE:footer may be omitted if!is used - •Breaking changes correlate with MAJOR in SemVer
Types
| Type | Purpose | SemVer |
|---|---|---|
feat | New feature | MINOR |
fix | Bug fix | PATCH |
docs | Documentation only | - |
style | Formatting, whitespace | - |
refactor | Neither fix nor feature | - |
perf | Performance improvement | - |
test | Adding or updating tests | - |
build | Build system or dependencies | - |
ci | CI configuration | - |
chore | Maintenance tasks | - |
Description
Use imperative mood: "add feature" not "added feature". Keep under 50 characters. No period. Lowercase after type prefix.
Body
Wrap at 72 characters. Explain what and why, not how.
Prohibited
Do not include "Generated with Claude Code", AI attribution, Co-authored-by lines for AI, emoji, time estimates, dates, or TODO items.
Examples
Simple:
code
docs: correct spelling of CHANGELOG
With scope:
code
feat(lang): add Polish language
Breaking change:
code
feat!: send email to customer when product ships BREAKING CHANGE: customers now receive emails by default.
With body:
code
fix: prevent duplicate form submissions Disables submit button after first click and adds debounce to the handler.
With footer:
code
fix: resolve race condition in auth flow Refs: #123 Reviewed-by: Alice