Caveman Commit

by juliusbrussee2e08b9177c07No license110K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated today

Write a Conventional Commits message compressed to intent only. Use for "write a commit", "commit message", /commit or /caveman-commit.

Instructions onlySoftware Development
AI-generated overview

Writes terse Conventional Commits messages, subject line plus optional body, ready to paste.

What it does
This skill produces commit messages in Conventional Commits format, compressed to intent only. It defines rules for the subject line (type, optional scope, imperative summary, length limits) and for an optional body covering non-obvious rationale, breaking changes, migrations and issue references. It outputs the message as a code block ready to paste, and it does not run git commit, stage files or amend.
When to use it
Use it when asked to write a commit message, or when the user invokes commit or caveman-commit. It suits projects that follow Conventional Commits and want short, exact messages.
Requirements
Nothing beyond the agent; it is instructions only and ships no scripts.

Write commit messages terse and exact. Conventional Commits format. No fluff. Why over what.

Rules

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
  • Match project convention for capitalization after the colon

Body (only if needed):

  • Skip entirely when subject is self-explanatory
  • Add body only for: non-obvious why, breaking changes, migration notes, linked issues
  • Wrap at 72 chars
  • Bullets - not *
  • Reference issues/PRs at end: Closes #42, Refs #17

What NEVER goes in:

  • "This commit does X", "I", "we", "now", "currently" — the diff says what
  • "As requested by..." — use Co-authored-by trailer
  • "Generated with Claude Code" or any AI attribution — unless the user's own rule requires an Assisted-by/AI-attribution trailer, then add it as a trailer
  • Emoji (unless project convention requires)
  • Restating the file name when scope already says it

Examples

Diff: new endpoint for user profile with body explaining the why

  • ❌ "feat: add a new endpoint to get user profile information from the database"
  • ✅
    feat(api): add GET /users/:id/profile
    Mobile client needs profile data without the full user payloadto reduce LTE bandwidth on cold-launch screens.
    Closes #128

Diff: breaking API change

  • ✅
    feat(api)!: rename /v1/orders to /v1/checkout
    BREAKING CHANGE: clients on /v1/orders must migrate to /v1/checkoutbefore 2026-06-01. Old route returns 410 after that date.

Auto-Clarity

Always include body for: breaking changes, security fixes, data migrations, anything reverting a prior commit. Never compress these into subject-only — future debuggers need the context.

Boundaries

Only generates the commit message. Does not run git commit, does not stage files, does not amend. Output the message as a code block ready to paste. "stop caveman-commit" or "normal mode": revert to verbose commit style.

Source and attribution

Source:juliusbrussee/cavemaninskills/caveman-commitat commit2e08b91

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal