Commit
Create well-formatted git commits following Conventional Commits.
Format
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Formatting, missing semi-colons, etc. (no code change)refactor: Code change that neither fixes a bug nor adds a featureperf: Performance improvementtest: Adding missing testschore: Maintenance tasks (build process, dependencies, etc.)
Guidelines
- Subject line: Imperative mood ("add", not "added"); aim for ≤50 characters.
- Body: Wrap at 72; explain what and why, not how.
- Scope: Optional, indicates section of codebase (e.g.,
feat(auth):). - Breaking changes: Add
!after type/scope (e.g.,feat!:) and explain in footer.
Process
- Review staged changes (
git diff --staged) and outstandinggit status. - Stage files explicitly when there's any chance
git add -Awould sweep in secrets or unrelated work. - Pick the type and scope that fit.
- Write a concise subject; add a body when the change isn't self-explanatory.
Examples
feat(auth): add OAuth2 login support
Implements Google and GitHub OAuth providers.
Closes #123
fix: resolve race condition in data fetcher
The previous implementation could return stale data
when multiple requests were in flight.
chore: update dependencies to latest versions