How to use the conventional commit generator
- Choose the Type, for example
feat — A new featureorfix — A bug fix. - Add a Scope (optional), such as the module name
parser, and a short Description in the imperative (“add”, not “added”). - Write a Body (optional) that explains why the change was made.
- Tick Breaking change if users must change something, and say what in What breaks.
- Add Issue references (comma-separated) and Co-authors (Name <email>, one per line), then copy the message or the command.
What it does and when to use it
Conventional Commits is a simple agreement about the first line of a commit message: type(scope): description. Because the format is predictable, tools can build release notes and pick the next version number from your history.
Use this tool while you learn the format, or when a repository enforces it with commitlint and your commits keep failing the check. The commitlint config generator sets up those rules. Messages in this style also make it quicker to fill in a release entry with the changelog generator, and the GitHub Actions generator can run the checks on every push.
How it works
The tool builds the message in three parts, separated by blank lines:
- Header: type, the scope in brackets (spaces and brackets removed),
!for a breaking change, a colon and the description. A trailing full stop is dropped. - Body: your text, unchanged.
- Footers:
BREAKING CHANGE: …, then one line per issue, thenCo-authored-by:lines. A plain number or#142becomesRefs: #142. A reference that already starts with Refs, Closes, Fixes or Resolves is kept as you typed it.
The command version passes each paragraph with its own -m, so Git keeps the blank lines.
Worked examples
Feature with scope, body and issue (default values).
feat(parser): add CSV export
Exports line items with one row per item and a totals row.
Refs: #142
The header length is 28 characters.
Breaking fix that closes an issue. Type fix, no scope, description drop deprecated flag, Breaking change ticked, What breaks the --legacy flag was removed, issues closes #88. The header becomes fix!: drop deprecated flag, and the footer holds BREAKING CHANGE: the --legacy flag was removed followed by closes #88.
A capital letter. Type docs, scope readme, description Fix typo in install section, one co-author. The message is still built, with a Co-authored-by: Lena Park <lena@example.com> footer, but a warning says commitlint rejects a description in sentence case.
Limits and tips
- One logical change per commit. If the description needs “and”, consider two commits.
- The type list is fixed to the 11 common types. Custom types need a matching commitlint rule.
- The tool does not run Git or read your repository; it only writes text.
Frequently asked questions
What is the difference between feat, fix and chore?
How do I mark a breaking change?
Why do I get a sentence-case warning?
Can I paste the command into Windows Command Prompt?
How long should the header be?
How do we know nothing is uploaded? Test it yourself on the privacy proof page.