Analyzes staged git changes and generates a Conventional Commits message.
- "commit"
- "git commit"
- "write a commit message"
- "save to git"
- "create a commit"
<type>(<scope>): <short description>
[optional body — explain WHAT and WHY, not HOW]
[optional footer — breaking changes, closes issue]
Short description rules:
- Max 72 characters
- Imperative mood: "add", "fix", "update" — not "added", "fixed"
- Written in English
| Type | When to use |
|---|---|
feat |
New feature |
fix |
Bug fix |
refactor |
Refactor without behavior change |
docs |
Documentation only |
test |
Add or update tests |
chore |
Build, config, dependencies |
perf |
Performance improvement |
ci |
CI/CD pipeline changes |
style |
Formatting only (no logic change) |
revert |
Revert a previous commit |
- Run
git diff --stagedto read the staged changes - Analyze which files changed, what the impact is, and why the change was made
- Choose the most appropriate
typeandscope - Write the short description — imperative mood, max 72 characters
- Add a body if the change needs context beyond the title
- Run the commit
Simple change:
feat(auth): add JWT refresh token support
Change with body:
fix(api): handle null response from payment gateway
Payment gateway occasionally returns null instead of an error object
when the service is unavailable, causing an unhandled exception.
Breaking change:
feat(api)!: change response format for /users endpoint
BREAKING CHANGE: response now returns { data: [...] } instead of a plain array
- If no files are staged, ask the user which files they want to commit before proceeding
- Never include changes from
.envor credential files in the commit - Prefer one logical change per commit over bundling unrelated changes