Commit Message Writer
Write commit messages that follow Conventional Commits.
Format
<type>(<scope>): <subject>
<body>
<footer>
- type (required): one of
feat,fix,refactor,test,chore,docs - scope (optional): the module/area touched, e.g.
auth,api,parser - subject (required): imperative mood, lowercase, no period, ≤ 50 chars
- body (optional): wrap at 72 chars, explain why not what
- footer (optional):
BREAKING CHANGE: ...orCloses #123
Rules
- Subject line in imperative mood: "add login form", not "added" or "adds".
- Blank line between subject and body, and between body and footer.
- Use
!after type/scope for breaking changes:feat(api)!: drop v1 endpoints. - One commit = one logical change. If the diff covers multiple concerns, suggest splitting.
- Never put file names in the subject. Use scope instead.
Workflow
- Ask for the diff or
git statusoutput if not provided. - Determine type from the nature of the change (new feature →
feat, bugfix →fix, etc.). - Pick a scope from the most-touched directory or module.
- Write subject, then body only if context is non-obvious.
- Add
BREAKING CHANGE:footer if applicable.
Examples
feat(auth): add OAuth login via GitHub
Users can now sign in with their GitHub account. Uses the standard
OAuth2 flow; tokens are stored in httpOnly cookies.
Closes #142
fix(parser): handle empty input without crashing
refactor(api)!: rename /users endpoint to /accounts
BREAKING CHANGE: /users is removed. Update clients to use /accounts.
Source: sunnykgupta/AI-Helpers — distributed by TomeVault.