explaingit

conventional-changelog/commitlint

Analysis updated 2026-06-21

18,522TypeScriptAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

A tool that checks your git commit messages follow a consistent format like 'fix: send login error' before they're accepted, keeping project history readable and changelog-friendly.

Mindmap

mindmap
  root((commitlint))
    What it does
      Validates commit messages
      Enforces format rules
      Blocks bad commits
    Tech stack
      TypeScript
      Node.js
      Monorepo packages
    Use cases
      Git hook enforcement
      CI pipeline checks
      Team standardization
    Audience
      Software developers
      Dev teams
      Open source projects
    License
      MIT
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Enforce consistent commit message format across a team so the git history is always readable

USE CASE 2

Set up a git hook that blocks commits locally if the message doesn't match the conventional commits pattern

USE CASE 3

Add commitlint to a CI pipeline so pull requests are rejected if they contain non-standard commit messages

USE CASE 4

Use a shared commitlint config across multiple repos to standardize commit style for an entire organization

What is it built with?

TypeScriptNode.js

How does it compare?

conventional-changelog/commitlintmotion-canvas/motion-canvasmountain-loop/yaak
Stars18,52218,50118,613
LanguageTypeScriptTypeScriptTypeScript
Setup difficultyeasyeasymoderate
Complexity2/53/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 30min

Works best when paired with a git hook manager like husky to automatically run on every commit.

Free to use for any purpose, including commercial projects, as long as you keep the MIT copyright notice.

In plain English

commitlint is a tool that checks whether git commit messages follow a consistent format before they are accepted. A commit message is the note a developer writes to describe what changed in a set of code edits. When many developers contribute to the same project, inconsistent commit messages make it hard to read the history or automatically generate changelogs. The conventional commit format commitlint enforces looks like: type(scope): subject, for example, fix(server): send cors headers or feat(blog): add comment section. The type describes the nature of the change (fix, feat, chore, docs, test, and others), the optional scope narrows down which part of the codebase was affected, and the subject is a short description. commitlint checks that messages match this pattern and flags anything that doesn't. It is typically configured to run automatically as a git hook, meaning it checks your message every time you commit locally, or as part of a continuous integration pipeline so that messages are validated whenever code is pushed to a shared repository. Configuration is loaded from files like .commitlintrc or a commitlint field in package.json. A number of pre-built shared configurations are available to extend, covering different convention styles. The library is MIT-licensed and maintained as a monorepo, a single repository containing multiple related packages.

Copy-paste prompts

Prompt 1
How do I set up commitlint in my Node.js project so it automatically checks my git commit messages follow the conventional commits format before each commit?
Prompt 2
My team uses the conventional commits format. Show me how to configure commitlint with @commitlint/config-conventional and add it as a pre-commit hook using husky
Prompt 3
How do I write a custom commitlint rule that requires the scope to be one of a specific list of values like api, ui, or db?
Prompt 4
Add commitlint to a GitHub Actions workflow so that pull requests are rejected if any commit message doesn't follow the conventional format
Prompt 5
What does a valid conventional commit message look like, and what types are allowed by the default commitlint config?

Frequently asked questions

What is commitlint?

A tool that checks your git commit messages follow a consistent format like 'fix: send login error' before they're accepted, keeping project history readable and changelog-friendly.

What language is commitlint written in?

Mainly TypeScript. The stack also includes TypeScript, Node.js.

What license does commitlint use?

Free to use for any purpose, including commercial projects, as long as you keep the MIT copyright notice.

How hard is commitlint to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is commitlint for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub conventional-changelog on gitmyhub

Verify against the repo before relying on details.