English | 简体中文
根据当前 Git 仓库的真实改动 (暂存区, 未暂存的改动与未跟踪文件), 生成符合 Conventional Commits 规范的简体中文提交消息, 再按你的意图提交, 或提交后推送.
- 写完代码, 需要一条格式规范, 与改动内容一致的提交消息.
- 让 Claude 完成任务后, 顺手把改动提交或推送.
以下场景不会使用本技能: 解释或审查已有的提交, 修改历史提交的消息 (amend, reword), 编写 PR 描述或 CHANGELOG, 查询 Git 历史, 以及 rebase, merge, cherry-pick 等其它 Git 操作.
自然语言: 直接提出需求即可, 例如:
- "帮我写个提交消息", "write a commit message"
- "commit 一下", "帮我提交"
- "提交并推送", "commit and push"
斜杠命令: /waypoint:commit-message [额外要求]. 额外要求优先于技能自己的判断, 例如:
/waypoint:commit-message fix: 指定 type 为fix./waypoint:commit-message 强调这次是性能优化: 在消息中突出性能优化.
- 检查仓库状态.
- 当前目录不是 Git 仓库: 提示你先使用
/waypoint:repo-init初始化, 然后结束. - 存在冲突, 或正在变基: 提示你先解决, 不生成消息.
- 正在合并或 cherry-pick: Git 已准备好默认消息, 本技能不生成消息.
- 正在撤销提交 (
git revert --no-commit): 照常生成revert类型的消息.
- 当前目录不是 Git 仓库: 提示你先使用
- 列出改动, 包括未跟踪的新文件. 没有任何改动时回复 "当前没有可提交的更改".
- 确定纳入范围, 规则见下一节.
- 读取改动内容并生成消息. 改动很大时先看统计概况; lock 文件, 生成文件与二进制文件只按统计信息概括.
- 展示消息, 确定后续动作. 你事先说明了意图时直接执行; 否则展示消息后请你选择 A 或 B.
- 提交或推送, 完成后报告提交的短哈希与推送到的远程分支.
| 情况 | 处理方式 |
|---|---|
| 本会话中 Claude 改过文件, 工作区还有其它改动 | 先询问是否一起纳入: 全部纳入, 只含本会话改动, 或由你指定部分文件 |
| 本会话中 Claude 改过文件, 且只有这些改动 | 纳入这些文件 |
| Claude 没有改过文件, 有暂存内容 | 只纳入暂存内容, 视为你已手动挑选 |
| Claude 没有改过文件, 没有暂存内容 | 纳入全部改动, 包括未跟踪文件 |
询问纳入范围发生在生成消息之前. 无论你说的是 "生成提交消息", "提交" 还是 "提交并推送", 都会先完成这一步.
type(scope): 主题
- 要点一
- 要点二
整体描述
- type 取自
feat,fix,docs,style,refactor,perf,test,build,ci,chore,revert. - scope 可选, 能明确归属时填写, 并优先沿用仓库历史中已有的写法.
- 主题 一行概括本次改动, 句尾不加标点.
- 要点 逐条列出具体改动, 每条都能对应到真实的改动.
- 整体描述 一句话说明意图或影响, 不复述要点. 看不出动机时写影响, 不臆测.
- 破坏性变更 在 type 或 scope 后加
!, 例如feat(api)!: 移除旧版登录接口, 并在整体描述中点明影响. - 标点 使用英文 (ASCII) 标点, 标点后跟一个空格, 完整规则见 punctuation.md.
- 严禁署名. 不附加
Co-Authored-By,Generated with等任何署名或协作者信息. 即使你要求添加, 本技能也不会添加.
你说 "帮我写个提交消息" 时, 回复如下. 回复 A 提交, 回复 B 提交并推送, 其它回复不会提交:
```
feat(parser): 支持多行注释
- 在词法分析中识别 /* */ 多行注释
- 为多行注释补充单元测试
避免多行注释被误判为语法错误.
```
---
[如何处理?]
A. 提交
B. 提交并推送
你说 "帮我提交并推送" 时, 不再询问, 展示消息后直接执行, 并在最后报告结果, 例如 "已提交 a1b2c3d, 已推送到 origin/feat/parser".
Claude 在本会话中改了 src/parser.js, 而你另外改了 README.md. 生成消息前, Claude 会先列出 README.md, 询问是否一起纳入.
回复会提示你先运行 /waypoint:repo-init 初始化仓库, 不会自行执行 git init.
- 按具体路径暂存, 不使用
git add -A或git add .. - 纳入的文件中有疑似密钥或凭据 (如
.env,*.pem,*.key) 时, 先警告并询问是否排除. - 不使用
--no-verify,--amend,--trailer,--signoff, 除非你明确要求 (署名类 trailer 始终不会添加). - Git hook 执行失败时报告输出并停下, 不绕过也不重试.
- 提交后核对提交消息与展示的内容一致.
- 推送时:
- 分支已有上游: 直接推送.
- 没有上游且只有一个远程: 推送并建立上游.
- 有多个远程: 先询问推送目标.
- 从不强制推送; 推送被拒绝时如实报告原因.
为什么我的请求没有触发本技能?
很可能还装着其它生成提交消息的技能, Claude 选了另一个. 请停用它们, 或者直接使用 /waypoint:commit-message.
为什么消息里没有我没暂存的改动?
Claude 在本会话中没有改过文件, 而你暂存了一部分内容时, 本技能认为你已手动挑选, 只按暂存内容生成消息.
能生成英文提交消息吗?
不能. 本技能固定生成简体中文消息.
我想在提交里保留署名怎么办?
本技能不会添加任何署名. 需要的话, 请在提交后自行修改, 例如执行 git commit --amend.
- 提交消息固定使用简体中文.
- 合并或 cherry-pick 进行中时不生成消息, 请使用 Git 准备的默认消息.