47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
# Commit Message Checklist
|
|
|
|
**Use before creating any git commit.**
|
|
|
|
## Format Validation
|
|
|
|
- [ ] Type is one of: feat, fix, docs, style, refactor, test, chore, perf, ci, build, revert
|
|
- [ ] Type is lowercase
|
|
- [ ] Scope is meaningful and lowercase (if included)
|
|
- [ ] Subject uses imperative mood ("add" not "added")
|
|
- [ ] Subject is lowercase (NO capitals anywhere)
|
|
- [ ] Full header (type + scope + subject) is under 100 characters
|
|
- [ ] Subject doesn't end with a period
|
|
|
|
## Body (if included)
|
|
|
|
- [ ] Blank line after subject
|
|
- [ ] Explains **why** the change was made
|
|
- [ ] Wraps at 90 characters per line
|
|
- [ ] Uses bullet points for lists
|
|
- [ ] Written in present tense
|
|
|
|
## Footer (if included)
|
|
|
|
- [ ] Blank line before footer
|
|
- [ ] Breaking changes start with "BREAKING CHANGE:"
|
|
- [ ] Linear issues referenced as GREY-123
|
|
- [ ] GitHub issues referenced as #123
|
|
|
|
## Content Quality
|
|
|
|
- [ ] Commit message is descriptive and specific
|
|
- [ ] Change is atomic (single logical change)
|
|
- [ ] No sensitive information (passwords, keys, tokens)
|
|
- [ ] Multi-tenant changes mention tenant_id (if applicable)
|
|
|
|
## Python Projects
|
|
|
|
- [ ] Virtual environment activated (source .venv/bin/activate)
|
|
- [ ] Pre-commit hooks will run (Ruff, mypy, pytest)
|
|
|
|
## Before Pushing
|
|
|
|
- [ ] Commits follow squash-merge strategy (if merging to main)
|
|
- [ ] Breaking changes are clearly documented
|
|
- [ ] Linear issues are referenced
|