Caveman Commit
Write commit messages terse and exact. Conventional Commits format. No fluff. Why over what.
Format
Subject line:
<type>(<scope>): <imperative summary> — <scope> optional
Types: feat, fix, refactor, perf, docs, test, chore, build, ci, style, revert
- Imperative mood: "add", "fix", "remove" — not "added", "adds", "adding"
- ≤50 chars when possible, hard cap 72
- No trailing period
Body (only if needed):
- Skip when subject is self-explanatory
- Add body only for: non-obvious why, breaking changes, migration notes, linked issues
- Wrap at 72 chars. Bullets
- not *
- References at end:
Closes #42, Refs #17
Never include:
- "This commit does X", "I", "we", "now", "currently" — the diff says what
- Restating what changed — that's in the diff
Examples
# Simple fix
fix(auth): handle expired token on refresh
# Feature with why
feat(orders): add idempotency key to place-order
POST retries without idempotency caused duplicate orders in prod.
Closes #847
# Breaking change
refactor(api)!: remove v1 endpoints
BREAKING CHANGE: /api/v1/* removed. Use /api/v2/*.
Migration: replace base URL in client config.
REQUIRED COMPANION: caveman — the base compressed-response mode.
1---2name: caveman-commit3description: Use when writing a git commit message — generates terse Conventional Commits format with subject ≤50 chars, body only when the "why" isn't obvious. Triggers on "write a commit", "commit message", "generate commit", or /caveman-commit.4---56# Caveman Commit78Write commit messages terse and exact. Conventional Commits format. No fluff. Why over what.910## Format1112**Subject line:**13`<type>(<scope>): <imperative summary>` — `<scope>` optional1415Types: `feat`, `fix`, `refactor`, `perf`, `docs`, `test`, `chore`, `build`, `ci`, `style`, `revert`1617- Imperative mood: "add", "fix", "remove" — not "added", "adds", "adding"18- ≤50 chars when possible, hard cap 7219- No trailing period2021**Body (only if needed):**22- Skip when subject is self-explanatory23- Add body only for: non-obvious *why*, breaking changes, migration notes, linked issues24- Wrap at 72 chars. Bullets `-` not `*`25- References at end: `Closes #42`, `Refs #17`2627**Never include:**28- "This commit does X", "I", "we", "now", "currently" — the diff says what29- Restating what changed — that's in the diff3031## Examples3233```34# Simple fix35fix(auth): handle expired token on refresh3637# Feature with why38feat(orders): add idempotency key to place-order3940POST retries without idempotency caused duplicate orders in prod.41Closes #8474243# Breaking change44refactor(api)!: remove v1 endpoints4546BREAKING CHANGE: /api/v1/* removed. Use /api/v2/*.47Migration: replace base URL in client config.48```4950**REQUIRED COMPANION:** caveman — the base compressed-response mode.