Commit messages: nine conventions and the rule sets of commitlint, gitlint, committed, conform, and commitizen, read through a View.
Add it to your .vale.ini, then run vale sync.
Packages = Commits
[*.md]
BasedOnStyles = Vale, Commits The name installs the latest release each time vale sync runs. To stay on v0.1.0, the release this page describes, give its URL instead:
Packages = https://github.com/jdkato/commits/releases/download/v0.1.0/Commits.zip Files the package ships under config/, installed alongside its rules by vale sync.
Separate the subject from the body with a blank line.
Commit body is empty.
A body is mandatory except for 'docs', and runs at least 20 characters: explain why.
A body is required: say why.
B6 body-is-missing.
A body line runs past 100 characters from '%s'.
A body of %d characters, past body-max-length.
B1 body-max-line-length: this line runs past 80 from '%s'.
B5 body-min-length: a body of %d characters.
A body of %d characters, under body-min-length.
B2 body-trailing-whitespace.
'%s' is the one token the spec reads case-sensitively: write 'BREAKING CHANGE:'.
A 'BREAKING CHANGE:' footer goes with a '!' in the header.
The summary completes 'This change modifies Go to ...', so it does not start with a capital: '%s'.
Capitalize the subject line: '%s'.
The summary is not capitalized: '%s'.
A label is in capitals: '%s'.
A Closes: tag takes a URL to the public report, not '%s'.
Refer to a commit by twelve or more characters of its SHA-1 and its summary: 'commit e21d2170f366 ("video: remove ...")'.
Commit does not have a valid DCO: 'Signed-off-by: Name <email>'.
A description follows the type: what the change does.
Conventional commit description is %d characters, over descriptionLength.
CC2 contrib-disallow-cleanup-commits: '%s'.
No '!' before the colon; mark a breaking change with a 'BREAKING CHANGE:' footer.
A Fixes: tag carries at least 12 characters of the SHA-1 and the summary in parentheses: 'Fixes: 54a4f0239f2e ("KVM: MMU: ...")'.
'%s' is a footer. Put a blank line between the body and the footers.
A footer line runs past 100 characters from '%s'.
Footers of %d characters, past footer-max-length.
A footer is required.
A subject does not end with a period.
T4/B3 hard-tab: a tab character.
Commit header case is not lower: '%s'.
header-case is lower-case: '%s'.
Header is %d characters.
A header of %d characters, past header-max-length.
A header of %d characters, under header-min-length.
Write the subject as a command: 'Add', not '%s'.
Begin with a gitmoji, as the emoji or its ':shortcode:', then a space. '%s' is not one.
Commit header ends in an invalid character.
Reference an issue as 'Fixes #12345' or 'Updates #12345', not '%s'.
Commit header does not contain a Jira issue key from the configured projects.
Include the issue key in the subject, in capitals: 'PROJ-123'.
A summary of %d characters; the kernel asks for no more than 70-75.
A subject of %d characters. Shoot for 50; 72 is the hard limit.
line_length: this line runs past 72 from '%s'.
A type is lower-case: '%s'.
merge_commit: '%s'.
A message follows the intention: what the change does.
no_fixup: '%s'.
no_wip: '%s'.
Prefix the first line with the affected package: 'net/http: %s ...'.
No period at the end of the summary.
Do not end the subject line with a period.
'%s' says nothing about the change. Say what it does.
Reference an issue somewhere in the message: '#123'.
A revert names what it reverts in the body: 'This reverts commit <SHA>'.
A scope names a section of the codebase; '()' names nothing. Drop it or fill it.
'%s' is not one of the scopes: api, cli, docs.
A scope is lower-case: '%s'.
A scope is required: '%s(scope):'.
The summary is not a complete sentence: no period at the end.
Sign the patch off: git commit -s.
A space follows the colon.
subject_capitalized: '%s'.
A subject does not open with a capital: '%s'.
subject_length: a subject of %d columns.
A subject of %d characters, outside subject-min-length and subject-max-length.
subject_not_punctuated: '%s'.
Prefix the summary with the subsystem: 'x86/mm: %s ...'.
Give the order, not the report: 'make xyzzy do frotz', not '%s makes'.
T1 title-max-length: a title of %d characters.
T8 title-min-length: a title of %d characters.
T5 title-must-not-contain-word: '%s'.
T3 title-trailing-punctuation: '%s'.
A footer token uses '-' in place of whitespace: 'Signed-off-by', not '%s'.
No trailer matched the required token, by default 'Signed-off-by: '.
A subject of %d characters; GitHub truncates it past 72.
Begin with one of the seven labels: 📦 NEW:, 👌 IMPROVE:, 🐛 FIX:, 📖 DOC:, 🚀 RELEASE:, 🤖 TEST:, ‼️ BREAKING:. '%s' is not one.
allowed_types: '%s' is not one of fix, feat, chore, docs, style, refactor, perf, test.
'%s' is not an Angular type: build, ci, docs, feat, fix, perf, refactor, test, or revert.
Start with a type, then a colon: 'fix: ...', 'feat(scope)!: ...'. '%s' is not one.
'%s' is not a commitizen type: build, bump, chore, ci, docs, feat, fix, perf, refactor, revert, style, test.
'%s' is not a config-conventional type: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test.
A type is lower-case: '%s'.
Whitespace at the edge of the subject.
Wrap the description at around 72 columns; this line runs on from '%s'.
Wrap the explanation at 75 columns; this line runs on from '%s'.
Wrap the body at 72 characters; this line runs on from '%s'.