Commit Message Format
<type>(<scope>): <short description>
Summary
Brief description of what was done. Fixes #<issue-number>.
New Components
ComponentName (path/to/file.ts)
- Bullet points describing the component
Enhanced Components
ExistingComponent.ts
- What was changed and why
Files Changed
- path/to/file1.ts
- path/to/file2.ts
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Type Prefixes
Type When to Use
feat
New feature or capability
fix
Bug fix
refactor
Code restructuring (no behavior change)
chore
Dependencies, config, tooling
docs
Documentation only
Scope is optional — use when the change targets a specific area (e.g., feat(citations): , fix(auth): ).
Commit Workflow
-
Run git diff --staged to review all staged changes
-
Read files for context if needed; look for related issue numbers
-
Write the commit message to COMMIT_MESSAGE.md
-
Run git commit -F COMMIT_MESSAGE.md
-
Delete COMMIT_MESSAGE.md
Rules
-
Subject line: max 72 chars, imperative mood ("Add" not "Added")
-
Include Fixes #N or Closes #N in Summary when applicable
-
Always list all changed files in the Files Changed section
-
Omit "Testing" and "Breaking Changes" sections — not used in this repo
-
New components: document with bullet points describing key features
-
Enhanced components: explain what changed and why
-
Always include the Co-authored-by trailer as the last line of the commit body: Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Constraints
-
❌ Don't stage files (git add ) — that's the caller's job
-
❌ Don't push (git push ) — user decides when to push
-
❌ Don't modify code — only create commits during the commit workflow