code-review · diff

git:20260808.482e7e0 to git:20260808.5aa082b

3 added, 3 removed. Audit A to A.

---
name: code-review
description: 收集工作区未提交改动或最近一次提交的 git 变更面,做只读代码审查并给出带文件行号的问题清单。适用:审查改动、检查刚写的代码质量。不修改代码。
user-invocable: true
argument-hint: "[可选:审查焦点]"
---
# 代码审查
你正在执行 **code-review** 技能:对当前 git 变更面做只读审查,产出带证据的审查报告。
## 上下文
- 工作区:<%= workspacePath %>
- 用户请求:${arguments}
## 目标与完成标准
- **目标**:基于真实 diff 与相邻代码,审查正确性、边界、范围、架构、契约、安全与测试覆盖。
- - **完成标准**:报告已写入工作区;消息流给出自然语言总结(结论、问题清单、优点、未能验证项);全程**不修改**任何文件(仅允许写入本技能约定的报告文件)。
+ - **完成标准**:报告已写入工作区;消息流给出自然语言总结(结论、问题清单、优点、未能验证项)。除本技能约定的报告文件外,**不修改**业务代码、配置与其它文件。
## 阶段语义
### 1. 确定审查范围(git 事实)
先确认当前目录是 git 仓库。优先收集**工作区未提交改动**;工作区干净则回退到**最近一次提交**。
建议只读命令(按需组合):
- `git rev-parse --is-inside-work-tree`
- `git status --porcelain`(识别未跟踪新文件)
- `git diff --name-only HEAD` / `git diff --stat HEAD` / `git diff --unified=3 HEAD`
- 工作区干净时:对 `HEAD~1 HEAD` 做同样的 diff
若不是 git 仓库,或既无未提交改动也无可比较提交,向用户说明原因并停止,不要臆造范围。
diff 过长时截取概览并标注已截断,再用只读工具补读完整文件。未跟踪文件不在 diff 中,须自行 `read`。
### 2. 只读审查
先读项目规则(`AGENTS.md` 及目录级规则)和被改动文件的相邻代码,再以真实代码为证据审查。
审查维度:
- **正确性**与失败路径
- **边界**与空值/并发等边缘情况
- **范围**是否超出用户意图
- **架构**与依赖方向
- **契约**与类型一致性
- **安全**(注入、密钥、权限)
- **测试**是否覆盖新行为
约束:
- 只读:不 `edit` / `write` 业务文件,不执行会改状态的命令,不向用户提问(范围不清时在报告的「未能验证」中说明)。
- 无法验证的点写入未能验证项,不要臆断。
- 每个问题尽量指出文件与行号,并给出可执行的修改建议。
需要并行加深某个子系统时,可同一轮发多个只读 `task`;是否并行由你判断。
### 3. 组织报告
报告须包含:
| 字段 | 含义 |
|------|------|
| `verdict` | `pass` / `conditional` / `block` |
| `summary` | 一句话总评 |
| `findings` | 问题列表:severity(critical/high/medium/low/nit)、file、line、summary、suggestion |
| `strengths` | 做得好的地方 |
| `unverified` | 未能验证、需人工确认的点 |
判定规则(必须遵守):
- 存在 **critical** 问题 → `verdict` 必须为 `block`,即使主观想给 pass。
- 声称 `pass` 但存在 **high** 问题 → 降为 `conditional`。
## 产物落盘
1. 将完整审查报告写入 `<%= workspacePath %>/.nova/reports/`(目录不存在则创建),例如 `code-review-<日期或主题>.md`。
2. 报告用 markdown:结论、范围说明、问题清单(含严重度与位置)、优点、未能验证项。
3. 在消息流用自然语言总结,并给出文件路径;不要把原始 JSON/状态码甩给用户。
## 约束
- - 全程只读审查;唯一写入是本技能的报告文件。
- - 不调用 `start_workflow`;不依赖编排引擎。
+ - 审查过程只读;唯一允许的写入是本技能的报告文件。
+ - 不要调用 `start_workflow`;本能力已是 skill,用 `invoke_skill` 或 `/code-review` 进入即可。
- 回复使用用户语言(默认简体中文)。