审查变更
此技能是指导性建议,并非完整检查清单。 验证并获取变更的实时基线和精确目标分支,然后使用项目配置文件中的 commands.change-scope 命令列出变更路径,再阅读差异和足够的周围代码以理解设计。在重新定位或合并后重新建立基线。优先考虑正确性、生命周期、安全性和破坏所需行为的问题,而非代码风格;一条包含确凿证据的阻塞性问题比一长串琐碎意见更有价值。
在判断差异之前,先阅读需求。 将变更路径映射到以下来源,打开每个所属页面,然后仅根据这些需求阅读差异。仅凭记忆中的规则判断差异,是导致违反审查通过的根源。
真相来源
- 根目录及每个受触达子目录中的
AGENTS.md:长期有效指令。 .agents/project-profile.md:命令、启用的功能面、每个功能面的证据以及项目特定规则。docs/defensive-patterns/:审查中强制执行的规则,按工件系列分页;阅读差异触及的每一页。docs/AGENTS.md和 文档标准:文档放置与规范。- 文案标准:对注释、文档、提示和可见字符串的必需覆盖范围和编辑判断。
- 错误处理:失败分类、所有权、隔离、保证和报告。
- 生命周期审查:单例状态、不可逆效果以及插件、服务、组件中的清理顺序。
- 测试可靠性:资源持有、异步或不可靠测试的隔离与回归验证。
.agents/notes/:设计原理。将 Agent 笔记中的分歧视为设计讨论,而非自动否决。- 当项目配置文件启用
surfaces.ui时,还需参考ui-ux-review和responsive-ui技能。
阻塞性要求
- 新增文案需接受语义审查。 对每条新增或修改的 Markdown 段落、API 文档、注释、提示、描述、诊断信息和可见字符串应用文案标准。自动化检查无法验证准确性、放置位置或覆盖范围。
- 文档与代码保持一致。 配置、默认值、错误、字段、事件和公共行为的变更,需在同一差异中更新所属的 README 和 API 文档。标记出实现叙述性、测试演练、审查历史和重复的原理说明。
- 所有权与清理。 对于具有生命周期的插件、服务或组件代码,对变更的行为及受影响的消费者应用生命周期审查。每个新注册都需证明其对应的清理操作。
- 必需证据存在。 验证作者针对差异运行了相关检查(参见推送前检查),并由 CI 覆盖其余部分;审查两者都无法检测到的语义空白。
- 本地化 UI 文本。 当项目配置文件启用
surfaces.localized-ui时,拒绝嵌入在标记、模板、辅助函数返回值、可访问性属性或组件默认值中的产品文本;要求使用本地化机制并提供受影响每个语言环境的证据。用户数据、模型数据和传输数据保持不变。 - 破坏性变更需记录。 当项目配置文件启用
surfaces.public-api时,外部可感知的破坏性变更需在同一差异中附带升级指南(参见升级指南)。
手动检查
- 意图与接口契约: 追踪每个变更接口的两端。确认实现与描述及任何 Agent 笔记一致,包括错误、取消、所有权和清理。
- 错误处理: 拒绝“捕获并继续”模式,除非状态所有者证明后续工作的前置条件仍然成立。
- 生命周期与并发: 对于异步设置、回调、进程或拆除,检查发布前的竞态条件、await 期间的取消、独立的错误报告、回调隔离、重入前的所有权、完整的分离清理以及静止状态的清理。
- 能力与消费者匹配: 追踪每个当前消费者,然后标记消费者特定行为泄漏到共享接口中的情况。反之亦然:一个通用服务上的新公共方法,其唯一调用者是一个内部消费者;应优先将该消费者的私有能力在构造时注入。
- 范围、所有权与必要性: 将每个抽象、状态机、选项、防御性复制和兼容性路径映射到其当前契约、生产消费者和所属模块。质疑无关功能和推测性通用性。
- 配置与公共选择: 询问每个默认值、公共操作集、格式或引入的外部概念有哪些当前消费者证据或先例支持。当该证据缺失时,要求做出明确选择或说明推迟的原因。
- 模型视角: 当项目向模型发送提示、工具模式或结果时,检查模型实际接收的精确文本。标记超出模型任务范围的概念,并通过测试或快照验证稳定文本的逐字一致性和动态行为。
- 强制实施: 跟踪每个拒绝路径直至执行该拒绝的操作;检查那些可能绕过模式、提示、外观、包装器或监听器顺序的直接和间接调用者。
- 借用与派生状态: 确定每个保留值是借用还是拥有,然后跟踪通知以及每个缓存、提示、UI 回显、重放和查询视图,直至其文档化的成功点和权威来源。
- 边界覆盖最终操作: 定位完整发出或保留结果(包括包装器和元数据)的所有者。测试极小和精确的边界、过大的单块以及多字节文本的字节限制。
- 真实入口路径: 测试应运行实际的加载器、二进制文件、工作进程或子进程(相关时)。手工拼装的测试设置无法捕获无效的导出。
- 测试强度: 断言应针对预期的回归失败,并验证外部状态、日志、事件或清理行为,而非重复实现逻辑。覆盖率是必要的,但不能证明场景的正确性。
- 阴性对照: 对于每个变更的验收规则,验证一个故意无效的案例通过真实运行器时确实失败。
- 已实现的 Agent 笔记与发布现实匹配: 当变更实现了一个提议笔记时,应在同一差异中将其移动并重写为现在时态的已发布状态。
- 翻译: 比较两侧的含义和术语;结构匹配并不能证明翻译质量。
报告发现
说明缺陷、位置、影响和证据。将本地化缺陷内联放置在差异中最紧密相关的范围内;对跨切面的架构、范围或综合问题使用顶层评论。将阻塞性问题与建议分开,并省略已通过检查强制实施的问题。在收到审查时,验证每条声明并以技术依据进行修复或反驳。