Conventional Commit Message Builder

Assemble a clean, conventional-commits formatted message: type, optional scope, imperative description, wrapped body, breaking-change footer, and issue reference, with live 50/72 character gauges.

Subject line length (aim for 50, hard stop before 72)0 / 50
Longest body line after wrapping (target 72)0 / 72

Assembled commit message

Type cheat sheet

TypeUse forSemVer effect
featA new user-facing featureMINOR bump
fixA bug fixPATCH bump
docsDocumentation only (README, comments)none
styleWhitespace, formatting, semicolons; no logic changenone
refactorCode restructure that neither fixes a bug nor adds a featurenone
perfA change that improves performancePATCH bump
testAdding or correcting testsnone
buildBuild system, packaging, dependency bumpsnone
ciCI configuration and pipeline scriptsnone
choreRoutine maintenance that touches neither src nor testsnone
revertReverting an earlier commit (reference its hash in the body)varies
! or BREAKING CHANGE:Any type plus an incompatible API changeMAJOR bump
Why bother: conventional commits make history searchable, power automatic changelogs and semantic-release version bumps, and give reviewers instant context. They also help AI pair programmers: tools like GitHub Copilot and other coding assistants write noticeably better commit messages and changelog summaries when your repository already follows this format consistently, because the pattern is right there in the history they read. Spec: type(scope)!: description, blank line, body, blank line, footers.