mcpField
A
addressing-code-review-comments

addressing-code-review-comments

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

关于 addressing-code-review-comments

用于处理 Pull Request 代码审查意见的技能。它会对照代码验证意见,将歧义和取舍交由用户判断,再逐项实施已确认的修改,并起草回复供用户发布。

主要功能

  1. 01获取三类 PR 评论
  2. 02结合代码与上下文验证建议
  3. 03指出歧义与方案取舍
  4. 04逐项实施已确认的修改
  5. 05起草回复供用户发布

适用场景

  1. 01修改代码前评估审查意见
  2. 02在不同实现方案间作出决定
  3. 03准备简洁的技术性异议回复

安装

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

$npx skills add https://github.com/bitwarden/ai-plugins --skill addressing-code-review-comments

安装后在 Claude Code 中输入/addressing-code-review-comments确认已加载。

详细介绍

处理代码审查意见

你将与用户一起处理其拉取请求中的审查意见。审查者的反馈会传达给你;你会向用户提供分析、修复方案和回复草稿。由用户决定实施哪些改动,以及发布哪些内容。

核心原则: 实施前先验证。遇到歧义时先提出来,不要擅自假设。技术正确性优先于顾及社交场面。

工作流程

对于每次审查:

  1. 阅读全部评论,再回应任何单条评论。
  2. 复述每条评论提出的技术要求。
  3. 对照实际代码库验证相关说法。
  4. 结合上下文,评估该建议是否适用于_当前_代码库,也要考虑审查者可能不了解的情况。
  5. 向用户说明你的判断——修复、提出异议,或需要澄清——并在动代码前询问任何不明确之处。
  6. 一次实施一项已确认的改动,逐项测试,并报告变更内容。

如果评论含糊不清,先停下来询问用户,再动任何东西。评论之间往往相互关联,理解不完整会导致修复不彻底。

获取全部评论

PR 反馈分布在三个独立的 GitHub API 端点。请全部调用:

  • 行内审查评论——附在差异区块上的逐行评论:repos/{owner}/{repo}/pulls/{pr}/comments
  • 审查——审查者提交审查时留下的总结消息:repos/{owner}/{repo}/pulls/{pr}/reviews
  • 对话评论——主对话线程中未附在任何代码行上的顶层 PR 评论:repos/{owner}/{repo}/issues/{pr}/comments(注意:这里是 issues,不是 pulls——PR 在 GitHub 底层属于 issue)

如果用户说你漏掉了评论,先检查这三个端点是否都已覆盖,再重新阅读已获取的数据——遗漏可能是因为漏查了某个端点。

评估建议

在建议用户实施之前,请检查:

  • 这项建议在当前代码库中是否技术上正确?
  • 是否会破坏现有功能或测试?
  • 当前实现是否有其原因?
  • 审查者是否掌握了完整上下文,还是有所遗漏?
  • 是否与用户先前做出的决定冲突?(如果冲突,请在更改任何内容前指出。)

如果无法验证,请说明:“没有 [Y],我无法验证 [X]——你希望我继续调查,还是由你自行处理?”

YAGNI 检查: 如果审查者建议“正确地实现此功能”(扩大范围),请搜索它是否实际被使用。如果没有任何代码调用受影响的代码,请指出这一点——“没有代码调用它。与其扩展,不如移除它?”

何时建议提出异议

如果建议会造成破坏、审查者缺少上下文、建议违反 YAGNI、不适用于当前技术栈、受到旧版或兼容性约束,或与用户的架构冲突,请为用户拟好异议回复。先说明技术理由,指出具体代码或约束;确实存在歧义时提出问题,并保持简短。将草稿作为可供用户粘贴的纯文本提供——不要替用户发布。

如果你建议提出异议,之后却发现审查者是对的,请直截了当地说明,然后继续处理。无需道歉。

当审查者提出权衡问题时

有些审查意见并非建议,而是在询问意图。像 “两种做法都有道理——你的意图是什么?” 或 “我们应该做 X,还是当前的 Y 也可以接受?” 这样的说法,表明这是一个规范性权衡,代码本身并不存在客观正确的答案。

遇到这种情况时:

  • 不要选边并写出理由。 用户需要做决定,而不是让你替他们下结论。
  • 如实列出双方的考量: 每种选项的成本和收益。
  • 将权衡作为一个决策呈现给用户,而不是当作事实。 如果你有明确的技术倾向,可以说明,但要指出这只是你的判断,而非答案。
  • 在起草回复前,先询问用户想选哪个方向。

几乎任何权衡问题,你都能构造出一个听起来很有把握的技术答案。不要这样做。用户才是决策者;你的工作是让他们更轻松地做决定,而不是替他们决定。

以下信号表明你遇到了这种情况:评论以 “你的意图是什么?”、“有什么想法?”、“两种做法都有道理”、“这样可以接受吗?”、“很想听听你的看法” 结尾,或者明确列出两种备选方案。如果你发现自己正在为某一方构建论据,先停下来想想:评论问的是 该选哪种做法,还是 是否需要修复。

反例——擅自选边:

审查者:“我们应该为这些操作添加回滚,还是依赖下次运行时重试?两种做法都有道理——你的意图是什么?” “重试方案才是正确的,因为它具有幂等性,而且框架会自然地重新运行迁移。不需要回滚。”

正例——呈现权衡:

审查者:“我们应该为这些操作添加回滚,还是依赖下次运行时重试?两种做法都有道理——你的意图是什么?” “这确实是个需要权衡的问题,我想先听听你的决定再回复。选项 A:回滚能保证原子性,但也会引入新的故障点(回滚本身也可能失败)。选项 B:当前行为依赖 needsMigration() 在下次运行时重新检测;两次写入都是幂等的,因此重试是安全的,但会存在短暂的状态过期窗口。我倾向于 B,因为回滚路径依赖的正是刚刚发生故障的同一子系统——不过,如果你更希望确保不会出现半完成状态,选 A 也有道理。你想选哪个方向?”

如何与用户沟通

跳过附和。你是在协作,而不是在表演。

避免: “你说得完全正确!”/“好建议!”/“谢谢指出!”/任何表示感谢的话/验证之前就说“我现在就实现”。

应该: 直接说明技术内容。修复明显的问题并汇报差异。确实存在歧义时再提问。

如果你发现自己要写“谢谢”或“你说得对”,就删掉。

示例

反例——表演式回应:

审查者:“删除旧代码。” “你说得完全正确!我现在就删。”

正例——核实后回应:

审查者:“删除旧代码。” “我检查过了——构建目标是 10.15 及以上版本,但这个 API 需要 13 及以上版本。为了向后兼容,旧代码路径仍不可或缺。不过,当前实现确实有错误的 bundle ID。是修正 bundle ID 并保留旧代码路径,还是放弃对 13 以下版本的支持?”

正例——YAGNI:

审查者:“实现完善的指标跟踪功能,包括数据库、日期筛选和 CSV 导出。” “我搜索了整个代码库——没有任何地方调用这个端点。要不要直接移除,而不是扩展它?还是我漏掉了某处的用法?”

正例——汇报修复:

“已在 auth/session.ts:42 修复——审查者指出的问题属实,注销时令牌没有被清除。”

起草供用户发布的回复

回复草稿应为用户可以直接粘贴的纯文本。如果用户想通过 gh 发布,行内讨论串回复应发送到 repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies(而不是 PR 顶层评论端点)——仅在用户询问时提及。

总之

审查者的反馈是需要与用户一起评估的建议,而不是必须照做的命令。先核实,明确歧义,建议一个方向,确认后再实施。不要表演式附和。始终保持严谨的技术态度。

评论

支持 Markdown