Skip to content

Rules

body-case

  • condition: body is in case value

  • 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 with value

  • rule: never

  • value

    text
    '.'

body-leading-blank

  • condition: body begins with blank line
  • rule: always

body-max-length

  • condition: body has value or less characters

  • rule: always

  • value

    text
    Infinity

body-max-line-length

  • condition: body lines have value or less characters, or contain a URL

  • rule: always

  • value

    text
    Infinity

body-min-length

  • condition: body has value or more characters

  • rule: always

  • value

    text
    0

breaking-change-exclamation-mark

  • condition: Either both or neither header has an exclamation mark before the : marker and a line in footer 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.
  • condition: footer is empty
  • rule: never
  • condition: footer begins with blank line
  • rule: always
  • condition: footer has value or less characters

  • rule: always

  • value

    text
    Infinity
  • condition: footer lines have value or less characters

  • rule: always

  • value

    text
    Infinity
  • condition: footer has value or more characters

  • rule: always

  • value

    text
    0

header-case

  • condition: header is in case value

  • 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 with value

  • rule: never

  • value

    text
    '.'

header-max-length

  • condition: header has value or less characters

  • rule: always

  • value

    text
    72

header-min-length

  • condition: header has value or more characters

  • rule: always

  • value

    text
    0

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 case value

  • 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 value

  • rule: 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 has value or less characters

  • rule: always

  • value

    text
    Infinity

scope-min-length

  • condition: scope has value or more characters

  • rule: always

  • value

    text
    0

signed-off-by

  • condition: message has value

  • rule: always

  • value

    text
    'Signed-off-by:'

subject-case

  • condition: subject is in case value

  • 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 with value

  • rule: never

  • value

    text
    '.'

subject-max-length

  • condition: subject has value or less characters

  • rule: always

  • value

    text
    Infinity

subject-min-length

  • condition: subject has value or more characters

  • rule: always

  • value

    text
    0

trailer-exists

  • condition: message has trailer value

  • rule: always

  • value

    text
    'Signed-off-by:'

type-case

  • description: type is in case value

  • 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 value

  • rule: always

  • value

    js
    [
      "build",
      "chore",
      "ci",
      "docs",
      "feat",
      "fix",
      "perf",
      "refactor",
      "revert",
      "style",
      "test",
    ];

type-max-length

  • condition: type has value or less characters

  • rule: always

  • value

    text
    Infinity

type-min-length

  • condition: type has value or more characters

  • rule: always

  • value

    text
    0