
Caveman Commit
Generate ultra-terse Conventional Commits messages from staged changes, with a short body only when the rationale is not obvious from the subject.
Install
npx skills add https://github.com/juliusbrussee/caveman --skill caveman-commitWhat is this skill?
- Conventional Commits with optional scope and strict subject length caps
- Body omitted unless why, breaking changes, or issue links need explanation
- Explicit bans on fluff, AI attribution, and redundant restatement of the diff
Adoption & trust: 140k installs on skills.sh; 70k GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Triagemattpocock/skills
Using Git Worktreesobra/superpowers
Finishing A Development Branchobra/superpowers
Git Commitgithub/awesome-copilot
Git Guardrails Claude Codemattpocock/skills
Setup Pre Commitmattpocock/skills
Journey fit
Primary fit
Commit authoring is part of day-to-day implementation while features and fixes are being built and staged. The skill is invoked as an agent workflow (/caveman-commit, auto on stage) to compress messages during AI-assisted development tooling.
Common Questions / FAQ
Is Caveman Commit safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Caveman Commit
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 - 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. # caveman-commit Terse Conventional Commits. Why over what. ## What it does Generates commit messages in Conventional Commits format. Subject ≤50 chars, hard cap 72. Imperative mood. Body only when the *why* is non-obvious or there are breaking changes. No AI attribution, no "this commit does X", no emoji unless the project uses them. Body always required for breaking changes, security fixes, data migrations, and reverts — future debuggers need the context. Outputs only the message. Does not stage, commit, or amend. ## How to invoke ``` /caveman-commit ``` Also triggers on phrases like "write a commit", "commit message", "generate commit". ## Example output Diff: new endpoint for user profile. ``` 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 rename. ``` 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. ``` ## See also - [`SKILL.md`](./SKILL.md) — full LLM-facing instructions - [Caveman README](../../README.md) — repo overview