---
id: daily-caveman-commit
name: "caveman-commit"
url: https://skills.yangsir.net/skill/daily-caveman-commit
author: juliusbrussee
domain: ai-project-management-collaboration
tags: ["git", "commit", "version-control", "conventional-commits", "automation"]
install_count: 97100
rating: 4.70 (26 reviews)
github: https://github.com/juliusbrussee/caveman
---

# caveman-commit

> 按照Conventional Commits规范生成简洁的Git提交消息，强调what而非why，剔除冗余表述

**Stats**: 97,100 installs · 4.7/5 (26 reviews)

## Before / After 对比

### 提交消息编写效率

**Before**:

手动编写提交消息，反复推敲措辞，纠结是否要加详细说明，一个提交消息需要2-3分钟

**After**:

自动生成符合规范的简洁提交消息，直接给出类型、范围和摘要，5秒内完成

| Metric | Before | After | Change |
|---|---|---|---|
| 编写时间 | 150秒 | 5秒 | -97% |

## Readme

# 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.
Weekly Installs13.7KRepository[juliusbrussee/caveman](https://github.com/juliusbrussee/caveman)GitHub Stars24.5KFirst Seen5 days agoSecurity Audits[Gen Agent Trust HubPass](/juliusbrussee/caveman/caveman-commit/security/agent-trust-hub)[SocketPass](/juliusbrussee/caveman/caveman-commit/security/socket)[SnykPass](/juliusbrussee/caveman/caveman-commit/security/snyk)Installed oncursor10.6Kgithub-copilot10.3Kopencode9.0Kcodex8.8Kcline8.5Kantigravity8.5K

---
*Source: https://skills.yangsir.net/skill/daily-caveman-commit*
*Markdown mirror: https://skills.yangsir.net/api/skill/daily-caveman-commit/markdown*