I had the same issue and was able to overcome it by adding this section to my package.json, which configures commitlint to use config-conventional.

"commitlint": {
  "extends": [
    "@commitlint/config-conventional"
  ]
},

Also ensure that you installed both dev dependencies.

"@commitlint/cli": "18.0.0",
"@commitlint/config-conventional": "18.0.0",

You can find this also in the commitlint projects package.json. ;- ) https://github.com/conventional-changelog/commitlint/blob/master/package.json

Answer from lars on Stack Overflow
🌐
GitHub
github.com › conventional-changelog › commitlint › tree › master › @commitlint › config-conventional
commitlint/@commitlint/config-conventional at master · conventional-changelog/commitlint
npm install --save-dev @commitlint/config-conventional @commitlint/cli echo "export default {extends: ['@commitlint/config-conventional']};" > commitlint.config.js
Author   conventional-changelog
🌐
npm
npmjs.com › package › @commitlint › config-conventional
@commitlint/config-conventional - npm
March 15, 2026 - Shareable commitlint config enforcing conventional commits. Latest version: 20.5.0, last published: a month ago. Start using @commitlint/config-conventional in your project by running `npm i @commitlint/config-conventional`. There are 1374 other projects in the npm registry using @commitlint/config-conventional.
      » npm install @commitlint/config-conventional
    
Published   Mar 15, 2026
Version   20.5.0
🌐
Commitlint
commitlint.js.org › reference › configuration.html
Configuration | commitlint
When you extend @commitlint/config-conventional, the conventional-changelog-conventionalcommits preset is applied, which follows the Conventional Commits specification.
🌐
Commitlint
commitlint.js.org › guides › getting-started.html
Getting started | commitlint
deno add -D npm:@commitlint/cli npm:@commitlint/config-conventional · Configure commitlint to use conventional config · Linux / macOSWindows · sh · echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js · sh · # Here we use the node command to avoid encoding issue on Windows.
🌐
GitHub
github.com › conventional-changelog › commitlint
GitHub - conventional-changelog/commitlint: 📓 Lint commit messages
Node v24 changes the way that modules are loaded, and this includes the commitlint config file. If your project does not contain a package.json, commitlint may fail to load the config, resulting in a Please add rules to your commitlint.config.js error message.
Starred by 18.5K users
Forked by 965 users
Languages   TypeScript 92.2% | JavaScript 7.8%
🌐
Conventional Commits
conventionalcommits.org › en › v1.0.0
Conventional Commits
types other than fix: and feat: are allowed, for example @commitlint/config-conventional (based on the Angular convention) recommends build:, chore:, ci:, docs:, style:, refactor:, perf:, test:, and others.
🌐
GitHub
github.com › conventional-changelog › commitlint › blob › master › @commitlint › config-conventional › README.md
commitlint/@commitlint/config-conventional/README.md at master · conventional-changelog/commitlint
npm install --save-dev @commitlint/config-conventional @commitlint/cli echo "export default {extends: ['@commitlint/config-conventional']};" > commitlint.config.js
Author   conventional-changelog
Find elsewhere
🌐
jsDocs.io
jsdocs.io › package › @commitlint › config-conventional
@commitlint/config-conventional@20.4.3 - jsDocs.io
September 25, 2025 - Documentation for npm package @commitlint/config-conventional@20.4.3 - jsDocs.io
🌐
Commitlint
commitlint.js.org
commitlint
By supporting npm-installed configurations it makes sharing of commit conventions easy. ... Get high commit message quality and short feedback cycles by linting commit messages right when they are authored. ... To get the most out of commitlint you'll want to automate it in your project lifecycle.
🌐
freeCodeCamp
freecodecamp.org › news › how-to-use-commitlint-to-write-good-commit-messages
How to Write Good Commit Messages with Commitlint
November 12, 2021 - npm install @commitlint/cli @commitlint/config-conventional --save-dev # OR yarn add -D @commitlint/cli @commitlint/config-conventional
🌐
Commitlint
commitlint.js.org › guides › ci-setup.html
Guide: CI Setup | commitlint
name: CI on: [push, pull_request] permissions: contents: read jobs: commitlint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Setup node uses: actions/setup-node@v4 with: node-version: lts/* cache: npm - name: Install commitlint run: npm install -D @commitlint/cli @commitlint/config-conventional - name: Print versions run: | git --version node --version npm --version npx commitlint --version - name: Validate current commit (last commit) with commitlint if: github.event_name == 'push' run: npx commitlint --last --verbose - name: Validate PR commits with commitlint if: github.event_name == 'pull_request' run: npx commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose
🌐
Socket
socket.dev › npm › package › @commitlint › config-conventional
@commitlint/config-conventional - npm Package Security Analy...
Shareable commitlint config enforcing conventional commits. Version: 20.4.3 was published by marionebl. Start using Socket to analyze @commitlint/conf...
🌐
MHX Consulting
mhx.be › blog › conventional-commits
Blog - Conventional commits with Commitizen and Commitlint | MHX
March 1, 2022 - Install the following dependencies to enable conventional commits. npm i -D commitizen @commitlint/config-conventional @commitlint/cz-commitlint
🌐
DEV Community
dev.to › thecharacterv › git-better-with-commitlint-and-conventional-commits-21pp
Git Better with Commitlint and Conventional Commits - DEV Community
May 26, 2023 - Run the command npm install --save-dev @commitlint/config-conventional @commitlint/cli in your terminal .
🌐
GitHub
github.com › conventional-changelog › commitlint › issues › 613
Cannot find module "@commitlint/config-conventional" when running commintlint globally · Issue #613 · conventional-changelog/commitlint
April 4, 2019 - Expected Behavior I installed commitlint and commitlint/config-conventional globally, thus running echo 'hello world' | commitlint under any directory should works. Current Behavior The command raises an exception. /usr/local/lib/node_mo...
Author   dexpota
🌐
Snyk
snyk.io › advisor › @commitlint/config-conventional › @commitlint/config-conventional code examples
@commitlint/config-conventional Code Examples | Snyk
const commitTypes = require('commit-types-peakfijn'); const config = require('@commitlint/config-conventional'); config.rules['header-max-length'] = [2, 'always', 80]; config.rules['scope-empty'] = [2, 'always']; config.rules['subject-min-length'] = [2, 'always', 15]; config.rules['type-enum'] = [2, 'always', Object.keys(commitTypes)]; module.exports = config;
🌐
Commitlint
commitlint.js.org › guides › use-prompt.html
Guide: Use prompt | commitlint
yarn add --dev @commitlint/cli @commitlint/config-conventional @commitlint/prompt-cli echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
🌐
CodeSandbox
codesandbox.io › examples › package › @commitlint › config-conventional
@commitlint/config-conventional examples - CodeSandbox
Use this online @commitlint/config-conventional playground to view and fork @commitlint/config-conventional example apps and templates on CodeSandbox.