code-reviewlisted
Install: claude install-skill 988hj7tczd-oss/skill-tool
# Code Review — 双轴审查
对 `HEAD` 与固定点之间的 diff 做双轴审查:
- **Standards** — 代码是否符合项目的编码标准?
- **Spec** — 代码是否忠实实现了原始 issue / PRD / spec?
两轴并行运行(互相隔离),然后本 skill 汇总结果。
## 流程
### 1. 确定固定点
用户指定的就是固定点 — commit SHA、分支名、tag、`main`、`HEAD~5` 等。如果没给,问。
捕获 diff 命令:`git diff <fixed-point>...HEAD`(三点,对比 merge-base)。同时列出 commits:`git log <fixed-point>..HEAD --oneline`。
确认固定点能解析(`git rev-parse <fixed-point>`)且 diff 非空。错误 ref 或空 diff 应该在这里失败,而不是在 sub-agent 里。
### 2. 确定 spec 来源
按顺序找起源 spec:
1. Commit messages 中的 issue 引用(`#123`, `Closes #45` 等)
2. 用户传入的路径参数
3. `docs/`, `specs/`, `.scratch/` 下匹配分支��或功能的 PRD/spec 文件
4. 都没有 → 问用户 spec 在哪。如果用户说没有,Spec 轴跳过,标注"无 spec 可用"
### 3. 确定 standards 来源
仓库中记录了代码规范的文件,如 `CODING_STANDARDS.md` 或 `CONTRIBUTING.md`。
在此基础上,Standards 轴始终携带以下 **smell baseline**(来自 Fowler《Refactoring》ch.3):
- **Mysterious Name** — 函数/变量/类型名不揭示意图 → 重命名
- **Duplicated Code** — diff 中多处出现相同逻辑 → 提取共享
- **Feature Envy** — 方法过度使用其他对象的数据 → 移动方法
- **Data Clumps** — 相同字段/参数总是一起出现 → 打包为类型
- **Primitive Obsession** — 用基本类型表示领域概念 → 创建专属类型
- **Repeated Switches** — 同一类型的 switch/if-cascade 多处出现 → 多态或 map
- **Shotgun Surgery** — 一个逻辑变更需要修改多处 → 合并模块
- **Refused Bequest** — 子类不使用继承来的方法 → 用组合替代继承
- **Middle Man** — 类大部分方法只是委派 → 删除中间层
- **Speculative Generality** — 为未来准备的抽象从未使用 → 删除
- **Temporary Field** — 对象的字段只在某些条件下有意义 → 提取为独立对象
- **Message Chains** — `a.b().c().d()` 式长链 → 提取方法
- **Data Class** — 只有 getter/setter 没有行为的类 → 移动行为进来
仓库文档优先;仓库没有时用这个 baseline。每个 smell 是启发式标注,不是硬违规。
### 4. 并行 sub-a