Conventional Commits
ELI5 — The Vibe Check
Conventional Commits is a format for writing commit messages that humans AND machines can understand. Every message starts with a type: 'feat: add dark mode', 'fix: login redirect loop', 'chore: update dependencies.' Tools can then auto-generate changelogs, determine version bumps (feat = minor, fix = patch), and make your git history actually useful instead of '47 commits titled "fix stuff".'
Real Talk
Conventional Commits is a specification for structured commit messages following the format type(scope): description. Types include feat (new feature → minor version), fix (bug fix → patch version), and others (chore, docs, refactor, test, ci). Breaking changes are indicated by ! after the type or a BREAKING CHANGE: footer. Tools like commitlint enforce the format, while semantic-release and changesets use it for automated versioning and changelog generation.
Show Me The Code
# Format: type(scope): description
feat(auth): add passkey login support
fix(api): handle null response from payment provider
refactor(ui): extract card component from dashboard
chore(deps): update next.js to 15.1
docs(readme): add deployment instructions
# Breaking change
feat(api)!: change auth endpoint response format
BREAKING CHANGE: /auth/login now returns { token } instead of { accessToken }
When You'll Hear This
"Use conventional commits so we can auto-generate the changelog." / "Is this a feat or a fix? If it adds behavior, it's feat. If it corrects behavior, it's fix."
Related Terms
Changelog
A Changelog is a file (usually CHANGELOG.md) that records what changed in each version of your software.
Commitlint
Commitlint is the grammar police for your commit messages. Try to commit with 'asdf fixed stuff'? Rejected.
Git
Git is like a magical save system for your code. Every time you save (commit), it remembers exactly what changed.
Semantic Versioning (SemVer)
Semantic versioning uses three numbers — MAJOR.MINOR.PATCH — where each number means something. PATCH (1.0.1) = bug fix. MINOR (1.1.