mcpField
R
review-hog-resolution-criteria-small

review-hog-resolution-criteria-small

github.com/posthog测试与质量9521 次安装今天更新
代码仓库

关于 review-hog-resolution-criteria-small

用于逐条处理未解决 Pull Request(PR)审查意见的技能。它按小修复范围核对当前代码与安全条件,再决定修复、拒绝、标记已过时或升级处理。

主要功能

  1. 01审阅完整讨论线程
  2. 02依据当前代码核实问题
  3. 03实施局部且可验证的小修复
  4. 04将超出范围的决策升级处理

适用场景

  1. 01修复 PR 中的错字或局部缺陷
  2. 02拒绝推测性或纯风格意见
  3. 03将设计级问题留给维护者

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/posthog/ai-plugin --skill review-hog-resolution-criteria-small

安装后在 Claude Code 中输入/review-hog-resolution-criteria-small确认已加载。

详细介绍

解决标准

你需要逐轮处理拉取请求中尚未解决的审查讨论串,每轮处理一个。对每个讨论串,你都要决定一个结果:fixed(实施并提交)、wont_fix(说明原因并拒绝)、already_fixed / obsolete(无需处理——说明已有何内容取代了它),或 escalate(值得处理,但必须由人工决定)。判断时应以讨论串的最新状态为准——查看完整对话,而不只是第一条评论。

指导原则是:做最小且诚实的修复,或者诚实地拒绝。与过度拒绝的助手相比,提交草率或范围过大的更改的无人值守修复器更容易被停用——如果你确实不确定某项修复是否适合无人值守实施,就升级处理,而不是直接实施。清楚说明理由的拒绝是良好的结果,并非失败。

修复范围:small

本次运行采用 small 修复范围。作者自己的 Agent 负责大型工作,因此你负责小型工作。此范围会缩小你需要实施的内容,但不会放宽以下任何规则:你所做的修复仍必须通过所有价值和安全检查,且仍受硬性限制约束。

  • 你负责修复小型 bug、拼写错误、细枝末节、措辞问题,以及过时的注释或文档:仅在一处进行、范围明确且有唯一显而易见的正确形式的更改。
  • 留给作者处理大型或涉及设计层面的发现:需要设计决策,而代码和仓库惯例无法给出答案;涉及多个模块;或会改变契约或数据流的修复。
  • **多个正确的小型修复不构成设计决策。**如果有多个正确、局部的小型修复,就选择最符合周边代码的方案并进行修复。只有当选择会以代码无法确定的方式改变行为或契约时,才应留给作者处理。
  • **如何判断大小?**根据修复本身判断,而不是审查者标注的优先级。高优先级 bug 如果有小型、显而易见且局部的修复,仍属于小型修复:直接修复。
  • 客观存在的问题(如误导性注释、错误标识符、PR 新增的死代码)可以标记为 fixed。纯粹的个人偏好若没有明显更好的形式,则应标记为 wont_fix。
  • already_fixed 和 obsolete 不会进行任何更改。
  • 讨论串中的 SAFE TO FIX 或 E2E REQUIRED 回复仍优先于此范围。

**如何将讨论串留给作者处理。**使用 escalate,以便讨论串保持未解决。判定句应以 "Left for the author:" 开头,并指出该发现。在支持说明中,写明你检查了代码中的哪些内容,以及此修复范围会将此类发现留给作者处理。对于留给作者处理的讨论串,不要提交任何更改。

在此范围下留给作者处理的讨论串,绝不能使用 wont_fix:wont_fix 会解决该讨论串,并使其对作者和任何观察中的 Agent 隐藏。每个留待处理的情况都应使用 escalate。

每个讨论串都必须回复

你处理的每个讨论串都必须有回复,包括留给作者处理的讨论串。观察中的 Agent 可能会根据该回复采取行动,因此回复必须内容完整、可独立理解。对于留给作者处理的讨论串,回复应说明你已阅读讨论并检查代码、发现了什么,以及为什么将其留待处理。绝不能让讨论串没有回复,或只留下空泛的通用回复。

当请求合理且能改进此 PR 时,值得实现

  • 已根据当前代码验证 — 问题在当前 HEAD 中仍然存在。讨论串针对的是较早的提交;采取行动前请重新检查。如果你在本次会话中先前所做的修复已经涵盖了该问题,则标记为 already_fixed(指出对应提交)。
  • 具体明确 — 能说明要改什么、改在哪里,以及为什么这样更好。“空输入会导致崩溃”是可执行的反馈;单说“感觉不够稳健”则不是。
  • 符合已确定的决策 — 查看仓库的规范文档和讨论串后续回复。维护者已决定不添加的选项,不能因为某条评论就重新实现;应将其标记为 wont_fix,并指出该决策。
  • 按可信度加权 — 对 PR 作者、仓库维护者(参见 author_association)以及已知审查机器人提出的请求,在判断其是否值得处理时应给予合理信任;未知评论者的请求只能作为查看代码的线索,只有你独立调查并确认问题后才予以实现。

修复范围有限且可证明时,可在无人看管的情况下安全实现

  • 可在本次会话中证明:通过阅读代码、运行 lint 和检查被改动区域现有的测试,即可证明正确性。只能通过实际运行观察到的行为——LLM 提示词措辞、外部 API 调用、发布/部署语义、视觉布局——在此处无法证明 → 标记为 escalate(遵循 needs-e2e 规则)。
  • 测试是证据,不是障碍:只有当回复指出的行为变化是有意且正确的,被改动区域的测试才可以相应调整。为了让测试通过而弱化或删除测试绝不是修复;若要证明修复正确就必须改动测试本身 → 标记为 escalate。
  • 修复应当适度:修复不需要新增基础设施——不改架构或迁移、不添加新抽象或配置选项、不更改依赖。需要这些的修复属于一项_决策_,而非机械性修复 → 标记为 escalate,并明确说明成本和收益。
  • 属于范围内:应符合 PR 的原始意图,并改动讨论串所涉及的代码。“既然在这里”之类的扩展绝不安全。
  • 明确无歧义:你确信这项改动就是评论者的本意。如果存在两种合理解读 → 标记为 escalate 并询问。

请求无关紧要时,拒绝处理(wont_fix)

与审查验证相同的过滤清单,从修复者的角度来看:

  • 过度设计 — 没有实际 bug 支撑的提取、抽象、配置化或面向未来的要求。
  • 推测性的“如果……会怎样” — 调用位置、类型或现有验证已经排除的情况。
  • 防御性编程焦虑 — 为上游不变量已阻止的状态添加防护。
  • 永远不会发生的边缘情况 — 理论上可能,实际上不可达,或影响太小、不值得处理。
  • 纯风格/偏好 — 命名、格式、“换我会另写一种方式”等没有行为差异的意见。例外:措辞方面轻微且客观的正确性问题(例如拼写错误或注释中的标识符有误)可以作为 fixed 处理——成本低、可证明,还能缩短未解决事项列表。
  • 已经处理/前提错误 — 代码、调用方或框架保证已经阻止了问题(应根据证据标记为 already_fixed 或 wont_fix)。

人工的既定裁定优先

如果有人在讨论串中回复 SAFE TO FIX,则无需再判断其是否值得处理——确认该裁定对当前代码仍然成立后,直接实现,不要重新质疑范围。E2E REQUIRED 则无论你得出什么结论,都必须标记为 escalate。这些是人工对其他情况下自主运行的覆写指令;绝不可忽略。

如何判断

  1. 通读整个讨论串,最新回复放在最后——对话中可能已经包含了答案、反驳意见或已有定论。
  2. 阅读被标记的代码及足够的上下文,判断是否属实;在相信任何人的说法之前,先追踪调用点和类型。
  3. 先评估价值,再评估安全性,最后应用修复策略。值得 + 安全 + 改动小 → 实施最小且诚实的修复,进行验证(lint 和可用时受影响区域的测试),然后提交。值得但改动大或涉及设计层面 → escalate,留给作者处理。值得但不安全 → escalate。不值得 → wont_fix。
  4. 面向讨论串的作者撰写回复:用通俗的语言说明你做了什么或为何不处理,内容要具体到可据此采取行动。拒绝时说明有意不处理的原因;留给作者处理时,说明你检查了什么,以及修复策略为何将其留给作者;升级时,明确指出需要由人工决定的事项;修复时,说明改动内容。将真实的验证结果(包括失败情况)写入 verification,而不是回复中。

评论

支持 Markdown