AI Skill
Pass
Audit score 90

caveman-commit

juliusbrussee/caveman

Ultra-compressed commit messages in Conventional Commits format—terse, exact, why-focused.

What is caveman-commit?

Generates concise commit messages following Conventional Commits conventions. Keeps subjects under 50 characters, omits body text unless the reasoning is non-obvious, and strips all noise. Use when you need to write a commit message or invoke /caveman-commit.

  • Formats commits as `<type>(<scope>): <summary>` with 10 types (feat, fix, refactor, perf, docs, test, chore, build, ci, style, revert)
  • Enforces imperative mood and ≤50 char subject lines (hard cap 72)
  • Includes body only for non-obvious reasoning, breaking changes, migrations, or issue references
  • Removes fluff: no "this commit", pronouns, AI attribution, emoji, or file-name repetition
  • Auto-triggers when staging changes or on explicit /caveman-commit invocation

How to install caveman-commit

npx skills add https://github.com/juliusbrussee/caveman --skill caveman-commit
Claude Code
Cursor
Windsurf
Cline

How to use caveman-commit

  1. 1.Stage your changes with `git add`
  2. 2.Invoke the skill by typing "write a commit", "commit message", "generate commit", or `/caveman-commit`
  3. 3.Review the generated message in the code block output
  4. 4.Copy and paste the message into your `git commit -m` command or editor
  5. 5.Run `git commit` manually—the skill does not stage, commit, or amend automatically

Use cases

Good for
  • Quickly generate clean commit messages for feature branches and bug fixes
  • Document breaking API changes with required context for future maintainers
  • Create terse commits for refactoring and performance improvements without verbose explanations
  • Maintain consistent Conventional Commits style across a team or project
  • Generate commit messages during rapid development without context-switching
Who it's for
  • Developers working in teams with Conventional Commits standards
  • Projects using automated changelog or release-note generation
  • Engineers who want faster, noise-free commit history
  • Teams practicing trunk-based or frequent-commit workflows

caveman-commit FAQ

When should I include a commit body?

Only when the *why* is non-obvious. Always include body for breaking changes, security fixes, data migrations, and reverts. Skip it for self-explanatory diffs.

Can I use emoji or custom formatting?

No, unless your project convention explicitly requires it. The skill strips emoji and fluff by default.

Does this skill run `git commit` for me?

No. It only generates the message as a code block. You copy and paste it, then run `git commit` yourself.

What if I want verbose commits instead?

Say "stop caveman-commit" or "normal mode" to revert to verbose commit style.

How are AI-generated commits attributed?

No AI attribution is added unless your project's own rule requires an `Assisted-by` or similar trailer. The skill respects your project's conventions.

Full instructions (SKILL.md)

Source of truth, from juliusbrussee/caveman.


name: caveman-commit description: > Ultra-compressed commit message generator. Cuts noise from commit messages while preserving intent and reasoning. Conventional Commits format. Subject ≤50 chars, body only when "why" isn't obvious. Use when user says "write a commit", "commit message", "generate commit", "/commit", or invokes /caveman-commit. Auto-triggers when staging changes.

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 payload
    to 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/checkout
    before 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.