# Cross Review

> "写的不审，审的不写"多模型代码审查工作流。 Claude 写代码，Codex 审代码，循环修复直到无新问题，再提交。 在完成代码实现后触发此技能。

- Skill: `atompilot/cross-review` (Agent Skill)
- Install (CLI): `npx skillmds@latest add atompilot/cross-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/atompilot/cross-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: atompilot (https://skillmd.com/u/atompilot)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/atompilot/cross-review

---


# Cross-Review 工作流

## 原则

- **写的不审**：Claude 专注写代码，不自我审查边界条件
- **审的不写**：Codex 专注找问题，不改代码
- **循环直到干净**：有问题就修，修完再审，直到 Codex 无新问题

## 触发时机

完成功能开发、Bug 修复或重构后，在 `git commit` 之前运行此工作流。

## 流程

### 步骤 1：确认工作范围

```
检查未提交的改动：git diff --stat
列出变更文件清单，确认审查范围
```

### 步骤 2：调用 Codex 审查

**优先方式 - MCP 工具调用**（如果 Codex MCP 服务器已加载）：
- 使用 `codex` MCP 工具，传入变更文件列表，请求代码审查
- 重点关注：边界条件、逻辑漏洞、类型安全、空值处理、并发问题

**备用方式 - CLI 调用**（如果 MCP 不可用）：
```bash
git diff HEAD | codex "你是严格的代码审查员，分析以下代码变更。用中文输出问题列表，每个问题说明：文件路径:行号、问题类型（逻辑/类型/并发/资源）、具体描述、风险、修复建议。没有问题则输出 NO_ISSUES。"
```

### 步骤 3：解析问题列表

将 Codex 输出结构化为问题列表：

```
问题 #1：[类型] [文件:行号]
  描述：...
  修复方案：...

问题 #2：...
```

如果 **无问题** → 跳到步骤 6

### 步骤 4：Claude 逐项修复

按问题列表逐一修复：
- 优先处理：逻辑漏洞 > 类型安全 > 边界条件 > 代码质量
- 每次修复后更新进度：`✅ 已修复 #N` 或 `⏭️ 跳过 #N（说明原因）`
- 不过度修复：只改 Codex 指出的问题，不顺手重构无关代码

### 步骤 5：再次调用 Codex 审查

重复步骤 2-3，检查：
- 修复是否正确解决了原问题
- 修复是否引入了新问题

如果 **有新问题** → 回到步骤 4

如果 **无新问题** → 继续步骤 6

### 步骤 6：验证

```bash
# 根据项目类型选择合适的验证命令
# lint / typecheck
# build / compile
# test
```

全部通过后进入步骤 7。如果验证失败 → 修复后回到步骤 2。

### 步骤 7：提交

```bash
git add <相关文件>
git commit -m "$(cat <<'EOF'
<commit message>

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
EOF
)"
```

## 审查重点清单

Codex 审查时应特别关注以下维度：

| 维度 | 检查项 |
|------|--------|
| 边界条件 | 空数组/空字符串、零值、极大/极小值、索引越界 |
| 逻辑漏洞 | 条件判断遗漏、逻辑短路错误、状态机缺失状态 |
| 类型安全 | nil/null 解引用、类型断言失败、接口不匹配 |
| 并发安全 | 数据竞争、死锁、未加锁的共享状态 |
| 错误处理 | 忽略 error 返回值、错误信息丢失、panic 未恢复 |
| 资源管理 | 文件/连接未关闭、内存泄漏、defer 使用错误 |

## 输出格式

工作流结束时汇报：

```
## Cross-Review 完成报告

**审查轮次**：N 轮
**发现问题**：N 个
**已修复**：N 个
**跳过**：N 个（含原因）
**验证结果**：✅ 全部通过 / ❌ 部分失败

已提交：<commit hash> <commit message>
```

