Purpose
History that explains itself and can generate changelogs.
The standard
Conventional Commits:
type(scope): short imperative summary (≤ 72 chars)
Optional body: what and why, not how. Wrap at 72.
Refs #123
Types:
feat,fix,docs,chore,refactor,test,perf,build,ci.Scope is optional and is the feature or module (
auth,panels,installer).Breaking changes:
feat(api)!: …plus aBREAKING CHANGE:footer.Squash-merge commit message = PR title, which follows the same format.
Examples
fix(auth): redirect to /admin after login · feat(rhino): add unitized panel generator · chore: bump supabase-js to 2.5
Anti-patterns
wip, fixes, updates, commit messages in the past tense.
Owner: Matt · Last reviewed: 2026-09