关于 converge-reviews
converge-reviews 是用于协调代码审查状态的技能,通过复用未变更范围的审查证据和限制稳定范围最多三轮,避免审查循环。它不负责审查代码或应用修复。
主要功能
- 01按稳定范围跟踪审查状态
- 02仅使变更覆盖范围失效
- 03合并并追踪审查发现
- 04三轮后停止稳定范围审查
- 05输出继续、收敛或阻塞结果
适用场景
- 01在修复后复用未变更代码的审查结果
- 02区分需重新审查的覆盖范围
- 03三轮后仍有严重问题时停止审查循环
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ bhagyamudgal/ skills --skill converge-reviews安装后在 Claude Code 中输入/converge-reviews确认已加载。
附带文件agents/openai.yaml
详细介绍
汇总评审
我会复用有效的评审证据,仅将发生变化的覆盖范围标记为无效,并在三轮评审/修复后停止对稳定范围的评审。我发现,这个上限正是打破循环的关键。没有它,每一轮都会对未变更的代码提出新的意见,评审也永远无法定案。此技能负责协调评审状态。它不评审代码、不应用修复,也不创建外部问题。
1. 接收一个评审包
开始前,我要求满足以下所有条件。
- 发起请求或工单。
- 评审基准和当前提交,或等效的本地基线。
- 确切的范围路径和当前内容/差异哈希。
- 评审者名单及各自的评审视角。
- 带有稳定 ID、严重性、来源评审者、证据和处置结果的发现项。
- 任何先前的收敛记录。
如果调用方已维护更丰富的发现项状态,我会引用其产物和发现项 ID,而不复制发现项正文。review-pr 发现项状态文件仍是 PR 发现项状态的权威来源。
检查关口。 每位评审者都有记录,每个发现项都可追溯到一个范围、一位评审者和一种处置结果。
2. 确定范围和覆盖情况
稳定范围是由发起请求、评审基线、排序后的路径、评审者名单和评审视角生成的规范哈希。我会记录当前内容/差异哈希,将其作为已评审快照,并记录在每个覆盖条目中。
我会将收敛状态保存在调用方现有且获授权的评审产物中。如果不存在此类产物,且工作流获准维护本地评审状态,我会使用 .claude/review-state/local-<scope-id>.yml,并确保该目录被忽略。否则,我会直接内嵌呈现此记录,不创建文件。我只存储以下内容。
convergence:
scope_id: <stable ID>
origin: <request or ticket>
baseline: <base SHA or local baseline>
snapshot: <head and content/diff hash>
paths: [<reviewed paths>]
reviewers: [<reviewer and lens>]
round: <1..3>
coverage: [<path or component, lens, reviewed hash, source round>]
findings: [<finding ID, severity, normalized_status, disposition, source>]
closure_check: not-needed | available | passed | failed
result: continue | converged | blocked-at-cap | follow-up-proposed
next_action: <exact next action>
快照和约定相同,则复用已记录的结果,不增加轮次。针对已记录发现项的修复会推进同一范围。新的要求、新的评审视角或实质性新增组件会创建一个从第 1 轮开始的子范围。它会继承父范围中未变更覆盖部分的活动阻塞项,且无法重置已达到轮次上限的父范围。外观、生成内容和无关变更既不会重置轮次,也不会使覆盖失效。
我只会将评审内容、路径或评审视角发生变化的覆盖标记为无效。在其覆盖内容发生变化前,我会保留未受影响的评审者证据。
检查关口。 每个覆盖条目要么在哈希和约定匹配时复用,要么标记为需要重新评审。
3. 汇总本轮结果
我会按稳定 ID 合并发现项,并保留来源评审者和处置历史。调用方的发现项状态仍是权威状态。我会在汇总时推导 normalized_status,但不会将其写回为调用方状态。将 active、regression 和调用方特定的未关闭状态映射为 open;将 resolved、dismissed 和 wontfix 映射为 closed;将当前范围之外的 follow-up 映射为 deferred。
只有在计划名单中的评审者均已返回,或已明确记录为无法提供评审,且调用方已汇总每个发现项后,我才会计为一轮。在选定结果前,我会记录修复、驳回、回归和新近失效的覆盖项。
检查关口。 记录应说明自上一轮以来发生了哪些变化,并解释每个先前发现项或覆盖条目为何仍然有效、已变更或已关闭。
4. 返回一个结果
continue:已完成的轮次少于三轮,并且已明确指出确切的下一项修复或受影响的覆盖范围复查。converged:没有未解决的严重或重大问题,没有仍值得跟进的中等或轻微问题,并且所有必需的覆盖范围均为最新状态。blocked-at-cap:第三轮已完成,且至少有一个严重或重大问题仍未解决。停止反复审查,并明确指出确切的阻塞项修复方案。完成该修复后,允许对这些阻塞项 ID 和变更位置进行一次有针对性的关闭检查;该检查会更新覆盖范围和处置结果,但不会进行新的问题扫描,也不计为第四轮。如果检查未通过,则继续保持阻塞状态,等待明确的新计划或范围决策。follow-up-proposed:没有未解决的严重或重大问题,并且将值得跟进的中等或轻微问题列为拟议的后续工作。在用户批准创建外部问题之前,先将该提议保留在本地;之后,在创建问题前调用preflight-mutations。
第三轮是稳定范围的硬性上限。我会将改写的问题、对未变覆盖范围的另一位审查者复查,或外观上的差异,都视为同一轮的延续,绝不算作第四轮。唯一一次有针对性的阻塞项关闭检查仅用于验证已明确指出的修复。它不能扩大覆盖范围,也不能提出新的问题。
调用方负责应用此约定。仅当结果为 continue 时,才重新运行受影响的审查覆盖范围;结果为 converged 时继续;结果为 blocked-at-cap 时停止;结果为 follow-up-proposed 时,展示提议和审批边界。在达到上限后完成已明确指出的阻塞项修复时,closure_check: available 是触发唯一一次有针对性检查的信号。调用方仅传入这些阻塞项 ID 和变更位置,保持 round 不变,并拒绝任何新的问题扫描。
完成。 台账为最新状态,已复用未变的证据,受影响的覆盖范围已明确,稳定范围内的轮次不超过三轮,并且调用方收到了且只收到了一个结果和下一步操作。