Skip to content

Commit conventions

commitlint.config.js in the repo root is a one-liner:

module.exports = {
extends: ['@commitlint/config-conventional'],
};

That means commits must follow Conventional Commits 1.0 as enforced by @commitlint/config-conventional. The .husky/commit-msg hook runs npx --no -- commitlint --edit $1 on every commit, so non-conforming messages are rejected locally.

<type>(<scope>)?: <subject>
<body>
<footer>

Rules in effect (from @commitlint/config-conventional):

RuleValue
type-enumOne of: build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test
type-caselower-case
type-emptytype is required
subject-emptysubject is required
subject-full-stopsubject must not end with .
subject-casemust not be sentence-case, start-case, pascal-case, or upper-case
header-max-length100 chars
body-leading-blankblank line between header and body (warning)
body-max-line-length100 chars per line (warning)
footer-leading-blankblank line between body and footer (warning)
footer-max-line-length100 chars per line (warning)
feat(tabs): cap simultaneous open tabs at 4 with FIFO eviction
fix(sidebar): correct move up/down boundaries + reorder + graph recenter on resize
docs(README): document npx @azrtydxb/kryton-init as the recommended way to connect agents

All three are drawn straight from git log.

Added new feature.

Fails type-empty (no type), subject-case (start-case), and subject-full-stop (trailing period).

FEAT: new plugin slot

Fails type-case (must be lower-case).

fix: This is an extremely long subject line that wanders well past one hundred characters and therefore exceeds the configured header-max-length limit

Fails header-max-length (over 100 chars).

The repo uses scopes liberally — server, client, plugins, admin, ui, sidebar, kryton-init, site, etc. Pick the package or area touched. git log --oneline shows the convention in practice.

Alongside the commit-msg check, .husky/pre-commit runs lint-staged, which executes eslint --fix against staged TypeScript files under packages/client/src/ and packages/server/src/.