# Yzr Coding Review

> 当用户要和 agent 一起 review 一段现有代码时使用本 skill——审视代码合理性 + 找重构机会， 语言中立、聚焦设计层判断（而非正确性 / 机械检查）。默认对话式结论、不主动改文件；要报告 存档 / 大范围体检可出分级报告，发现多可逐条过。 触发：用户说"review / 重构 / 看看这段代码合不合理 / 陪我一起 review / 这段设计有没有 问题"；连续写完一批代码后由用户或 agent 主动询问是否需要巡检。 不适用：执行用户已给明确改法的单点修改（如"把 data1 改成 user_data"）/ 加新功能 / 改 bug / 性能调优（profile / benchmark 专项）/ 安全审计 / lint 等确定性机械检查 / 重写 / 单步问询 （解释代码）。

- Skill: `yzr95924/yzr-coding-review` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add yzr95924/yzr-coding-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/yzr95924/yzr-coding-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: yzr95924 (https://skillmd.com/u/yzr95924)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/yzr95924/yzr-coding-review

---


# yzr-coding-review

## 输入 / 输出

**输入**(任一形态):

- 完整代码段(直接粘贴)
- 文件路径(agent 自己读)
- git diff / patch(只 review 改动)
- 项目根目录 + 范围(文件 / 模块 / 类过滤)

**输出**: 三种产物(对话式分析回答 / 报告形态 / 逐条过),按用户意图路由——各形态定义、
结构模板与切换规则见「工作流 / 步骤」Step 4–6,此处不重抄。

## 执行原则 / 边界

1. **不主动改文件**: 产出是结论 / 报告,用户点头后才走具体重构
2. **每条发现可追溯**: 每条发现映射到至少 1 个 catalog 场景名 / 合理性卡片名
3. **合理性维度收敛**: 只审 设计意图与职责 / 边界条件与错误处理 / 可读性 三个维度;不越界到
   bug 修复 / 性能调优执行 / 安全审计(发现这些信号时指出"建议另行专项处理",不展开);
   机械可判定项(风格规则 / 格式 / TODO / 文档字符串)归 CI,不占发现项
4. **产物留在对话内**: 报告 / 结论不落成文件,不主动持久化

## 评审立场

- **资深工程师标准**: 按生产代码的维护成本审,每条发现给直接结论 + 理由,不模棱两可,不为照顾情绪放水
- **敢于质疑框架**: 问题根因在抽象层 / 模块划分而不在局部写法时,明确指出"局部重构不够,建议结构性调整"并给出方向;不给完整新设计(那是重写,越界),动手仍等用户点头
- **回到存在理由**: 每条判断先问这段代码为什么存在、服务什么场景、删掉 / 合并损失什么;catalog 是召回清单,不是套用模板
- **洁癖但克制**: 高标准不等于凑数——Minor / Nitpick 级发现合并报或放入"不报告项",主表保信噪比
- **一次看全**: 评审时反复自问"当前方案是不是最合理的解法",逻辑 / 结构 / 边界 / 计算经济性看透再下结论;一次输出完整判断,不做表面巡检、不靠多轮往返补齐发现

## 工作流 / 步骤

### Step 1: 收集代码

解析输入(代码段 / 路径 / diff / 范围),确定语言 + 行数;行数 > 500 时与用户确认分段粒度(按文件 / 按类 / 按函数)。

### Step 2: 加载参考

必读 `references/catalog.md`(场景表);按需读 `references/severity-rubric.md`(判定严重度时)。

### Step 3: 走 catalog 补充

LLM 用 catalog 重构场景卡 + 合理性审视卡片补齐设计层问题;每条映射到 ≥ 1 个场景名 / 卡片名。

### Step 4: 形态路由

默认进 **对话式分析回答**(Step 5);用户明确要报告或大范围体检(多文件 / 遗留代码)→ 进 **报告形态**(Step 6);形态可中途切换。

### Step 5: 对话式分析回答(默认)

1. **理解复述**: 先用 2-4 句向用户讲清这段代码**在做什么**(功能意图)与**怎么做到的**(结构 / 控制流),拿不准处显式说"这里我理解为 X,若不对请纠正"。**为什么**: 理解偏了,后面所有发现都是空转——用户纠正理解时,基于纠正重审再列发现,不硬撑原判断
2. **结论先行**: 一句话给出"有没有优化空间"(没有 → 说明理由,收尾)
3. **列要点**: 按严重度从高到低;发现 ≤ 3 条直接给全(位置 + 场景·卡片名 + 理由 + 建议);> 3 条给 top 概览
4. **收尾问询**: 发现多时问"逐条过一遍还是出一份报告存档";逐条过按严重度从高到低逐条呈现,每条等用户表态:
   - **确认** → 记为"接受",下一条
   - **改判** → 按用户意见修正严重度或内容,下一条
   - **跳过** → 记为"跳过",下一条
   - **追问** → 展开讲清该条后再回到该条表态
5. 逐条过完全部后输出汇总(接受 / 改判 / 跳过 计数 + 采纳清单),询问是否生成报告存档或进入具体重构

### Step 6: 报告形态

开头先给一段**整体理解**(口径同 Step 5 第 1 步,不超过一段),再按 `references/report-template.md`
两档输出;严重度查 `references/severity-rubric.md`;末尾问用户要不要细化 / 跳过 / 改判 / 切对话逐条过。

## 参考样例

**简短示例 — 对话式分析回答(默认)**。用户输入:

> 帮我 review 一下 src/parser.py(80 行 Python 解析器)

skill 回答:

> 先说我的理解: 这是一个订单解析器——`process()` 逐行读入订单数据,拆字段后校验数量与单价,再计算总价并打印;解析 / 校验 / 计算三个语义段都内联在同一个大函数里。
>
> 基于这个理解,有优化空间,3 个要点:
>
> 1. **Major** — parser.py:1 `Extract Method`:`process()` 62 行内嵌 3 个语义段,建议抽 `parse_lines()` / `calc_total()`
> 2. **Minor** — parser.py:14 `Magic Literal`:`0.9` / `100` / `0.95` / `1000` 改成具名常量
> 3. **Major** — parser.py:6 `Introduce Parameter Object`:`(qty, price)` 重复 4 处,改 dataclass
>
> 要逐条过一遍,还是出一份报告存档?

**简短示例 — 逐条过**。用户输入:

> 陪我一起 review 一下 src/parser.py,逐条过

skill 第一条:

> **1/4 · Major** — parser.py:1 `Extract Method`:`process()` 62 行内嵌 3 个语义段
> (计算总价 / 校验 / 打印),建议抽 `calc_total()` 和 `validate_order()`。接受 / 改判 / 跳过?

用户: 跳过,后面 3 行是核心逻辑。
skill: 记下,下一条 —— **2/4 · Minor** …(循环至汇总)

