Commit Message Generator
Generate well-structured conventional commit messages by analyzing staged git changes.
Workflow
Check for staged changes Run
git diff --cached --statto see what's staged. If nothing is staged, tell the user and suggest they stage files first.Analyze the diff Run
git diff --cachedto get the full diff. Read through each file's changes carefully.Determine the commit type Based on the changes, select the appropriate type:
feat: New feature or capabilityfix: Bug fixrefactor: Code restructuring without behavior changedocs: Documentation onlytest: Adding or updating testschore: Build, CI, dependencies, toolingstyle: Formatting, whitespace, semicolonsperf: Performance improvement
Determine scope (optional) If the changes are localized to a specific module, component, or area, include a scope:
feat(auth): ...Write the subject line
- Use imperative mood: "add" not "added" or "adds"
- Keep under 72 characters
- Don't end with a period
- Be specific: "add OAuth2 Google login flow" not "update auth"
Write the body (if needed) For non-trivial changes, add a body separated by a blank line:
- Explain WHY, not what (the diff shows what)
- Wrap at 72 characters
- Use bullet points for multiple reasons
Check for breaking changes If the change breaks backward compatibility, add:
BREAKING CHANGE: description of what breaks and migration pathPresent the commit message Show the full message to the user and ask for confirmation before committing.
Rules
- Never skip the diff analysis — always base the message on actual changes
- If changes span multiple unrelated concerns, suggest splitting into separate commits
- Always use imperative mood in the subject
- Subject line must be under 72 characters
- Use a HEREDOC for the commit command to preserve formatting
- Include Co-Authored-By if the user requests it
Example Output
feat(auth): add OAuth2 Google login flow
Implement Google OAuth2 authentication using Supabase Auth provider.
Users can now sign in with their Google account in addition to email
magic links.
- Add Google provider configuration in Supabase dashboard
- Create OAuth callback handler at /auth/callback
- Update login page with Google sign-in button