# Code Review

> Review Vue 3/TypeScript and Java 21/Spring Boot 4 diffs for style, quality, security, tests, and performance against this repo's conventions (KISS, service interfaces, cn.icounting.training.*). Use when the user runs /review, /code-review, asks for code review, or reviews a PR/MR/diff.

- Skill: `bfyxzls/code-review` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add bfyxzls/code-review`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bfyxzls/code-review/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: bfyxzls (https://skillmd.com/u/bfyxzls)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/bfyxzls/code-review

---


# Code Review Skill

全栈审查：按 Diff 语言分别应用 Java / Vue 规范，输出分级、可操作的审查报告。

## 何时加载参考文档

先读本文件完成流程与报告；**按 Diff 命中情况再读参考**（勿一次全读）：

| Diff 含有 | 读取 |
|-----------|------|
| `*.java`、`pom.xml`、`application*.yml` | [references/java-spring.md](references/java-spring.md) |
| `*.vue`、`*.ts`、`*.tsx`、前端 `package.json` | [references/vue-typescript.md](references/vue-typescript.md) |
| 需要 before/after 示例 | [references/report-examples.md](references/report-examples.md) |

仓库约定优先：`AGENTS.md`、`.cursor/rules/`（`backend-java`、`frontend-vue`、`project-conventions`）。

## 审查流程

### Step 1：变更上下文

从 PR/MR 描述或提交信息确认（缺失则标注 `[NEED-CONTEXT]`）：

| 项目 | 说明 |
|------|------|
| 变更目的 | 解决什么问题 / 实现什么功能 |
| 影响范围 | 模块、是否 DB / API / 前后端契约变更 |
| 关联 Issue | 如有则记录 |

### Step 2：取 Diff 并路由

1. `git status`、`git diff HEAD`、`git diff --cached`（PowerShell 用 `;` 不用 `&&`）
2. 按文件扩展名加载对应 reference
3. 前后端同时改动时，检查 API 契约是否一致（字段名、状态码、错误体）

### Step 3：逐文件审查

对每个变更文件标注**精确行号**，按 reference 中的维度检查。公共维度：

- Bug / NPE·undefined / 逻辑错误 → Must Fix
- 安全（注入、XSS、密钥泄露、未校验入参）→ Must Fix
- 可维护性、分层违规、缺少测试 → Should Fix
- 命名、注释、小风格 → Nitpick
- 格式化工具能自动修的（如 `springformat:apply`、`eslint --fix`）→ 只提示运行命令，不逐条列出

### Step 4：汇总报告

按下方模板输出。至少写 1 条亮点。

## 报告模板

```markdown
## Code Review Report

### 基本信息
| 字段 | 内容 |
|------|------|
| PR/MR | #<number> 或「工作区 Diff」 |
| 作者 | @<author> |
| 审查人 | AI Reviewer |
| 日期 | YYYY-MM-DD |
| 变更目的 | ... |
| 影响范围 | 后端 / 前端 / 双端；DB/API：有/无 |
| 关联 Issue | ... 或 [NEED-CONTEXT] |

### Must Fix（必须修改后才能合入）
> Bug、安全隐患、数据丢失、严重分层/契约违规

| # | 文件 | 行号 | 问题描述 | 建议 |
|---|------|------|----------|------|
| 1 | `path` | Lxx | ... | ... |

### Should Fix（强烈建议修改）
> 质量与可维护性

| # | 文件 | 行号 | 问题描述 | 建议 |
|---|------|------|----------|------|

### Nitpick（可选优化）
> 风格、命名、注释

| # | 文件 | 行号 | 问题描述 | 建议 |
|---|------|------|----------|------|

### 亮点
- ...

### 需作者确认
- [ ] ...

### 统计
| 指标 | 数值 |
|------|------|
| 审查文件数 | X |
| Must Fix | X |
| Should Fix | X |
| Nitpick | X |
```

风格/逻辑类问题须附：

```text
❌ 当前写法
...
✅ 建议写法
...
```

## 输出约束

1. 每条意见带路径 + 行号
2. 语气专业中立，只陈述事实与依据
3. 严格区分 Must / Should / Nitpick，勿全部标为阻塞
4. 无 Java 或无 Vue 变更时，对应维度标「不适用」，勿空转检查项
5. 合入建议一句话收尾

## 快捷指令

| 指令 | 行为 |
|------|------|
| `/review` 或 `/code-review` | 完整审查（按 Diff 加载 Java/Vue 参考） |
| `/review --quick` | 仅 Must Fix（Bug + 安全 + 空指针/undefined） |
| `/review --style` | 仅风格与格式（java → springformat；vue/ts → ESLint/Prettier 约定） |
| `/review --security` | 仅安全相关 |
| `/format-check` | 提示：后端 `mvn springformat:apply`；前端对应 lint/format |

