关于 commit-messages
commit-messages 是根据已暂存变更起草 Conventional Commit 消息的工作流技能。它指导变更分类、主题和正文撰写,并在将草稿写入 commit_msg.txt 前检查格式与用词。
主要功能
- 01检查已暂存变更和近期提交
- 02按提交类型与范围分类变更
- 03起草主题、正文和页脚
- 04适用时添加讨论解决标记
- 05检查措辞与格式规则
适用场景
- 01为已暂存工作准备 Conventional Commit 消息
- 02记录问题引用或已解决的讨论
- 03检查提交消息长度与风格
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ athola/ claude-night-market --skill commit-messages安装后在 Claude Code 中输入/commit-messages确认已加载。
详细介绍
Conventional Commit 工作流
适用场景
- 根据已暂存的更改生成 Conventional Commit 提交消息
不适用场景
- 准备完整的 PR:使用 sanctum:pr-prep
- 修改现有提交:直接使用 git
步骤
-
收集上下文(并行运行):
git status -sbgit diff --cached --statgit diff --cachedgit log --oneline -5- sem 可用时(参见
leyline:sem-integration): 使用sem diff --staged --json查看实体级更改
如果没有已暂存的更改,请告知用户并停止。
sem 输出可用时,在提交主题和正文中使用实体名称 (函数、类、方法),而不要解析原始 diff 片段。例如, 写“add function validate_webhook_url”,而不是 “add validation logic to notify.py”。
-
分类:选择类型(
feat、fix、docs、refactor、test、chore、style、perf、ci),以及可选的作用域。 -
起草消息:
- 主题:
<type>(<scope>): <imperative summary>(最多 50 个字符) - 正文:说明做了什么以及原因,每行不超过 72 个字符
- 页脚:BREAKING CHANGE、问题引用,以及下方的讨论标记
- 主题:
3a. 讨论标记:如果更改解决了 Discussions 看板中的一项发现, 请另起一行添加标记:
Addresses-Discussion: #654
Addresses-Discussion: #604, #610
这是 scripts/reconcile_discussions.py
接受的唯一证明,表示一项发现已解决。它会发布解决评论
并关闭讨论,因此看板不会继续显示已经完成的工作。
仅当此提交解决了该发现时才添加。 仅仅提及讨论的正文
会被视为引用,绝不会写回。这个区别至关重要:
6b28aa1a 写道“posted 13 insights to discussions
#424-#436”,这是开启这些讨论的提交。在这里添加标记,
就等于对尚无人处理的发现宣布“已解决”。
需要时,可以在正文中引用讨论以补充上下文。 但标记仅用于表示解决。
-
赘词检查:拒绝使用以下词语,并替换为朴素的表达:
避免使用 替换为 leverage、utilize use seamless smooth comprehensive complete robust solid facilitate enable streamline simplify optimize improve delve explore multifaceted varied pivotal key intricate detailed 也要避免:“it's worth noting”、“at its core”、 “in essence”、“a testament to”。
4a. 字符级赘词检查:加载 shared/output-hygiene.md
(Contract A)并去掉以下标记。如果该模块不可用,则以内联规则替代:
| 标记 | 替换为 |
|---|---|
作为连接词的 "+" | and(版本号和代码中的 + 保留) |
em-dash — | 冒号、句号、逗号,或改写 |
作为正文标点的 -- | 冒号或改写 |
作为连接符的箭头 -> / → | to / into |
弯引号 “ ” ‘ ’ | 直引号 " 和 ' |
事实罗列后以 , so 收尾 | 删除读者可自行推断的结果,否则另起一句 |
4b. 主题检查(Contract B):从读者能感知的效果描述更改。
不要提及 AI 来源,也不要提及具体移除的标记。不要写
remove AI slop、de-slop、
AI-generated content、AI phrasing、replace em-dashes 或
remove smart quotes。检查方式:如果主题只有在表达“我
清理了 AI 输出”时才说得通,就重写。例如,写
docs: clarify the setup section,而不是
style: replace em-dashes with colons。
- 写入
./commit_msg.txt并预览。
规则
- 绝不使用
git commit --no-verify或-n - 为人而写,而不是为了显得出众
- 如果 pre-commit 钩子失败,修复问题
- 此技能负责起草消息,不会提交。提交者在报告提交已落地前,须确认 HEAD 已前进(先后运行
git rev-parse HEAD)。自动修复钩子会中止提交,同时打印一段看起来像成功的末尾输出,因此钩子输出不能作为证据。参见讨论 #614。
退出标准
- 已在工作目录中写入
commit_msg.txt,其中包含起草的 conventional commit 消息 - 主题行遵循
<type>(<scope>): <summary>格式,且不超过 50 个字符 - 冗词检查通过:消息中不含任何禁用词(leverage、utilize、seamless、comprehensive、robust 等)
- 字符级检查通过:不得使用 em dash、不得用
+连接句子成分、不得使用智能引号、不得用->连接句子成分 - 正文中表示结果的
, so尾句最多出现一次(scripts/slop_score.py --audit会将每处列为so_connective) - 如果没有暂存任何内容,技能会立即停止,并报告“没有暂存内容”,且不会生成提交消息