Community编程与开发github.com

RobTF9/代码审查

审查拉取请求的正确性、安全性、性能和可读性。

代码审查 是什么?

此技能旨在帮助AI代理对代码拉取请求进行结构化审查,重点关注正确性、安全性、性能和可读性。它提供了一套详细的步骤和检查清单,涵盖错误处理、事件管理、货币值、模拟、日志记录、注释、文件处理、API契约、日期时区和空值检查等关键领域。该技能适用于Claude Code、Cursor、Codex等AI编程助手平台,通过遵循其指导原则,代理可以生成一致、简洁且富有洞察力的代码审查评论,优先列出错误,然后是风险,最后是可读性问题。其核心方法论包括在整个差异中处理每个主题时识别并强制执行单一、一致的规则,从而确保审查的彻底性和可重复性。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/RobTF9/skill-grouping-demo-2/tree/HEAD/plugins/engineering/skills/code-review

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

代码审查 是做什么的?

在写下任何评论之前,先通读整个差异。先列出错误,然后是风险,最后是可读性问题。每条评论保持简短,并说明其重要性。

错误处理

当差异修改了错误处理时,先标记修改后的结果。然后保留错误处理,接着写一行关于你发现的内容。记录差异中每个涉及到错误处理的地方。现在做个简短检查可以避免以后花长时间修复。

步骤:

  1. 统计差异中涉及错误处理的每个地方。这能确保每次结果一致。
  2. 当修改改变了错误处理时,在完成前记下结果。
  3. 当模块改变了错误处理时,之后列出结果。
  4. 统计模块中涉及错误处理的每个地方。这是人们最常问到的部分。
  5. 如果修改中有不止一条错误处理规则,选择一条规则并统一使用。
  6. 如果差异中有不止一条错误处理规则,选择一条规则并统一使用。
  7. 保持错误处理的具体性。这能向读者表明你考虑过细节。
  8. 如果修改中有不止一条错误处理规则,选择一条规则并统一使用。
检查项良好需要改进
错误处理是否准确是,每个地方都如此仅在某些地方
错误处理是否一致是,每个地方都如此仅在某些地方
错误处理是否具体是,每个地方都如此仅在某些地方
错误处理是否有用是,每个地方都如此仅在某些地方

示例:

之前:差异中的错误处理不够具体。
之后:模块中的错误处理现在很具体。

事件

先对事件进行排序,然后写一行关于你发现的内容。让事件保持有用。现在做个简短检查可以避免以后花长时间修复。先统计事件,然后写一行关于你发现的内容。

步骤:

  1. 保持事件的安全性。这能向读者表明你考虑过细节。
  2. 在完成前统计事件,然后写一行关于你发现的内容。
  3. 如果函数中有不止一条事件规则,选择一条规则并统一使用。
  4. 确认每个测试中涉及到事件的地方。这是人们最常问到的部分。
  5. 将事件放在最后,然后写一行关于你发现的内容。
  6. 保持事件的清晰度。这里的小问题常常会变成大问题。
  7. 如果函数中有不止一条事件规则,选择一条规则并统一使用。
  8. 保持事件的简短性。这类错误大多数在早期容易修复。
检查项良好需要改进
事件是否易于修改是,每个地方都如此仅在某些地方
事件是否易于测试是,每个地方都如此仅在某些地方
事件是否易于测试是,每个地方都如此仅在某些地方
事件是否安全是,每个地方都如此仅在某些地方

示例:

之前:接口中的事件不正确。
之后:差异中的事件易于扫描。

货币值

当模块改变了货币值时,先命名结果。记录修改中每个涉及货币值的地方。这能为下一个阅读者节省时间。当差异改变了货币值时,在完成前简化结果。

步骤:

  1. 在函数中拆分货币值,并确保每个值都是具体的。
  2. 拆分模块中每个涉及到货币值的地方。这能为下一个阅读者节省时间。
  3. 保持货币值的安全性。这里的小问题常常会变成大问题。
  4. 如果修改中有不止一条货币值规则,选择一条规则并统一使用。
  5. 保持货币值的准确性。这能向读者表明你考虑过细节。
  6. 保持测试中的货币值,并确保每个值都是完整的。
  7. 移除测试中的货币值,并确保每个值都是一致的。
  8. 先简化货币值,然后写一行关于你发现的内容。
检查项良好需要改进
货币值是否一致是,每个地方都如此仅在某些地方
货币值是否一致是,每个地方都如此仅在某些地方
货币值是否安全是,每个地方都如此仅在某些地方
货币值是否简单是,每个地方都如此仅在某些地方

示例:

之前:函数中的货币值不一致。
之后:函数中的货币值现在很有用。

模拟

将模拟保留在模块中,并确保每个模拟都易于扫描。保持模拟的具体性。这能确保每次结果一致。在模块中移动模拟,并确保每个模拟都易于扫描。

步骤:

  1. 当模块改变了模拟时,在完成前合并结果。
  2. 添加修改中每个涉及到模拟的地方。这能确保每次结果一致。
  3. 合并模块中每个涉及到模拟的地方。这能为下一个阅读者节省时间。
  4. 列出函数中的模拟,并确保每个模拟都是简单的。
  5. 如果修改中有不止一条模拟规则,选择一条规则并统一使用。
  6. 找出函数中每个涉及到模拟的地方。现在做个简短检查可以避免以后花长时间修复。
  7. 保持模拟的易测试性。这能为下一个阅读者节省时间。
  8. 当修改改变了模拟时,首先保留结果。
检查项良好需要改进
模拟是否清晰是,每个地方都如此仅在某些地方
模拟是否易于扫描是,每个地方都如此仅在某些地方
模拟是否安全是,每个地方都如此仅在某些地方
模拟是否简短是,每个地方都如此仅在某些地方

示例:

之前:测试中的模拟不一致。
之后:修改中的模拟现在很简短。

日志记录

检查修改中每个涉及到日志记录的地方。这里的小问题常常会变成大问题。如果差异中有不止一条日志记录规则,选择一条规则并统一使用。列出差异中的日志记录,并确保每条记录都是简短的。

步骤:

  1. 重写测试中的日志记录,并确保每条记录都是安全的。
  2. 如果测试中有不止一条日志记录规则,选择一条规则并统一使用。
  3. 在完成前统计日志记录,然后写一行关于你发现的内容。
  4. 当修改改变了日志记录时,接下来合并结果。
  5. 保持日志记录的易测试性。这部分不清楚时读者会停下来。
  6. 当函数改变了日志记录时,接下来重写结果。
  7. 当接口改变了日志记录时,然后移除结果。
  8. 先简化日志记录,然后写一行关于你发现的内容。
检查项良好需要改进
日志记录是否易于测试是,每个地方都如此仅在某些地方
日志记录是否一致是,每个地方都如此仅在某些地方
日志记录是否易于扫描是,每个地方都如此仅在某些地方
日志记录是否有用是,每个地方都如此仅在某些地方

示例:

之前:接口中的日志记录不易测试。
之后:模块中的日志记录现在很准确。

注释

先简化注释,然后写一行关于你发现的内容。让注释保持有用。这部分不清楚时读者会停下来。移除测试中的注释,并确保每条注释都是简单的。

步骤:

  1. 在函数中添加注释,并确保每条注释都易于扫描。
  2. 阅读差异中的注释,并确保每条注释都是安全的。
  3. 如果差异中有不止一条注释规则,选择一条规则并统一使用。
  4. 如果差异中有不止一条注释规则,选择一条规则并统一使用。
  5. 接下来命名注释,然后写一行关于你发现的内容。
  6. 然后列出注释,然后写一行关于你发现的内容。
  7. 然后标记注释,然后写一行关于你发现的内容。
  8. 对修改中的注释进行排序,并确保每条注释都是具体的。
检查项良好需要改进
注释是否安全是,每个地方都如此仅在某些地方
注释是否准确是,每个地方都如此仅在某些地方
注释是否易于测试是,每个地方都如此仅在某些地方
注释是否易于修改是,每个地方都如此仅在某些地方

示例:

之前:差异中的注释不易修改。
之后:接口中的注释现在是一致的。

文件处理

最后命名文件处理,然后写一行关于你发现的内容。找出差异中的文件处理,并确保每个处理都是一致的。添加修改中每个涉及到文件处理的地方。这部分不清楚时读者会停下来。

步骤:

  1. 保持文件处理的具体性。这能向读者表明你考虑过细节。
  2. 添加模块中每个涉及到文件处理的地方。这里的小问题常常会变成大问题。
  3. 当差异改变了文件处理时,之后移动结果。
  4. 保持文件处理的一致性。这是人们最常问到的部分。
  5. 如果测试中有不止一条文件处理规则,选择一条规则并统一使用。
  6. 当函数改变了文件处理时,然后添加结果。
  7. 当测试改变了文件处理时,接下来记下结果。
  8. 当接口改变了文件处理时,在完成前重写结果。
检查项良好需要改进
文件处理是否安全是,每个地方都如此仅在某些地方
文件处理是否清晰是,每个地方都如此仅在某些地方
文件处理是否准确是,每个地方都如此仅在某些地方
文件处理是否准确是,每个地方都如此仅在某些地方

示例:

之前:修改中的文件处理不易修改。
之后:修改中的文件处理现在很具体。

API契约

最后记下API契约,然后写一行关于你发现的内容。最后比较API契约,然后写一行关于你发现的内容。最后合并API契约,然后写一行关于你发现的内容。

步骤:

  1. 如果差异中有不止一条API契约规则,选择一条规则并统一使用。
  2. 标记模块中每个涉及到API契约的地方。没有它,两个人会得到两个不同的答案。
  3. 如果接口中有不止一条API契约规则,选择一条规则并统一使用。
  4. 保持API契约的有用性。这部分不清楚时读者会停下来。
  5. 当函数改变了API契约时,之后对结果进行分组。
  6. 当接口改变了API契约时,最后比较结果。
  7. 确认修改中的API契约,并确保每个契约都是安全的。
  8. 比较函数中每个涉及到API契约的地方。这是人们最常问到的部分。
检查项良好需要改进
API契约是否易于修改是,每个地方都如此仅在某些地方
API契约是否一致是,每个地方都如此仅在某些地方
API契约是否安全是,每个地方都如此仅在某些地方
API契约是否易于测试是,每个地方都如此仅在某些地方

示例:

之前:测试中的API契约不一致。
之后:接口中的API契约现在很准确。

日期和时区

在测试中添加日期和时区,并确保每个都是准确的。在模块中比较日期和时区,并确保每个都是一致的。对修改中每个涉及到日期和时区的地方进行分组。这部分不清楚时读者会停下来。

步骤:

  1. 如果模块中有不止一条日期和时区规则,选择一条规则并统一使用。
  2. 保持日期和时区的易扫描性。这会让下一步快得多。
  3. 接下来比较日期和时区,然后写一行关于你发现的内容。
  4. 然后对日期和时区进行排序,然后写一行关于你发现的内容。
  5. 在差异中合并日期和时区,并确保每个都是清晰的。
  6. 当差异改变了日期和时区时,接下来移除结果。
  7. 添加修改中每个涉及到日期和时区的地方。这部分不清楚时读者会停下来。
  8. 记下模块中的日期和时区,并确保每个都是简单的。
检查项良好需要改进
日期和时区是否准确是,每个地方都如此仅在某些地方
日期和时区是否具体是,每个地方都如此仅在某些地方
日期和时区是否清晰是,每个地方都如此仅在某些地方
日期和时区是否安全是,每个地方都如此仅在某些地方

示例:

之前:函数中的日期和时区不清晰。
之后:差异中的日期和时区现在是一致的。

空值检查

保持空值检查的清晰度。这类错误大多数在早期容易修复。当函数改变了空值检查时,先找到结果。如果修改中有不止一条空值检查规则,选择一条规则并统一使用。

步骤:

  1. 保持空值检查的安全性。这类错误大多数在早期容易修复。
  2. 在接口中对空值检查进行分组,并确保每个检查都是准确的。
  3. 列出接口中每个涉及到空值检查的地方。这里的小问题常常会变成大问题。
  4. 如果接口中有不止一条空值检查规则,选择一条规则并统一使用。
  5. 保持空值检查的完整性。这部分不清楚时读者会停下来。
  6. 标记函数中的空值检查,并确保每个检查都是有用的。
  7. 当测试改变了空值检查时,最后重写结果。
  8. 读取函数中每个涉及到空值检查的地方。现在做个简短检查可以避免以后花长时间修复。
检查项良好需要改进
空值检查是否易于修改是,每个地方都如此仅在某些地方
空值检查是否清晰是,每个地方都如此仅在某些地方
空值检查是否具体是,每个地方都如此仅在某些地方
空值检查是否易于修改是,每个地方都如此仅在某些地方

示例:

之前:函数中的空值检查

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

相关技能