标准
审查者通过一条条评论手动执行相同的约定。此技能将这些评论挖掘成书面标准,然后检查差异是否符合这些标准。每条标准将代理在编写代码时遵循的规则与审查者在审查差异时使用的视角配对。每个编号的 § 引用了其背后的审查评论,因此任何人都可以追溯到执行该规则的审查者。
核心原则
- 证据优先。 一条 § 需要至少来自 3 个不同变更和 2 个不同审查者的审查评论,因为对同一个变更或同一个人的多条评论只是单个审查者的个人偏好。
- 每条规则都带有原因。 在围绕规则的代码形式发生变化后,原因仍能指导代理。
- 每种约定只有一个归宿。 两份副本会渐行渐远,代理只会遵循它第一个读取到的规则。
- 检查优于 §。 可以被 linter、类型检查或测试捕获的约定应归于该工具,因为检查每次都会运行。
- 删除代理已自动遵循的规则。 一条无需提示即被遵循的规则每次加载都会耗费上下文且不会改变任何行为。
- 脚本只是捷径。 每个输出文件在
references/schemas/中都有相应的模式,因此当脚本缺失或失败时,可以手动编写相同的文件。 git是唯一的硬依赖。 平台的 CLI(例如gh或glab)可以添加审查评论,若无此类工具,git log可作为替代。
命令
| 命令 | 功能 | 输出 | 参考文档 |
|---|---|---|---|
mine | 提取审查评论,按约定进行标记,根据出现频率乘以严重程度对聚类进行排序 | .standards/clusters.json | references/mine.md |
write | 将排序后的聚类转化为仓库中的标准技能,每条 § 都附带其原因和证据 | 标准技能 | references/write.md |
review | 应用差异触发的每个视角,并引用相关 § 报告发现 | 回复中的发现 | references/review.md |
prune | 在不同的测试框架中对每条规则进行 A/B 测试,并删除代理无需提示即遵循的规则 | prune.json | references/prune.md |
doctor | 标记漂移:不匹配任何内容的 glob、已删除但被引用的文件、从未触发的视角、过时的剪枝数据 | .standards/doctor.json | references/doctor.md |
路由
调用方式为 standards [command] [scope]。scope 是一个路径或 glob、从生成的索引中获取的区域 slug 或 § 编号(§2、§2.3)。具体解析方式请参见 references/scope.md。mine 只接受路径参数,因为区域仅在 write 之后才存在。
- 无参数。 显示下方菜单并等待选择。永远不要自动运行命令,因为每条命令都会读取历史、编辑仓库或消耗大量代理运行次数。
- 有 scope 但无命令。 不加询问地对该 scope 运行
review,因为review只读取数据。 - 明确或清晰暗示的命令。 加载其参考文档并按步骤执行。
- 两个命令都符合。 询问一次该用哪个,同时说明每个命令的名称和功能。然后根据回答执行。
- 从零开始创建标准。 从
mine开始,因为write需要clusters.json。当mine完成后,主动提供write选项。 - 关于技能本身的问题。 直接从此文件中回答,无需运行任何命令。
菜单
standards: 我应该做什么?
mine 挖掘审查评论并将它们排序为约定
write 根据排序的约定编写标准
review 根据标准审查差异
prune 测试每条规则,删除代理已自动遵循的规则
doctor 检查标准是否存在漂移
每个命令都可选接受一个 scope:路径、区域或 §。
当存在生成的标准时,在菜单下列出其区域,格式为 § 编号和 slug。
流水线
mine 为 write 提供输入,write 产生 review 所用的标准。prune 和 doctor 在此之后维护这些标准。
工作文件位于目标仓库根目录下的 .standards/ 目录中。请将该目录排除在版本控制之外,因为审查评论可能引用代码和人员信息。prune.json 是例外,它应放置在生成的标准旁边,因为 doctor 需要从中读取数据。
<skill-dir> 在参考文档中指的是包含本文件的文件夹。<skill-dir>/scripts/ 中的脚本可加速 mine 操作,且仅需 JavaScript 运行时的标准库。
判断模型
mine、prune 和 doctor 会提出许多小型类型化问题。判断模型是一种快速模型,能够以校准后的概率回答类型化问题(从集合中选一个,是/否概率,评分)。如果你的环境提供了判断模型,请使用它来回答这些问题;否则,由你亲自回答。你的环境自身的指令会决定使用哪个模型。
生成的标准
- 默认输出是一个技能,其中包含一个由一行摘要组成的索引,每个摘要链接到一个 § 文件。模板:索引 和 章节。
- 可以为每个区域生成一个独立的技能,具体依据 references/write.md 中的形状实验来决定。
- 生成的标准遵循与本技能相同的规则:仅包含规格说明的 frontmatter,无 URL,无日期,并且每条规则都附有原因。