Skill: zlszhonglongshen/pr-review-factory (version 1.0.0)

--- name: pr-review-factory description: 自动化Code Review工厂 — GitHub PR审查全流程自动化，从提交到修复到合并，一站式质量门禁。 category: 开发 triggers: Code Review, PR审查, Pull Request审查, 代码审查, PR合并, GitHub质量门禁 version: 1.0.0 author: OpenClaw Agent tags: - code-review - github - automation - CI/CD - devops - quality-gate dependencies: - code-review-skill - github-issues-skill - github-actions-templates --- # PR Review Factory（自动化 Code Review 工厂） ## 一句话定位 GitHub Pull Request 提交后，自动完成审查 → 问题记录 → 分派修复 → 验证通过 → 合并的全流程，零人工干预。 --- ## 解决的问题 | 痛点 | 传统方式 | 本技能 | |------|---------|--------| | PR堆积 | 人工审查速度慢，积压严重 | 自动秒级启动审查 | | 标准不一 | 每个人审查维度不同 | 结构化5维度审查（正确性/安全/可读/性能/可维护） | | 问题跟踪难 | 审查意见散落在PR评论中 | 自动创建 GitHub Issues 跟踪每一个问题 | | 修复无闭环 | 审查完不知道谁改、什么时候改 | Issues 分派责任人，状态驱动闭环 | | 合并风险 | 没有质量门禁，随便合并 | 必须所有 Blocking 问题修复才可合并 | --- ## 工作流程（4步） ``` PR 创建/更新 │ ▼ Step 1: 结构化 Code Review（code-review-skill） • 5个独立维度审查：正确性 / 安全 / 可读 / 性能 / 可维护 • 并行 Agents 独立审查，互不干扰 • 输出审查结论：Approve / Request Changes / Comment Only │ ▼ Step 2: 问题 Issue 化（github-issues-skill） • Blocking 问题 → 创建 Issue 并分派给 PR 作者 • Suggestion 问题 → 作为 PR 评论保留 • 每个 Issue 包含：问题描述 / 代码位置 / 修复建议 / 严重程度 │ ▼ Step 3: 修复验证循环（github-actions-templates） • 生成 CI 验证工作流（lint + test + build） • Issue 全部关闭后触发质量门禁检查 • 自动合并通过审查的 PR │ ▼ Step 4: 合并报告（github-actions-templates） • 生成本次审查摘要（问题数/修复时间/质量评分） • 记录到项目知识库（可选） ``` --- ## 触发方式 | 触发词 | 执行内容 | |--------|---------| | `帮我审查这个PR` | 对指定PR进行完整审查流程 | | `PR审查 xxx/repo#123` | 指定仓库的指定PR审查 | | `建立PR质量门禁` | 为仓库配置完整的自动化审查工作流 | | `审查并记录` | 审查PR并自动创建Issue跟踪 | | `查看PR审查状态` | 查询当前PR的审查进度和Issue状态 | --- ## 快速使用 ### 方式一：审查指定 PR ```bash # 直接审查 PR（格式：owner/repo#pr_number） 启动 code-review-skill，对 GitHub PR 进行结构化审查 示例： 输入：帮我审查 flutter/flutter#45231 执行：5维度并行审查 → 输出审查报告 ``` ### 方式二：创建质量门禁工作流 ```bash 启动 github-actions-templates，生成自动化 PR 审查 CI 工作流 • lint 检查 • 单元测试 • 构建验证 • 审查报告生成 ``` ### 方式三：问题跟踪与分派 ```bash 启动 github-issues-skill • 将审查问题创建为 Issue • 自动分派给 PR 作者 • 设置 Milestone 跟踪 • 修复后自动关闭 Issue ``` --- ## 技术架构 | 层级 | 组件 | 职责 | |------|------|------| | 审查层 | code-review-skill | 并行5维度Code Review，结构化输出 | | 跟踪层 | github-issues-skill | 审查问题Issue化，责任分派，状态跟踪 | | CI层 | github-actions-templates | 自动化CI工作流，质量门禁，合并控制 | | 编排层 | pr-review-factory | 整体流程编排，状态驱动，结果汇总 | --- ## 审查维度说明 | 维度 | 审查内容 | 严重程度 | |------|---------|---------| | 正确性 | 逻辑错误、空指针、边界条件 | 🔴 Blocking | | 安全性 | 注入风险、敏感信息泄露、依赖漏洞 | 🔴 Blocking | | 可读性 | 命名规范、注释完整、函数长度 | 🟡 Suggestion | | 性能 | 复杂度、N+1查询、不必要的循环 | 🟡 Suggestion | | 可维护 | 重复代码、耦合度、测试覆盖 | 🟡 Suggestion | --- ## 注意事项 1. 首次使用需配置 GitHub Token 环境变量（`GITHUB_TOKEN`） 2. 自动化合并需要仓库管理员权限或 Branch Protection 配置 3. 大型 PR（>1000行）建议拆分成多个小 PR 后再审查 4. Draft PR 默认跳过自动审查，可手动触发 5. 建议配合 Branch Protection 使用，确保审查通过后才能合并 --- ## 工作流示例 ``` 用户: 帮我审查 facebook/react#54321 AI: → 启动 code-review-skill，拉取 PR 变更 → 启动 5 个并行审查 Agent → 发现 3 个 Blocking 问题，2 个 Suggestion → 启动 github-issues-skill，创建 3 个 Issue 并分派 → 启动 github-actions-templates，配置 CI 验证工作流 → 审查报告：2 Blocking 待修复，1 Suggestion 可选 ```

path: README.md
content: # PR Review Factory（自动化 Code Review 工厂）

> GitHub PR 提交后，自动完成审查 → Issue跟踪 → 修复验证 → 合并的一站式质量门禁。

---

## 业务场景

软件开发团队中，Code Review 是保障代码质量的关键环节，但传统方式存在以下问题：

- **PR 积压**：人工审查速度慢，开发者等待时间长
- **标准不一**：不同审查者维度不同，反馈质量参差不齐
- **问题丢失**：审查意见散落在 PR 评论中，容易遗漏
- **修复无闭环**：问题提出后无人跟踪，PR 最后还是被"将就"合并
- **合并风险**：没有质量门禁，带 Bug 的代码进入主线

**PR Review Factory** 将整个流程自动化，确保每个 PR 都经过严格审查，且每个问题都有明确的责任人和闭环。

---

## 痛点分析

| 痛点 | 影响 | 解决方案 |
|------|------|---------|
| PR 堆积，审查慢 | 开发周期拉长 | 并行5维度自动审查，秒级启动 |
| 审查标准主观 | 质量不稳定 | 结构化审查框架，Blocking/Suggestion 明确分级 |
| 问题散落无跟踪 | Bug被遗忘 | 审查问题 → GitHub Issue，责任分派，状态驱动 |
| 修复验证靠人工 | 合并风险高 | CI 质量门禁，自动合并通过审查的 PR |
| 缺乏审查历史 | 团队无法复盘 | 审查报告自动归档，质量趋势可见 |

---

## Skill 编排图谱

```
                    ┌─────────────────────────┐
                    │     GitHub PR 创建      │
                    └────────────┬───────────┘
                                 │
                    ┌────────────▼───────────┐
                    │  Step 1: 结构化审查     │
                    │  🔍 code-review-skill   │
                    │  • 5个并行Agent独立审查  │
                    │  • 维度：正确性/安全/     │
                    │         可读/性能/可维护 │
                    │  • 输出：Approve /       │
                    │         Request Changes │
                    └────────────┬───────────┘
                                 │
                    ┌────────────▼───────────┐
                    │  Step 2: Issue跟踪       │
                    │  📋 github-issues-skill │
                    │  • Blocking → Issue     │
                    │    分派给PR作者          │
                    │  • Suggestion → PR评论   │
                    │  • 设置Milestone跟踪     │
                    └────────────┬───────────┘
                                 │
                    ┌────────────▼───────────┐
                    │  Step 3: CI验证工作流   │
                    │  ⚙️ github-actions-     │
                    │     templates           │
                    │  • lint + test + build  │
                    │  • 质量门禁检查          │
                    │  • Issue全部关闭触发合并 │
                    └────────────┬───────────┘
                                 │
                    ┌────────────▼───────────┐
                    │  Step 4: 合并与报告     │
                    │  ✅ 质量门禁通过         │
                    │  📊 审查摘要归档          │
                    └─────────────────────────┘
```

---

## 核心 Skill 详解

### 1. code-review-skill（审查引擎）

负责核心 Code Review 工作，5个并行 Agent 分别审查：

| Agent | 职责 | 严重级别 |
|-------|------|---------|
| Agent #1 | CLAUDE.md 规范合规性 | 🟡 Suggestion |
| Agent #2 | 明显 Bug 扫描 | 🔴 Blocking |
| Agent #3 | Git 历史上下文分析 | 🟡 Suggestion |
| Agent #4 | 安全漏洞检测 | 🔴 Blocking |
| Agent #5 | 测试覆盖评估 | 🟡 Suggestion |

输出格式：
```json
{
  "verdict": "Request Changes",
  "blocking_issues": 3,
  "suggestions": 7,
  "summary": "..."
}
```

### 2. github-issues-skill（问题跟踪）

将审查结果转化为可执行的问题跟踪：

- **创建 Issue**：每个 Blocking 问题创建独立 Issue
- **自动分派**：Issue 自动分派给 PR 作者
- **关联 PR**：Issue 关联源 PR，方便追溯
- **状态驱动**：修复后 Issue 状态变更，PR 质量门禁动态更新

### 3. github-actions-templates（自动化 CI）

生成并部署 PR 质量门禁工作流：

```yaml
# 典型工作流
trigger:
  - pull_request
jobs:
  lint:
    - run: eslint .
  test:
    - run: pytest .
  build:
    - run: docker build .
  quality_gate:
    - check: all blocking issues resolved?
    - block_merge: false
```

---

## 使用示例

### 示例 1：审查 PR 并创建 Issue

```
用户：帮我审查 denoland/deno#23456

执行流程：
1. code-review-skill 拉取 PR 变更
2. 5个并行Agent审查，发现：
   - 🔴 Blocking: 内存泄漏（lines 45-52）
   - 🔴 Blocking: SQL注入风险（line 128）
   - 🟡 Suggestion: 变量命名不规范（3处）
3. github-issues-skill 创建2个Issue并分派给PR作者
4. github-actions-templates 启动CI验证工作流
5. 输出审查报告，等待Issue关闭后触发合并
```

### 示例 2：为仓库配置质量门禁

```
用户：给我的仓库配置PR质量门禁

执行：
1. 读取仓库的 branch protection 设置
2. 生成 GitHub Actions 工作流（lint/test/build）
3. 配置 PR 审查自动化触发器
4. 设置必须所有 Blocking Issue 关闭才能合并
5. 配置审查报告自动生成（Markdown格式）
```

### 示例 3：查询 PR 审查状态

```
用户：这个PR的审查进展如何？

执行：
1. 查询 PR 当前审查状态
2. 查询关联的 Issue 列表及状态
3. 查询 CI 工作流状态
4. 返回汇总：3个Blocking问题，已关闭1个，还有2个待修复
```

---

## 质量评级标准

| 评级 | 条件 | 可合并？ |
|------|------|---------|
| ✅ Approve | 无 Blocking 问题 | 是 |
| 🟡 Request Changes | 有 Blocking 但可修复 | 否（需修复后重新审查） |
| ❌ Reject | 安全问题或架构性问题 | 否（需大改后重新提PR） |

---

## 环境要求

- GitHub Token（需 repo 权限，用于读写 Issue 和 PR 评论）
- 仓库需启用 GitHub Actions（用于 CI 质量门禁）
- 推荐配置 Branch Protection（强制审查通过后才可合并）

---

## 适用团队

- **中大型开发团队**：多人协作，PR 量多，人工审查跟不上
- **开源项目维护者**：需要标准化审查流程，减轻维护负担
- **追求高质量的初创团队**：想在快速迭代中保持代码质量
- **Code Review 文化成熟的团队**：想将人工审查经验固化为自动化流程

path: workflow.json
content: {
  "name": "pr-review-factory",
  "version": "1.0.0",
  "description": "自动化 Code Review 工厂 — GitHub PR审查全流程自动化，从提交到修复到合并，一站式质量门禁",
  "workflow": {
    "trigger": {
      "type": "manual",
      "keywords": [
        "Code Review",
        "PR审查",
        "Pull Request审查",
        "代码审查",
        "PR合并",
        "GitHub质量门禁"
      ]
    },
    "steps": [
      {
        "step": 1,
        "id": "fetch_pr",
        "name": "拉取PR信息",
        "skill": "code-review-skill",
        "description": "通过 GitHub API 获取 PR 变更内容、文件列表、提交历史",
        "inputs": {
          "repo": "${input.repo}",
          "pr_number": "${input.pr_number}",
          "include_diff": true,
          "include_comments": false
        },
        "outputs": ["pr_diff", "changed_files", "commit_list"],
        "next_step": 2,
        "on_error": "abort"
      },
      {
        "step": 2,
        "id": "structured_review",
        "name": "结构化Code Review",
        "skill": "code-review-skill",
        "description": "启动5个并行Agent进行5维度独立审查：正确性、安全、可读性、性能、可维护性",
        "inputs": {
          "pr_diff": "${fetch_pr.pr_diff}",
          "changed_files": "${fetch_pr.changed_files}",
          "review_mode": "parallel_agents",
          "dimensions": ["correctness", "security", "readability", "performance", "maintainability"]
        },
        "outputs": ["review_report", "blocking_issues", "suggestions", "verdict"],
        "depends_on": ["fetch_pr"],
        "next_step": 3,
        "on_error": "abort"
      },
      {
        "step": 3,
        "id": "create_issues",
        "name": "审查问题Issue化",
        "skill": "github-issues-skill",
        "description": "将 Blocking 问题创建为 GitHub Issue 并分派给 PR 作者；Suggestion 作为 PR 评论保留",
        "inputs": {
          "repo": "${input.repo}",
          "pr_number": "${input.pr_number}",
          "blocking_issues": "${structured_review.blocking_issues}",
          "suggestions": "${structured_review.suggestions}",
          "assignee": "${input.pr_author}",
          "verdict": "${structured_review.verdict}"
        },
        "outputs": ["created_issues", "issue_count", "comment_count"],
        "depends_on": ["structured_review"],
        "next_step": 4,
        "on_error": "continue"
      },
      {
        "step": 4,
        "id": "setup_ci_gate",
        "name": "配置CI质量门禁",
        "skill": "github-actions-templates",
        "description": "生成并部署 PR 质量门禁 GitHub Actions 工作流，包含 lint / test / build 三个阶段",
        "inputs": {
          "repo": "${input.repo}",
          "workflow_name": "pr-quality-gate",
          "jobs": ["lint", "test", "build", "quality_gate"],
          "gate_condition": "all_blocking_issues_closed"
        },
        "outputs": ["workflow_file", "workflow_url"],
        "depends_on": ["create_issues"],
        "next_step": 5,
        "on_error": "continue"
      },
      {
        "step": 5,
        "id": "merge_check",
        "name": "合并条件检查",
        "skill": "github-issues-skill",
        "description": "检查所有 Blocking Issue 是否已关闭，若全部关闭则标记 PR 为可合并状态",
        "inputs": {
          "repo": "${input.repo}",
          "pr_number": "${input.pr_number}",
          "check": "blocking_issues_closed"
        },
        "outputs": ["can_merge", "remaining_issues"],
        "depends_on": ["create_issues"],
        "next_step": null,
        "on_error": "continue"
      }
    ],
    "output": {
      "review_summary": {
        "verdict": "${structured_review.verdict}",
        "blocking_count": "${structured_review.blocking_issues.length}",
        "suggestion_count": "${structured_review.suggestions.length}",
        "issues_created": "${create_issues.issue_count}",
        "can_merge": "${merge_check.can_merge}"
      },
      "next_action": {
        "if_verdict_approve": "PR可直接合并，质量门禁通过",
        "if_verdict_request_changes": "等待PR作者修复所有Blocking Issue后重新触发审查",
        "if_verdict_reject": "PR需要大幅重构后重新提交"
      }
    }
  }
}

Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)