Rules
body-case
condition:
body
is in casevalue
rule:
always
value
text'lower-case'
possible values
js[ "lower-case", // default "upper-case", // UPPERCASE "camel-case", // camelCase "kebab-case", // kebab-case "pascal-case", // PascalCase "sentence-case", // Sentence case "snake-case", // snake_case "start-case", // Start Case ];
body-empty
- condition:
body
is empty - rule:
never
body-full-stop
condition:
body
ends withvalue
rule:
never
value
text'.'
body-leading-blank
- condition:
body
begins with blank line - rule:
always
body-max-length
condition:
body
hasvalue
or less charactersrule:
always
value
textInfinity
body-max-line-length
condition:
body
lines havevalue
or less characters, or contain a URLrule:
always
value
textInfinity
body-min-length
condition:
body
hasvalue
or more charactersrule:
always
value
text0
breaking-change-exclamation-mark
- condition: Either both or neither
header
has an exclamation mark before the:
marker and a line infooter
matches the regular expression^BREAKING[ -]CHANGE:
- rule:
always
NOTE
This rule enforces that breaking changes are marked by both a !
in the header and BREAKING CHANGE
in the footer. The behavior is that of an XNOR operation:
- It passes when either both are present or both are not.
- It fails when one is present and the other is not.
footer-empty
- condition:
footer
is empty - rule:
never
footer-leading-blank
- condition:
footer
begins with blank line - rule:
always
footer-max-length
condition:
footer
hasvalue
or less charactersrule:
always
value
textInfinity
footer-max-line-length
condition:
footer
lines havevalue
or less charactersrule:
always
value
textInfinity
footer-min-length
condition:
footer
hasvalue
or more charactersrule:
always
value
text0
header-case
condition:
header
is in casevalue
rule:
always
value
text'lower-case'
possible values
js[ "lower-case", // default "upper-case", // UPPERCASE "camel-case", // camelCase "kebab-case", // kebab-case "pascal-case", // PascalCase "sentence-case", // Sentence case "snake-case", // snake_case "start-case", // Start Case ];
header-full-stop
condition:
header
ends withvalue
rule:
never
value
text'.'
header-max-length
condition:
header
hasvalue
or less charactersrule:
always
value
text72
header-min-length
condition:
header
hasvalue
or more charactersrule:
always
value
text0
header-trim
- condition:
header
must not have initial or trailing whitespaces - rule:
always
references-empty
- condition:
references
has at least one entry - rule:
never
scope-case
condition:
scope
is in casevalue
rule:
always
value
text'lower-case'
possible values
js[ "lower-case", // default "upper-case", // UPPERCASE "camel-case", // camelCase "kebab-case", // kebab-case "pascal-case", // PascalCase "sentence-case", // Sentence case "snake-case", // snake_case "start-case", // Start Case ];
scope-empty
- condition:
scope
is empty - rule:
never
scope-enum
condition:
scope
is found in valuerule:
always
value
text[]
NOTE
- This rule always passes if no scopes are provided in the message or the value > is an empty array.
- When set to
always
, all message scopes must be found in the value. - When set to
never
, none of the message scopes can be found in the value.
scope-max-length
condition:
scope
hasvalue
or less charactersrule:
always
value
textInfinity
scope-min-length
condition:
scope
hasvalue
or more charactersrule:
always
value
text0
signed-off-by
condition:
message
hasvalue
rule:
always
value
text'Signed-off-by:'
subject-case
condition:
subject
is in casevalue
rule:
always
value
js["sentence-case", "start-case", "pascal-case", "upper-case"];
possible values
js[ "lower-case", // lower case "upper-case", // UPPERCASE "camel-case", // camelCase "kebab-case", // kebab-case "pascal-case", // PascalCase "sentence-case", // Sentence case "snake-case", // snake_case "start-case", // Start Case ];
subject-empty
- condition:
subject
is empty - rule:
never
subject-exclamation-mark
- condition:
subject
has exclamation before the:
marker - rule:
never
subject-full-stop
condition:
subject
ends withvalue
rule:
never
value
text'.'
subject-max-length
condition:
subject
hasvalue
or less charactersrule:
always
value
textInfinity
subject-min-length
condition:
subject
hasvalue
or more charactersrule:
always
value
text0
trailer-exists
condition:
message
has trailervalue
rule:
always
value
text'Signed-off-by:'
type-case
description:
type
is in casevalue
rule:
always
value
text'lower-case'
possible values
js[ "lower-case", // default "upper-case", // UPPERCASE "camel-case", // camelCase "kebab-case", // kebab-case "pascal-case", // PascalCase "sentence-case", // Sentence case "snake-case", // snake_case "start-case", // Start Case ];
type-empty
- condition:
type
is empty - rule:
never
type-enum
condition:
type
is found in valuerule:
always
value
js[ "build", "chore", "ci", "docs", "feat", "fix", "perf", "refactor", "revert", "style", "test", ];
type-max-length
condition:
type
hasvalue
or less charactersrule:
always
value
textInfinity
type-min-length
condition:
type
hasvalue
or more charactersrule:
always
value
text0