Enforces Conventional Commits format and branch naming conventions, validating commit message structure (type/scope/description header), suggesting branch name patterns (feature/*, fix/*, hotfix/*), and enforcing breaking change notation. Use when the user is about to commit, creating a branch, reviewing commit history, preparing a pull request, setting up commit linting, or asking about commit message format, branch naming, or Conventional Commits.
97
97%
Does it follow best practices?
Impact
97%
1.03xAverage score across 3 eval scenarios
Passed
No known issues
Enforce consistent commit messages and branch naming using Conventional Commits and kebab-case branch names.
Name branches by type — Follow the branch naming format
in the git-naming rule. If no rule is installed, see
branch-naming.md.
Check existing conventions — Before applying defaults,
look for .commitlintrc, commitlint.config.js, .czrc,
CONTRIBUTING.md, or recent commit history. If the repo has
established conventions, follow those instead.
Review changes — Run git status and git diff.
Verify atomicity — One logical change per commit. If you need "and" in the message, split into multiple commits. When asked to "commit all" or "commit everything", first review the diff for unrelated changes. If multiple logical changes are present, propose a split with one commit per concern and confirm the grouping before proceeding.
Stage specific files — Do not use git add . or
git add -A. Stage each file individually to avoid
committing unrelated changes.
Include generated files — If the project uses code
generation (e.g., templ generate), ensure generated
output files are staged alongside their source files.
Run the generator before staging if unsure.
Write the commit message — Follow the git-naming rule
for format. If no rule is installed, see
commit-format.md.
Key rules:
Commit.
Validate — Run git log -1 to confirm the format. If
incorrect, run git commit --amend to fix.
Check existing conventions — Look for branch protection rules, CI config, or existing branch patterns.
Create the branch — Follow the git-naming rule for
format. If no rule is installed, see
branch-naming.md.
Create from main, delete after merge.
Before pushing, check for WIP or checkpoint commits:
git log --oneline origin/main..HEADgit reset --soft origin/main to unstage all changesgit diff --cachedUser: "commit these changes"
.commitlintrc — none found, uses defaultsgit status and git diff to understand the changesauthfix(auth): handle expired tokens during reconnectgit log -1fix: stuff tells nothing.
fix(auth): resolve token expiry race condition tells the
story.git commit --amend or
git rebase -i to clean up before opening a pull requestgit mv for file renames to preserve history