caveman-commit — Claude Code skill: what it does, how to install
Generates terse Conventional Commits messages focused strictly on intent. Ideal for keeping git history clean without boilerplate or AI signatures.
npx skills add JuliusBrussee/caveman --skill caveman-commit -a claude-codeWhat caveman-commit does
The skill drafts commit messages following the Conventional Commits specification. It uses standard types such as feat, fix, or refactor, keeping the subject line imperative and under 50 characters when possible. It drops filler words like "now", personal pronouns, and automated AI attribution footers.
Commit bodies appear only when necessary. The skill enforces a body for breaking changes, security fixes, migrations, or reverts where context is vital for future debugging. Self-explanatory changes stay as subject-only messages.
It has strict boundaries. The skill does not stage files, amend commits, or invoke git commit. It outputs a ready-to-paste code block instead. If you want the agent to commit code automatically, look elsewhere.
What it helps with
- format commit messages using Conventional Commits
- strip AI attributions and filler words from commit texts
- document breaking changes and migrations in commit bodies
- draft commit messages without staging or committing files
Example prompts for the agent
- write a commit message for current changes
- /caveman-commit
- /commit
How to install caveman-commit
1Skills CLI (Vercel)
npx skills add JuliusBrussee/caveman --skill caveman-commit -a claude-code2Manually: put the files in place
~/.claude/skills/caveman-commit/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/caveman-commit/
1Skills CLI (Vercel)
npx skills add JuliusBrussee/caveman --skill caveman-commit -a codex2Manually: put the files in place
.agents/skills/caveman-commit/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add JuliusBrussee/caveman --skill caveman-commit -a cursor2Manually: put the files in place
.cursor/skills/caveman-commit/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install JuliusBrussee/caveman caveman-commit2Manually: put the files in place
.github/skills/caveman-commit/SKILL.md1Skills CLI (Vercel)
npx skills add JuliusBrussee/caveman --skill caveman-commit -a gemini-cli2Platform CLI
gemini skills install https://github.com/JuliusBrussee/caveman --path skills/caveman-commitManually: put the files in place
.devin/skills/caveman-commit/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add JuliusBrussee/caveman --skill caveman-commit -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set22
The whole set →Similar
Questions about caveman-commit
How to install caveman-commit in Claude Code?
Run npx skills add JuliusBrussee/caveman --skill caveman-commit -a claude-code in your terminal. You can also place the skill file directly at ~/.claude/skills/caveman-commit/SKILL.md.
What does caveman-commit do?
It writes concise Conventional Commits messages that prioritize the reason for a change over a raw diff description. It strips out conversational filler, emoji, and default AI attribution trailers.
Does caveman-commit run git commands?
No, the skill only creates the text block. It does not run git commit, stage changes, or amend previous commits.
Source text
SKILL.md · Apache-2.0
--- name: caveman-commit description: > Write a Conventional Commits message compressed to intent only. Use for "write a commit", "commit message", /commit or /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 — 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.
© JuliusBrussee · Apache-2.0 · JuliusBrussee/caveman