mcpField
C
caveman-commit

caveman-commit

github.com/rheinmir开发10263 次安装3 周前更新
代码仓库

关于 caveman-commit

caveman-commit 是按 Conventional Commits 格式撰写简洁提交信息的 Agent 技能,侧重说明变更原因,并在必要时补充背景。它只生成提交信息,不执行 Git 操作。

主要功能

  1. 01遵循 Conventional Commits 格式
  2. 02简洁的祈使句主题行
  3. 03为重大或不明显变更补充背景
  4. 04输出可直接粘贴的代码块

适用场景

  1. 01根据 diff 撰写提交信息
  2. 02说明重大变更
  3. 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