Command Palette

Search for a command to run...

v0.4.0 released →

Enforce your conventions,
not ours.

A commit message linter configured from one atypical.toml. A native binary, no Node.js runtime.

Install atypical v0.4.0

npm i -D @atypical/commit
Then read the docs →

+500× faster. 8× smaller.

Linting a valid header

mean wall time · milliseconds (lower is better)

atypical
1.3ms
commitlint
643.3ms
0ms200ms400ms600ms800ms

hyperfine, 100 runs after 10 warmup · 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz · 2026-10-20

reproduce

Atypical is a toolkit for enforcing your own conventions, configured from one file in which each tool reads its own section. Bring your grammar, not someone else's.

Try it out

npm i -D @atypical/commit
Terminal
$ echo 'feat: add a parser' | npx commit-lint -
[03] Error: Failed to parse commit message ╭─[ -:1:1 ] │ 1 │ feat: add a parser │ ──┬─ │ ╰─── `feat` is not in `keywords`, expected one of: release, undo, add, fix, ref, rem ───╯
$ echo 'add(lib)[int]: add a parser' | npx commit-lint -
$ echo $?
0
$
One file, every tool.
Every tool finds the nearest atypical.toml and reads only its own section. Start from a preset, override what differs.
extends = "npm:@atypical/commit/standard"
Your grammar, declared.
A commit header is a list of slots in header order: words, symbols, or delimited values.
atypical.toml
[[commit.slots]]
name = "keywords"
kind = "word"
values = ["feat", "fix"]
required = true

Bring a grammar, or start from one.

atypical.toml
extends = "npm:@atypical/commit/standard"
Standard Commits preset →
  • add(exe)[int]: initial
  • ref!![eff]: x
  • fix!(ci)[sec]: x
  • feat: x
  • add(exe)!: x

Hooks and CI.

Catch it at commit.
Drop it into a commit-msg hook, husky or plain git.
.husky/commit-msg
commit-lint -- "$1"
Or the whole range.
Lint every commit a pull request brings in.
npx commit-lint --from origin/main

Lint the history you already have.

No hook needed yet.
Every commit since origin/main is checked against the preset.
npm i -D @atypical/commit
echo 'extends = "npm:@atypical/commit/conventional"' > atypical.toml
npx commit-lint --from origin/main

Open Source.

MIT or Apache-2.0.
At your option.