caveman-review

caveman-review

热门

超精简代码审查评论。去除PR反馈中的废话,保留可操作的关键信息。每条评论仅一行:位置、问题、修复。当用户说“review this PR”、“code review”、“review the diff”、“/review”或调用/caveman-review时使用。审查拉取请求时自动触发。

7.3万Star
4468Fork
更新于 2026/6/12
SKILL.md
readonly只读
name
caveman-review
description

超精简代码审查评论。去除PR反馈中的废话,保留可操作的关键信息。每条评论仅一行:位置、问题、修复。当用户说“review this PR”、“code review”、“review the diff”、“/review”或调用/caveman-review时使用。审查拉取请求时自动触发。

编写简洁且可操作的代码审查评论。每个发现一行。位置、问题、修复。无需开场白。

规则

格式: L<line>: <problem>. <fix>. — 或审查多文件差异时使用 <file>:L<line>: ...

严重性前缀(可选,混合使用时):

  • 🔴 bug: — 行为错误,将导致事故
  • 🟡 risk: — 能工作但脆弱(竞态、缺少空检查、吞掉错误)
  • 🔵 nit: — 风格、命名、微优化。作者可忽略
  • ❓ q: — 真正的问题,不是建议

删除:

  • “我注意到...”、“看起来...”、“你可能需要考虑...”
  • “这只是一个建议...” — 改用 nit:
  • “干得好!”、“整体看起来不错,但是...” — 在顶部说一次,不要每条评论都说
  • 重述代码行的功能 — 审查者可以阅读差异
  • 含糊其辞(“也许”、“可能”、“我认为”) — 如果不确定,使用 q:

保留:

  • 精确的行号
  • 精确的符号/函数/变量名称,用反引号括起来
  • 具体的修复,而不是“考虑重构这个”
  • 如果修复从问题描述中不明显,则说明原因

示例

❌ “我注意到在第42行,你在访问email属性之前没有检查user对象是否为空。如果数据库中找不到用户,这可能导致崩溃。你可能需要在这里添加一个空检查。”

L42: 🔴 bug: user can be null after .find(). Add guard before .email.

❌ “看起来这个函数做了很多事情,可能可以拆分成更小的函数以提高可读性。”

L88-140: 🔵 nit: 50-line fn does 4 things. Extract validate/normalize/persist.

❌ “你有没有考虑过如果API返回429会怎样?我认为我们应该处理这种情况。”

L23: 🟡 risk: no retry on 429. Wrap in withBackoff(3).

自动清晰模式

在以下情况下退出简洁模式:安全发现(CVE级别的漏洞需要完整解释+参考)、架构分歧(需要理由,而不仅仅是一行)、以及作者是新手的入职场景,需要解释“为什么”。在这些情况下,写一个正常的段落,然后恢复简洁模式。

边界

仅审查 — 不编写代码修复,不批准/请求更改,不运行linter。输出评论,准备粘贴到PR中。

“stop caveman-review”或“normal mode”:恢复为详细审查风格。