🌐
PyPI
pypi.org › project › commitlint
commitlint
JavaScript is disabled in your browser. Please enable JavaScript to proceed · A required part of this site couldn’t load. This may be due to a browser extension, network issues, or browser settings. Please check your connection, disable any ad blockers, or try using a different browser
🌐
Conventional Commits
conventionalcommits.org › en › about
Tooling for Conventional Commits
commitlint: A linter to check that your commit messages meet the Conventional Commits format. gitlint: Git commit message linter written in Python, which can be configured to enforce Conventional Commits format.
🌐
GitHub
github.com › topics › python-commitlint
python-commitlint · GitHub Topics · GitHub
python git hooks pr pre-commit actions pull-requests commit commit-message conventional commitlint github-actions commit-lint pre-commit-hook conventional-commit semantic-commit python-commitlint
🌐
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%
🌐
PyPI
pypi.org › project › commit-linter
commit-linter · PyPI
commit-linter is a Python tool that helps you standardize your commit messages to a known commit conventions.
      » pip install commit-linter
    
Published   Aug 17, 2023
Version   1.0.3
🌐
Reddit
reddit.com › r/python › gitfluff: commit message linter (conventional commits + ai signature cleanup)
r/Python on Reddit: gitfluff: Commit Message Linter (Conventional Commits + AI signature cleanup)
October 17, 2025 -

Hey Peeps,

I'm pleased to show case a new small and very fast commit message linter and autofixer tool gitfluff.

What My Project Does

Claude Code kept injecting "🤖 Co-Authored-By" trailers into commits. You can disable it now in local settings, but I needed team-wide enforcement across multiple repos and multiple languages. Plus I wanted strict Conventional Commits validation without cobbling together multiple tools.

What it does

  • Enforces Conventional Commits 1.0.0 (type, scope, breaking changes, footers) with full spec compliance.

  • Strips AI signatures automatically (configurable patterns)

  • Validates or rewrites messages in place with --write

  • Zero config to start, optional .gitfluff.toml for custom rules which allow you to do whatever you want basically.

Install & Use

The tool is written and rust and is compiled to multiple platforms. You can install it directly via cargo:

cargo install gitfluff

Or using homebrew:

brew install goldziher/tap/gitfluff

Or via NPM:

npm install -g gitfluff

Or via PIP:

pip install gitfluff

You can then install it as a commit message hook:

gitfluff hook install commit-msg --write

Alternatively you can install it as a hook for pre-commit (or prek) by adding the following to you .pre-commit-config:

repos:
  - repo: https://github.com/Goldziher/gitfluff
    rev: v0.2.0
    hooks:
      - id: gitfluff-lint
        name: gitfluff (lint)
        entry: gitfluff lint --from-file
        language: system
        stages: [commit-msg]
        args: ["{commit_msg_file}"]

      # or using the autofix hook:

      # - id: gitfluff-write
      #  name: gitfluff (lint + write)
      #  entry: gitfluff lint --from-file
      #  language: system
      #  stages: [commit-msg]
      #  args: ["{commit_msg_file}", "--write"]

And then run pre-commit install --hook-type commit-msg, which will install the hook correctly.

You can also integrate it into lefthook or husky using npx or uvx commands!

Main workflow: add to pre-commit config, forget about it. Devs commit normally, hook validates/cleans messages before they hit history.

Target Audience

Teams enforcing commit conventions across polyglot projects. Devs using AI coding assistants who want clean commit history. Anyone who needs Conventional Commits validation without JavaScript dependencies.

Comparison

  • commitlint (Node ecosystem, requires separate config for cleanups)

  • cocogitto (Rust, focused on semver release workflows)

  • gitlint (Python, extensible but requires custom plugins for AI signatures)

And many other tools of course, I cant claim this is original. The main difference is that gitfluff combines validation + pattern cleanup in one binary with prebuilt distributions for all major platforms.

As usual, if you like the tool, star github.com/Goldziher/gitfluff.

🌐
GitHub
github.com › topics › commitlint
commitlint - Python
Python module that will lint commit messages according to the conventional commit scheme. ... Add a description, image, and links to the commitlint topic page so that developers can more easily learn about it.
🌐
Socket
socket.dev › pypi › package › commitlint
commitlint - PyPI Package Security Analysis - Socket.dev
commitlint · commit lint · python ... FAQs · What is commitlint? commitlint is a pre-commit hook designed to lint your commit messages according to the Conventional Commits standard....
🌐
PyPI
pypi.org › project › gitlint
gitlint · PyPI
Git commit message linter written in python, checks your commit messages for style.
      » pip install gitlint
    
Published   Mar 10, 2023
Version   0.19.1
Find elsewhere
🌐
Sneawo
blog.sneawo.com › blog › 2024 › 01 › 27 › essential-python-tools-for-writing-quality-code
Essential Python tools for writing quality code - Andrey Zhukov's Tech Blog
January 27, 2024 - commitlint: A not python tool that checks your commit messages for compliance with conventional commit standards.
🌐
GitHub
github.com › jorisroovers › gitlint
GitHub - jorisroovers/gitlint: Linting for your git commit messages · GitHub
Git commit message linter written in python, checks your commit messages for style.
Starred by 954 users
Forked by 112 users
Languages   Python 98.5% | Shell 1.1%
🌐
Manuel-vogel
manuel-vogel.de › posts › 2023-05-09-commitlint
commitlint - pre-commit or husky | Manuel Vogel
# as we need to add the echo -n "module.exports = { extends: ['@commitlint/config-conventional'] };" >> .commitlintrc.js # to actually install the dependencies and the git hook npm run projen ... However if you are doing a general non-nodejs project, e.g. python or golang, then pre-commit is the general tool which operates with python under the hood.
🌐
GitHub
github.com › conventionalcommit › commitlint
GitHub - conventionalcommit/commitlint: commitlint checks if your commit messages meets the conventional commit format · GitHub
February 22, 2026 - echo "fear: do not fear for commit message" | commitlint lint # ❌ type-enum: type 'fear' is not allowed, you can use one of [build chore ci docs feat fix merge perf refactor revert style test]
Starred by 86 users
Forked by 9 users
Languages   Go 91.4% | Shell 8.6%
🌐
Commitlint
commitlint.js.org
commitlint
To get the most out of commitlint you'll want to automate it in your project lifecycle.
🌐
Pydigger
pydigger.com › pypi › commitlint
commitlint
# commitlint [![PyPI version](https://badge.fury.io/py/commitlint.svg)](https://badge.fury.io/py/commitlint) [![CI status](https://github.com/opensource-nepal/commitlint/actions/workflows/ci.yaml/badge.svg?branch=main)](https://github.com/opensource-nepal/commitlint/actions) [![Downloads](https://img.shields.io/pypi/dm/commitlint.svg?maxAge=180)](https://pypi.org/project/commitlint/) [![codecov](https://codecov.io/github/opensource-nepal/commitlint/graph/badge.svg?token=lRmPZsIHb6)](https://codecov.io/github/opensource-nepal/commitlint) [![License](https://img.shields.io/pypi/l/commitlint?label=License)](https://github.com/opensource-nepal/commitlint/blob/main/LICENSE) commitlint is a tool designed to lint your commit messages according to the [Conventional Commits](https://www.conventionalcommits.org/) standard for your pre-commit hook and GitHub Actions.
🌐
GitHub
github.com › alessandrojcm › commitlint-pre-commit-hook
GitHub - alessandrojcm/commitlint-pre-commit-hook: A pre-commit hook for commitlint · GitHub
Note that you need to specify a shared configuration in order for commitlint to work, if commitlint is new to you just use their default configuration (@commitlint/config-conventional).
Starred by 182 users
Forked by 18 users
🌐
GitHub
git.histb.com › topics › python-commitlint
python-commitlint · GitHub Topics · GitHub
April 7, 2024 - commitlint is a tool designed to lint your commit messages according to the Conventional Commits standard for your pre-commit hook and GitHub Actions.
🌐
freeCodeCamp
freecodecamp.org › news › how-to-use-commitlint-to-write-good-commit-messages
How to Write Good Commit Messages with Commitlint
November 12, 2021 - Commitlint is a simple tool that lints your commit messages and makes sure they follow a set of rules.