Skip to Content
HygieneConventional Commits

Conventional Commits

Every commit message follows the same structure. Machines parse it for changelogs and release decisions; humans scan it for a five-second history walk.

The format

<type>(<scope>): <subject> # Example: feat(auth): add login endpoint

Read as: “This is a new feature in the auth area that adds a login endpoint.”

Common types

TypeMeansAnalogy
featA new feature was addedAdding a new room to a house
fixA bug was fixedFixing a leaky faucet
docsOnly documentation changedUpdating the instruction manual
refactorCode reorganized, behavior unchangedRearranging furniture, same room
testTests were added or updatedAdding a checklist to verify the faucet works
buildBuild system or dependencies changedUpgrading your tools
ciCI/CD workflows changedAdjusting the factory inspection process
choreMaintenance workCleaning the garage

Why it matters

  • Scannable history. git log --oneline reads like a release note.
  • Automated changelogs. The version system parses types to generate release notes.
  • Semantic versioning. feat means minor bump, fix means patch, ! in the type means breaking.
  • Agent-friendly. The structured format is a contract the agent can verify before pushing.
Last updated on