代码审查Skill code-review

这个技能用于自动化审查代码更改或拉取请求,确保符合项目开发指南和质量标准。它涉及Git工具集成,自动检测修改、执行代码质量检查(如格式化和静态分析)、生成详细审查报告,并支持多种模式(如自动检测、显式提交和PR审查)。关键词包括:代码审查、Git、拉取请求、质量保证、自动化测试、开发流程优化、代码规范检查。

测试 0 次安装 0 次浏览 更新于 3/11/2026

名称: code-review 描述: 根据项目指南审查更改或拉取请求 允许工具: 读取, 写入, Grep, Glob, Bash

代码审查

根据项目指南审查本地更改或拉取请求。所有输出都写入本地 — 从不发布到 GitHub。

参数

/code-review [target] [--output path]

目标(可选)

指定要审查的内容。可以是:

  • - 自动检测当前分支相对于主分支的新提交(默认)
  • 提交范围 - 审查特定提交(例如,HEAD~3..HEAD, abc123..def456
  • 单个提交 - 审查一个提交(例如,HEAD~1, abc123
  • 分支比较 - 审查分支差异(例如,main..feature/foo
  • PR 编号 - 审查拉取请求(例如,#123123

输出(可选)

--output path-o path - 审查报告写入位置:

  • .ai/ 内的文件夹名称(例如,issue-59-add-no-verify-option
  • 相对路径(例如,.ai/issue-59-add-no-verify-option
  • 如果在自动检测模式下省略:根据分支名称自动检测,写入到 .ai/
  • 如果在显式目标下省略:直接输出到对话(无文件)
  • 如果在 PR 模式下省略:自动保存到 .ai/(见步骤 6)

示例

# 自动检测新提交相对于主分支(写入到 .ai/)
/code-review

# 自动检测,指定输出文件夹
/code-review --output issue-59-add-no-verify-option
/code-review -o .ai/my-feature

# 审查特定提交(输出到对话)
/code-review HEAD~3..HEAD
/code-review abc123
/code-review main..feature/foo

# 审查提交并保存到文件
/code-review HEAD~5..HEAD --output code-audit

# 审查拉取请求(自动保存到 .ai/)
/code-review #123
/code-review 123

指令

  1. 解析参数

    • 检查是否提供了提交/范围目标
    • 检查目标是否为 PR 编号(#123 或纯 123 且不是有效的 git 引用)
    • 检查是否提供了 --output-o 标志
    • 确定审查模式:“自动检测”(默认)、“显式”或“pr”
  2. 收集上下文

    对于 自动检测模式(未指定目标):

    • 获取当前分支名称
    • .ai/ 中找到关联的工作流程文件夹
    • 读取原始问题/概念和计划(如果可用)

    对于 显式模式(指定提交/范围目标):

    • 验证提交范围/引用是否存在
    • 无需查找工作流程文件夹

    对于 PR 模式(指定 PR 编号):

    • 获取 PR 元数据:
      gh pr view <number> --json title,author,baseRefName,headRefName,headRefOid,number
      
    • 无需查找工作流程文件夹
  3. 检测和获取更改

    对于 自动检测模式

    • 确定主分支:运行 git config gitflow.branch.main.name(回退到 main
    • 检测新提交:运行 git log <main>..HEAD --oneline
    • 如果无新提交,通知用户并停止
    • 获取这些提交的差异:git diff <main>...HEAD
    • 列出正在审查的提交

    对于 显式模式

    • 如果范围(包含 ..):git diff <range>git log <range> --oneline
    • 如果单个提交:git show <commit> --statgit log -1 <commit>

    对于 PR 模式

    • 获取完整差异:gh pr diff <number>
    • 获取提交列表:gh pr view <number> --json commits --jq '.commits[].oid'
    • 列出差异中的所有修改文件

    对于所有模式:

    • 列出所有修改文件
  4. 根据指南审查

    根据 REVIEW_CRITERIA.md 审查代码,该文件涵盖:

    • 测试覆盖率
    • 编码指南和架构
    • 代码质量
    • 安全性
    • 文档
    • 提交消息
  5. 代码质量检查(仅自动检测模式)

    跳过此步骤用于显式模式(审查历史提交)和 PR 模式。

    对于自动检测模式,运行:

    # 格式检查
    go fmt ./...
    
    # Vet 检查
    go vet ./...
    
  6. 确定输出位置

    文件名包括正在审查的修订:

    # 对于自动检测模式:使用 HEAD 短 SHA
    HEAD_SHA=$(git rev-parse --short HEAD)
    FILENAME="review-${HEAD_SHA}.md"
    
    # 对于提交范围 (abc123..def456):使用两端点
    START_SHA=$(git rev-parse --short abc123)
    END_SHA=$(git rev-parse --short def456)
    FILENAME="review-${START_SHA}-${END_SHA}.md"
    
    # 对于单个提交:使用该提交的短 SHA
    COMMIT_SHA=$(git rev-parse --short abc123)
    FILENAME="review-${COMMIT_SHA}.md"
    
    # 对于 PR 模式:使用 PR 编号和头 SHA
    HEAD_SHA=$(gh pr view <number> --json headRefOid --jq '.headRefOid' | cut -c1-7)
    FILENAME="review-pr<number>-${HEAD_SHA}.md"
    

    如果提供了 --output / -o

    • 如果以 .ai/ 开头,直接使用
    • 否则,将其视为 .ai/ 内的文件夹名称(前置 .ai/
    • 创建文件夹(如果不存在)
    • 写入到 <folder>/<filename>

    如果无 --output自动检测模式

    • 从分支名称提取问题编号(例如,feature/59-...59
    • 查找现有的 .ai/issue-<number>-* 文件夹
    • 如果无 .ai/ 文件夹存在,根据分支名称模式创建
    • 写入到 <folder>/<filename>

    如果无 --outputPR 模式

    • 尽可能从 PR 分支名称提取问题编号
    • 查找现有的 .ai/issue-<number>-* 文件夹
    • 回退到 .ai/pr-<number>/
    • 写入到 <folder>/<filename>

    如果无 --output显式模式

    • 直接输出到对话(无文件写入)

    示例:

    • 自动检测在 HEAD c9625f7.ai/issue-59-foo/review-c9625f7.md
    • 范围 abc123..def456-o issue-59-foo.ai/issue-59-foo/review-abc123-def456.md
    • 单个提交 abc123-o .ai/my-feature.ai/my-feature/review-abc123.md
    • PR #60 在头 a1b2c3d.ai/issue-59-foo/review-pr60-a1b2c3d.md
    • 显式模式,无标志 → 输出到对话(无文件)
  7. 生成审查报告

    根据步骤 6 将审查写入文件或直接输出到对话。

    使用此格式:

    # 代码审查:<分支名称、提交范围或 PR #编号>
    
    ## 摘要
    - 修订:`<开始-sha>` 到 `<结束-sha>`(或单个 `<sha>`)
    - 修改文件:<数量>
    - 添加行数:<数量>
    - 删除行数:<数量>
    - 审查提交:<数量>(列出提交 SHA/主题)
    

    对于 PR 模式,添加 PR 元数据到摘要:

    - PR: #<编号> - <标题>
    - 作者: <作者>
    - 基础: <基础分支> ← <头分支>
    

    然后继续:

    ## 清单结果
    
    ### 通过
    - <项目 1>
    - <项目 2>
    
    ### 必须修复
    - [ ] <问题 1> - <文件:行> - <描述>
    - [ ] <问题 2> - <文件:行> - <描述>
    
    ### 应该修复
    - <项目 1>
    
    ## 质量检查(仅自动检测模式)
    - 格式:通过/失败
    - Vet:通过/失败
    
    ## 建议
    1. <建议>
    2. <建议>
    
    ## 准备好 PR 了吗?(仅自动检测模式)
    <是/否 - 如果否,解释原因>
    

    对于显式和 PR 模式,省略“质量检查”和“准备好 PR 了吗?”部分。

  8. 报告发现

    • 如果发现问题,列出具体文件:行引用
    • 为每个问题建议修复
    • 对于自动检测模式:指示更改是否准备好 PR
    • 对于显式和 PR 模式:直接在对话中提供代码审查反馈

问题类别

使用 REVIEW_CRITERIA.md 中定义的严重性级别(必须修复、应该修复、微调)分类发现。