Error
Commit message doesn't follow the conventional commits specification.
Why this matters
Conventional commits let tools generate changelogs and bump versions automatically. They also keep git history readable and consistent across the team.
Expected format
type(scope): description
[optional body]
[optional footer(s)]
How to fix
Use the correct format:
# Basic:
git commit -sS -m "feat(api): add user endpoint"
# With body:
git commit -sS -m "fix(auth): resolve token expiration
Tokens were expiring immediately due to timezone
misconfiguration in the JWT library."
Valid types
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
style |
Formatting, no code change |
refactor |
Code change without feat/fix |
perf |
Performance improvement |
test |
Adding/modifying tests |
build |
Build system or dependencies |
ci |
CI configuration |
chore |
Other changes |
revert |
Reverting a commit |
Configuration
Disable conventional commit checking:
[validators.git.commit.message]
conventional_commits = false
Customize valid types:
[validators.git.commit.message]
valid_types = ["feat", "fix", "docs", "chore"]
Make scope optional:
[validators.git.commit.message]
require_scope = false
Hook output
When this error is triggered, klaudiush writes JSON to stdout:
permissionDecisionReason (shown to Claude):
[GIT013] Commit message doesn't follow conventional commits format. Use conventional commit format: type(scope): description
systemMessage (shown to user): Formatted error with fix hint and reference URL.
additionalContext (behavioral guidance):
Automated klaudiush validation check. Fix the reported errors and retry the same command.