commit-message
Commit Message
Section titled “Commit Message”HARD GATE — HARD GATE — Commits must follow Conventional Commits spec (type(scope): description). Do NOT use vague messages like ‘fix’ or ‘updates.’ The message must explain the ‘why,’ not the ‘what.’
- Default: standard Conventional Commits message
- –fix-type: Forces type=fix. Use when commit type is unambiguous.
What “last chat” means
Section titled “What “last chat” means”- Primary source of truth:
git status,git diff(unstaged), andgit diff --cached(staged). Run these in the repo root (or the paths the user changed). - Context: use the current conversation to summarize intent and to spot breaking API/behavior changes that diff alone may not show.
- If the user tracks a session baseline (e.g. branch, tag, or
git stash createat start), you maygit diff <baseline>..HEADplus uncommitted diffs; otherwise use only the index and working tree.
Quick workflow
Section titled “Quick workflow”- Inventory — List changed paths; group by feature vs chore vs docs vs test-only.
- Decide commit shape — One atomic commit is ideal. If the diff mixes unrelated concerns, recommend multiple commits (each with its own type/scope) before suggesting one message.
- Classify for semantic release —
fix→ patch,feat→ minor, breaking → major. - Write the message —
type(optional-scope)!: description(see REFERENCE.md). Use!or aBREAKING CHANGE:footer when behavior contracts change. - Note defensive-code categories touched — from CONVENTIONS.md: Rate limit | Retry with backoff | Circuit breaker | Timeout | Graceful degradation
- Note fix-ratio contribution — Each
fix:commit counts towardmetrics.commit_ratio.fixinspecs/state.yaml. Afterrelease-branch,session-staterecalculates the ratio automatically. A high fix rate (>30%) triggers a deploy + smoke-test suggestion. - Deliver — Output:
- Proposed full commit message (title + optional body + footers).
- Release bump this commit would drive:
patch|minor|major|none. - Optional
git add …andgit commit -minstructions; do not run destructive git commands unless the user asked.
Checklist before finalizing
Section titled “Checklist before finalizing”- Type matches the dominant user-visible outcome (
featvsfixvsperf, etc.). - Scope is a short noun in parentheses if it helps (e.g.
fix(api): …). - Breaking changes are explicit (
!and/orBREAKING CHANGE:in the body/footer). - Description is imperative, lowercase start after the prefix, no trailing period in the title line.
When not to invent a bump
Section titled “When not to invent a bump”If the repo uses a custom @semantic-release/commit-analyzer preset, note that your bump is heuristic and they should match .releaserc / release.config.*. See REFERENCE.md.
Further reading
Section titled “Further reading”- REFERENCE.md — Message shape, footers, release mapping, squashing notes.
Handoff
Section titled “Handoff”Gate: READY -> next: release-branch Writes: state.yaml handoff.next_skill = release-branch