SuperAPI AI 工具集

verifying-doc-parity

写作与研究

查看项目

更新于 10-25 04:21

技能介绍

该技能的核心判断是:代码是否已经偏离了描述它的文档,并落实文档标准的基本义务:文档和图表应与其描述的代码在同一改动中更新;若某改动使仓库中不存在的文档失效,应在审查时点出。

使用上下文 技能在两个上下文中运行,改动来源与相关文档的发现方式不同。

  1. 代理会话:由 doc-parity Stop 钩子调用或按需调用。改动为工作区(git diff HEAD 加未跟踪文件),仅在仓库内验证。
  2. 拉取请求审查:通过 ai-review 工作流运行,改动为 PR diff 加 PR 描述。除仓库内验证外,还执行仓库外文档发现。审查从不编辑:会话中应执行更新的地方,审查只指出需要修改的仓库内文档及其应表达的内容。

工作流 第 1 步:汇总改动。收集全部改动文件并阅读 diff,而不只是文件列表,因为判断漂移需要知道改动的实际内容。会话中使用 git diff HEAD 与 git ls-files --others --exclude-standard;审查中使用 PR diff 并阅读 PR 描述以了解意图。遍历前先判断是否属于钩子误报:仅格式化的 diff、生成产物,或被 Stop 钩子误判为代码的仅文档注释编辑。若属于,则用一行理由说明误报类别并结束技能。

第 2 步:枚举每个有文档的祖先范围。对每个改动文件,从文件所在目录向上遍历到仓库根目录。目录包含 README.md、CLAUDE.md、docs/ 目录或图表源(.mmd、.mermaid)即为有文档范围。组件范围以下,文档面为源码内置文档:Rust //! 模块文档、C# XML 文档注释、公共符号上的 JSDoc/TSDoc。当源文件的改动区域带有此类文档注释时,将该文件视为其自身的文档面。收集所有改动文件的文档范围与文档面的并集。需检查每个有文档的祖先,而不只是最近的一个,因为文档按层级分层:更高层视图会省略细节,但仍描述被改动的行为。改动可能在其组件 README 中是最新的,却使上两级范围的根级指南或容器图发生漂移。

第 3 步:逐范围判断并行动。每个有文档范围或文档面恰好两种结果之一:更新——若行为与文档矛盾且代码正确,则修正文档,不得让二者不一致;若改动新增了该范围层级应描述的行为,则补充新行为的文档。该范围的文档描述该范围及以下现存的内容,无论上层调用方当前是否使用或防护。在同一改动中编辑文档。代码被移除时移除其文档,文档移动视为严格移动。每次编辑须符合文档标准——放置规则、风格指南及仓库本地附加指引。放置、格式或风格问题不明确时查阅标准。若放置规则要求文档位于工作仓库之外,则按仓库外标注处理,而非仓库内编辑。确认——该范围无文档漂移,明确说明,并用一行基于文档实际内容的理由佐证。绝不为了通过检查而做表面性文档编辑,即使用户要求也不行;无漂移时确认并解释为何不需要编辑。

第 4 步:以逐范围确认清单收尾。列出每个范围的结果,便于用户或 PR 审查摘要审计判断,例如:util/Seeder/Data(README.md)—已更新:生成器表新增分布;util/Seeder(README.md)—确认最新:改动未改变 README 描述的加密维度;crates/bitwarden-crypto/src/lib.rs(模块文档)—确认最新:derive_/make_ 命名不变量仍成立;仓库根(README.md)—确认最新:其中描述的根级行为未变。第 2 步的每个范围与文档面都必须出现;缺失即验证不完整。若通过 Dismiss 提前退出,报告为一行:文档一致性:已忽略——仅格式化 diff,无文档义务。

仓库外文档发现(仅审查上下文) 仓库外文档无法通过遍历目录树找到,因此从改动本身派生搜索角度:从 diff 派生搜索词(改动路径、公共符号、消息与端点名称、PR 描述中的功能词汇、显式外部链接);从这些角度搜索 contributing-docs(contributing.bitwarden.com,源仓库 bitwarden/contributing-docs);阅读候选页面并判断是否被改动失效;在审查中点出每个失效页面。标注会触发标准的外部文档流程:合并前创建工作项,并对失效页面应用过期标记。

适用场景与限制 适用于修改代码后检查文档一致性、处理 doc drift 或 README/docs 更新,以及 PR 审查中的文档校验。已知限制:代理会话仅在仓库内验证;审查上下文不进行编辑,只标注;仓库外文档发现依赖从 diff 派生搜索角度并检索 contributing-docs,无法覆盖未被搜索到的外部文档。