关于 caveman-commit
caveman-commit 是按 Conventional Commits 格式撰写简洁提交信息的 Agent 技能,侧重说明变更原因,并在必要时补充背景。它只生成提交信息,不执行 Git 操作。
主要功能
- 01遵循 Conventional Commits 格式
- 02简洁的祈使句主题行
- 03为重大或不明显变更补充背景
- 04输出可直接粘贴的代码块
适用场景
- 01根据 diff 撰写提交信息
- 02说明重大变更
- 03补充安全修复或迁移的背景
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rheinmir/ setup --skill caveman-commit安装后在 Claude Code 中输入/caveman-commit确认已加载。
详细介绍
以简洁、准确的方式编写提交消息。使用 Conventional Commits 格式。不说废话。说明原因,而非重复内容。
规则
主题行:
<type>(<scope>): <imperative summary>—<scope>可选- 类型:
feat、fix、refactor、perf、docs、test、chore、build、ci、style、revert - 使用祈使语气:“add”“fix”“remove”,而不是“added”“adds”“adding”
- 尽量不超过 50 个字符,硬性上限为 72 个字符
- 末尾不加句号
- 冒号后的大小写遵循项目惯例
正文(仅在需要时):
- 如果主题行已能清楚说明内容,则完全省略
- 仅在以下情况下添加正文:不明显的原因、破坏性变更、迁移说明、关联的问题
- 每行不超过 72 个字符
- 使用
-而不是*作为项目符号 - 在末尾引用问题/PR:
Closes #42、Refs #17
绝对不要写入:
- “This commit does X”、“I”、“we”、“now”、“currently”——差异本身会说明做了什么
- “As requested by...”——使用 Co-authored-by 标记
- “Generated with Claude Code” 或任何 AI 署名
- 表情符号(除非项目惯例要求)
- 如果作用域已指出文件名,就不要重复写文件名
示例
差异:新增用户资料端点,并在正文中解释原因
- ❌ “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
差异:破坏性 API 变更
- ✅
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.
自动清晰说明
以下情况始终添加正文:破坏性变更、安全修复、数据迁移、撤销之前提交的任何操作。不要将这些内容压缩成只有主题行的消息——日后排查问题的人需要了解背景。
边界
只生成提交消息。不运行 git commit,不暂存文件,也不修改已有提交。输出可直接粘贴的代码块。“stop caveman-commit”或“normal mode”:恢复为详细的提交风格。
输出报告
完成所有主要技能任务后,向 wiki 撰写一份草稿。
步骤
1. 构建文件名:
- 格式:
DDMMYY-<ten>.md DDMMYY= 今天的日期(例如,2026 年 6 月 2 日为020626)<ten>= 用 2–4 个 kebab-case 单词概括完成的工作(例如,landing-page-coteccons、brand-kit-fintech、ingest-auth-spec)
2. 写入 llmwiki/wiki/draft/cave/DDMMYY-<ten>.md:
# DDMMYY-<ten>
**Type:** draft
**Status:** proposed
**Tags:** <skill-name>, output-report
**Proposed:** YYYY-MM-DD
## What
<One sentence — what this skill invocation produced or decided>
## Output
<Key artefacts, files created/modified, or decisions made>
## Files
| File | Action |
|------|--------|
| `path/to/file` | created / modified |
## Notes
- Invoked via: `/<skill-name>` skill
## Origin
- **Draft:** `wiki/draft/cave/DDMMYY-<ten>.md`
- **Commit:** _(filled by verify-before-commit)_
- **Date promoted:** _(filled by verify-before-commit)_
3. 更新 wiki 索引和日志:
llmwiki/wiki/index.md— 追加一行:| [DDMMYY-<ten>](draft/cave/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |llmwiki/wiki/log.md— 追加:## YYYY-MM-DD — <skill-name> — <ten>
仅当该技能未产生任何产物,也未做出任何决定时才跳过(例如,纯显示模式
/caveman-stats)。
评论
支持 Markdown