commitlint is a tool that lints commit messages according to the Conventional Commits standard. It can be used in GitHub Actions and as a pre-commit hook.
If you have an existing workflow, add the following steps:
...
steps:
...
- name: Conventional Commitlint
uses: opensource-nepal/commitlint@v1
...If you don't have any workflows, create a new GitHub workflow file, e.g., .github/workflows/commitlint.yaml:
name: Conventional Commitlint
on:
push:
branches: ["main"]
pull_request:
jobs:
commitlint:
runs-on: ubuntu-latest
name: Conventional Commitlint
permissions:
contents: read
pull-requests: read
steps:
- name: Conventional Commitlint
uses: opensource-nepal/commitlint@v1Note: The
commitlintGitHub Action is triggered only bypush,pull_request, orpull_request_targetevents.
The action requires read permission for the following scopes:
contents: read: This allows the action to list commits of the repository.pull-requests: read: This allows the action to list the commits in a Pull Request.
For public repositories, these permissions are granted by default. For private repositories, you must explicitly grant them, either in:
Without these, you may encounter an error like:
Github API failed with status code 403. Response: {'message': 'Resource not accessible by integration', 'documentation_url': 'https://docs.github.com/rest/pulls/pulls#list-commits-on-a-pull-request', 'status': '403'}
| # | Name | Type | Default | Description |
|---|---|---|---|---|
| 1 | fail_on_error | Boolean | true |
Whether the GitHub Action should fail if commitlint detects an issue. |
| 2 | verbose | Boolean | false |
Enables verbose output. |
| 3 | token | String | secrets.GITHUB_TOKEN |
GitHub Token for fetching commits using the GitHub API. |
| # | Name | Type | Description |
|---|---|---|---|
| 1 | exit_code | Integer | The exit code of the commitlint step. |
| 2 | status | String | The outcome of the commitlint step (success or failure). |
-
Add the following configuration to
.pre-commit-config.yaml:repos: ... - repo: https://github.com/opensource-nepal/commitlint rev: v1.3.0 hooks: - id: commitlint ...
-
Install the
commit-msghook in your project repository:pre-commit install --hook-type commit-msg
Running only
pre-commit installwill not work.
Note: Avoid using commit messages that start with
#, as this may cause unexpected behavior withcommitlint.
For CLI usage, please refer to cli.md.
We appreciate feedback and contributions to this package. To get started, please see our contribution guide.