# commits/commitlint

> Checks a new commit message for a conventional type, an optional known scope, a first line of 72 characters or fewer, and a wrapped body.

Checks a new commit message for a conventional type, an optional known scope, a first line of 72 characters or fewer, and a wrapped body.

Part of the [`commits`](/reference/configurations/commits/) configuration, at the `all` [level](/start/concepts/#levels). It runs at the `message` [stage](/start/concepts/#stage), per file. It runs commitlint.

## Why

Release notes, blame, and bisect depend on typed, scoped subjects, and a free-form message hides the change.

## What to do

Write `<type>: <subject>` or `<type>(<scope>): <subject>` in a first line of 72 characters or fewer. Change the accepted types with `gspot set tools.commitlint.types`.

## Example

The message `changed stuff` has no type or scope. Write `fix(cli): report missing configuration` instead.

## Turn it off

Turn it off for some files, or one of its lint rules, with a reason:

```shell
gspot ignore commits/commitlint --paths "<glob>" --reason "<why>"
gspot ignore commits/commitlint --rule <rule> --reason "<why>"
```
