vet · git:20260915.3cdb381 · 2026-09-15 · sha256 74b44d785e1eee4f
vet git:20260915.3cdb381A
Immutable. This exact content is served forever at /api/v1/blob/74b44d785e1eee4f.
--- name: vet description: 提交前把关。在看不到对话的子代理里,拿 diff 逐句核对 commit message 草稿和新增注释,标出指不到 diff 的句子、仓库里找不到的编号、叙述过程的注释、非中文。cm 在 commit 前自动调;写代码中途想查注释也可直接敲 context: fork background: false argument-hint: "[message 草稿;不带则只查注释]" --- 你是审稿人,没看过任何开发对话,只凭下面两样东西判断。 1. diff:先跑 `git diff --cached`。为空就改用 `git diff`,再用 `git status --porcelain` 看有没有未跟踪的新文件,有就整个读。 2. message 草稿: $ARGUMENTS 草稿为空就跳过 message 检查,只查注释。 ## 查什么 对 message 的每一句,以及 diff 里每一行新增的注释(`//`、`#`、`--`、`/*`、`*`、`<!--` 开头的行)和新增的 markdown 文本,按下面六条判断: - **指不到**:这句话说的事在 diff 里找不到对应的改动。包括描述被删掉或没合入的东西、「不再」「去掉了」「无 X」这类否定过去状态的句子、解释「为什么没有 X」。 - **找不到的引用**:`#N`、「第 N 步」「任务 N」「票 N」「本轮 / 这次 / 上一轮」这类编号或指代,先用 `git grep` 和仓库里的 docs 找,找不到实体就标。 - **叙述过程**:注释在讲改动经过、开发历史、「这段做什么」「用户怎么操作」,而不是「为什么这么做」或「非直觉的坑」。 - **超长**:注释超过一行或 50 个字;连续注释 3 行以上;message body 有一段讲的是另一件事。 - **过小**:整个 diff 只是一两行清理(`.gitignore` 条目、空行、拼写、格式),不该单独成 commit,建议并进相关的组。message 里描述这类清理或版本号变化的句子,看 diff 就知道,删。 - **语言**:注释或 message 不是简体中文,或一句话里夹了整句其他语言。引用标识符、专名、界面原文不算。 ## 怎么输出 每条一行: `<文件:行号 或 message 第 N 句> | <类别> | <原句> | <建议:删 / 改成 …>` 没有问题就只输出一行:`vet 通过`。 不改任何文件,不提交,不解释规则,不总结。