pr-simplify 是由变更作者本人执行的编辑遍(editing pass),用于在打开 PR 之前运行,以及在向 PR 推送大型修复之前再次运行。它前置于代码评审,且从不替代评审。该技能会继承任务的 scope 和修复权限;如果请求只是评审,则产出发现(findings)而不是直接修改。发布、评审与合并由所选维护者工作流负责。
适用场景与定位:当你要打开 PR、要向已有 PR 推送大修,或被人要求缩小 PR、清理改动时使用。它的前提判断是:diff 只是一份提案,测试通过只能说明它能工作,并不能说明其架构或新增的每个测试都是必要的。
规则来源:以根 AGENTS.md 中的 “Design priorities”“One owner, complete cutover”“Runtime and code safeguards”“Product and validation” 等章节,以及最近的 scoped AGENTS.md 为准。步骤 2 和步骤 3 会把每条规则应用到每一个被修改的文件上。
第一步:重新推导最小完整修复。阅读用户想要的结果与最新 scope、针对目标 merge base 的完整 diff,以及保留的证明(proof)。复用已收集的会话上下文。然后自问:从 base 出发,使用已存在的 owner,最小的完整修复是什么?我还会引入这套架构吗?优先检查新增的最大模块、状态、适配器和测试脚手架,阅读它们的直接调用方与相关历史,因为看似冗余的行为可能是在保护某个已发布的配置或此前的回归。scope 是所改动的系统及其替代的路径。要把每个改动的 hunk 追溯到既定目标;服务于其他目标的 hunk 应移出本次改动,或拆到独立 PR。统计非机械改动行数,超过约 800 行,或复杂逻辑超过约 500 行时,应命名可先落地的最小连贯阶段并裁剪到该阶段。完成标准:能各用一句话说明缺陷、所需不变式和最小完整修复,且剩余每个 hunk 都服务于该修复。
第二步:移除不必要的架构。在 diff 中应用每条有依据的精简:唯一决策所有者,把重复的调用方策略移入拥有该决策的操作,迁移受影响的调用方并删除旧实现、导出与修复分支(不同传输方式可共享决策但保留各自交付契约);优先使用既有状态,挑战新的 schema、manager、cache 与组合表示,当既有所有者的生命周期、权限、原子性和清理都合适时复用它,仅在确实不必要时删除提议的迁移,但要保留能让既有配置与状态在升级后继续工作的迁移,新状态应放在含义相符的字段中;删除冗余路径,移除并行 renderer、重复 parser、仅为取得结果而存在的伪生命周期操作、调用方已能获取的派生状态,以及仅做转发或改名的 wrapper,优先用更简单的表示而非围绕旧表示的 fallback 模式;最后打磨,每个改动的 hunk 只保留周围文件维护者会写的内容,包括说明所有权、生命周期、顺序或约束的注释,与周围模块一致并守护真实状态的检查与 try/catch,真实类型而非洗白式转换(as any、as unknown as T、先放宽再断言),增加领域含义、消除重复或简化控制流的变量与辅助函数,由具名已发布契约和移除计划支撑的 shim、alias、retry 与 fallback,以及与周围文件一致的命名、控制流、import 和格式。要保留被请求的修复和受支持的行为,而不是提案中偶然的设计;保留真实的领域差异和有依据的公开兼容。当历史(git log -p -S <symbol>)无法说明某路径用途时,保留并报告它。新的产品决策、破坏性契约、无关清理和破坏性分支替换应作为发现报告给所有者。
第三步:为失败保留测试。对每个新增或修改的测试组及其 setup 辅助,命名它捕获的不同可观察失败。保留针对真实缺陷和不同边界的回归测试:顺序、取消、过期权限、重启、拒绝、真实错误以及受影响的消费者差异;保留能独立保护真实边界的静态契约守卫。移除重复的同路径用例、mock 回声、附带字段拷贝或措辞断言、对静态定义值的断言、只证明已删除逻辑不存在的测试、过时实现的测试,以及脚手架或仅测试用的生产钩子。把有用的用例合并到既有所有者测试套件中。删除测试绝不会削弱仍保留的断言、真实边界覆盖或基线。完成标准:每组剩余测试都有具名失败。
第四步:证明更小的改动并交接。批量编辑,然后对变更契约和受影响消费者重跑复现与聚焦检查。输入未变的证明可复用;保留的重启、升级或传输声明需要适用的证明;更广的检查由既有工作流选择。完成标准:完整 diff 已检查,每条规则对每个改动文件都有结论,有依据的精简已应用,被取代的路径不可达,受影响行为仍有证明。当现有形态合理时,不做改动也是有效结果。目标是净减少代码,而非删除配额。在 PR 正文或既有任务证据中报告:消失的职责或机制、仍受保护的行为,以及相对 merge base 的生产/测试增量;针对更早版本的减少要与整体改动增量分开标注;命名任何必要的剩余增长或未决决策。然后打开或更新 PR。之后的修复中,在推送前只精简新增改动及其触及的所有者。
暂未提供:具体安装方式、支持的平台/语言、收费与价格信息、可量化的效果数据。