My Projects

Conventional commit checker

A colleague added commitlint to a Rust project. Suddenly the repo needed Node.js, npm, Husky, and a node_modules directory just to validate a commit message. The spec is a grammar — parsing it takes milliseconds and has no business pulling in a JavaScript runtime. A single binary is all it needs.

Features

Integrations

Local git hook — one command, no extra tooling:

commit-check install-hook

GitHub Actions:

- name: Validate commit message
  run: git log -1 --pretty=%B | docker run -i slundi/commit-check:latest validate

GitLab CI:

commit-msg-check:
  image: slundi/commit-check:latest
  script: echo "$CI_COMMIT_MESSAGE" | commit-check validate
  only: [merge_requests]

Woodpecker / Drone CI:

- name: validate-commit
  image: slundi/commit-check:latest
  commands:
    - echo "$${CI_COMMIT_MESSAGE}" | commit-check validate --verbose

pre-commit framework (.pre-commit-config.yaml):

repos:
  - repo: https://codeberg.org/slundi/conventional-commits
    rev: v1.0.0
    hooks:
      - id: commit-check
        stages: [commit-msg]

Nix — run without installing:

nix run github:slundi/conventional-commits -- validate --message "feat: nix support"

Comparison

commit-checkcommitlintcommitizen
Runtime requirednone❌ Node.js❌ Node.js / Python
Single static binary
Hook management built-ininstall-hook❌ needs Husky❌ needs Husky
Semantic footer parsingPartial (regex)
Auto-fix--fix
Body / trailer cleaning
JSON output
Usable as a library✅ Rust crate
Docker image
Interactive commit wizard

commitizen’s interactive prompt for guided commit creation is out of scope for this tool — it focuses on validation, not authoring.

Installation

cargo install conventional-commits

Docker:

echo "feat: add login" | docker run -i slundi/commit-check:latest validate

Nix flake — no install needed:

nix run github:slundi/conventional-commits -- validate --message "feat: nix support"

Repo · crates.io · lib.rs