mrevjd/claude-review-suite
GitHub: mrevjd/claude-review-suite
一套 Claude Code 代码审查技能插件,通过结合人工检查清单和静态分析工具,对多语言代码进行正确性与安全性审查,并输出人类报告和可被下游 agent 重新验证的机器可读指令。
Stars: 0 | Forks: 0
# claude-review-suite
六个 Claude Code 技能,用于审查代码的正确性和安全性,输出人类可读的报告,
并输出下游编码 agent 可以执行的机器可读 prompt block —— 并带有强制性的
重新验证,确保过时的发现永远不会被盲目应用。
该套件仅负责报告。它不会自动修复。
## 安装
```
/plugin marketplace add mrevjd/claude-review-suite
/plugin install claude-review-suite@claude-review-suite
```
可选择安装技能所探测的分析器 —— 参见 [工具链](#toolchain):
```
./review-tools.sh probe # what's present
./review-tools.sh install # install what isn't
```
## 技能
| 技能 | 触发条件 | 承载内容 |
|---|---|---|
| `code-review` | "review this"、"look over this PR"、"before I merge"、"any bugs in this" | 通用检查清单 `GEN-01`…`GEN-07`;检测语言并委派 |
| `security-review` | "security review"、"audit this"、"check for vulns"、"is this exploitable" | 威胁检查清单 `SEC-01`…`SEC-07`;`semgrep`、`gitleaks`、`trivy` |
| `review-go` | `.go` 文件、"review this Go service" | `GO-01`…`GO-07`;`go vet`、`staticcheck`、`gosec`、`govulncheck`、`errcheck` |
| `review-bash` | `.sh`/`.bash` 文件、shell shebang、"review this script" | `SH-01`…`SH-07`;`shellcheck`、`shfmt` |
| `review-vue-ts` | `.vue`/`.ts`/`.tsx` 文件、"review this component" | `VT-01`…`VT-07`;`tsc --noEmit`、`eslint`、`bun audit`、`knip` |
| `review-php` | `.php` 文件、"audit this endpoint" | `PHP-01`…`PHP-06`;`php -l`、`phpstan`、`composer audit` |
这两个入口点技能会检测 diff 或目录树中的语言,并运行每个适用的语言技能,
将所有发现合并为一个按严重程度排序的列表。每种语言技能也可以独立运行。除了这四种之外的语言 —— Python、Perl、Ruby、SQL、配置文件 —— 会归入通用或威胁检查清单,报告会明确指出这一点,而不是默默忽略它们。
## 混合工具
指导原则是基础;工具使其更加敏锐。每个技能在运行任何内容之前都会使用 `command -v` 进行探测,并且每个未运行的检查都会在 `## Checks skipped` 表格中注明原因和安装提示。**崩溃的工具属于跳过的检查,绝不是干净的结果** —— “gosec 什么都没发现”和“gosec 没有运行”是相反的声明,将它们混为一谈是审查可能做的最危险的事情。
不需要安装任何东西即可完成审查。
## 工具链
`review-tools.sh` 管理技能探测的二进制文件。它提供便利,而不是强制依赖 —— 当缺少工具时,每个技能都会降级为它的检查清单。
```
./review-tools.sh probe # capability report: status, scope, version (default)
./review-tools.sh install # install everything missing
./review-tools.sh tsv # same probe, tab-separated, for a skill to consume
```
`probe` 打印一个表格,并以缺失项的数量作为退出代码:
```
TOOL STATUS SCOPE VERSION
staticcheck PRESENT global staticcheck 2026.1 (v0.7.0)
gitleaks PRESENT global gitleaks version 8.30.1
...
0 of 21 absent.
```
**解析顺序**首先是全局,然后是项目本地(`node_modules/.bin`、`vendor/bin`)—— 因此全局安装的 `eslint` 优先于 vendor 引入的版本。设置 `REVIEW_TOOL_PREFER=local` 可以反转此顺序,当项目锁定特定的分析器版本时,这正是您想要的。可选的第二个参数设置这些项目本地路径解析所依据的目录:`./review-tools.sh probe ../some-app`。
**`install` 会写入仓库外部。** 二进制文件位于 `/usr/local/bin`,这需要 sudo;设置 `PREFIX=$HOME/.local/bin` 可以无需 sudo 进行安装。始终优先使用上游发布的二进制文件,而不是发行版软件包 —— 发行版包管理器仅用于 `curl`、`tar` 和 `unzip`,在这些情况下陈旧是无害的。任何已存在于 `PATH` 中的内容都会被跳过,因此重复运行是安全的。
版本是从每个二进制文件读取的,而不是假设的,对于缺少 `--version` 标志或打印用法的工具,会回退到内嵌的 Go 模块版本。无法确定版本的工具会报告 `unknown`,而不是默默报告为正常。
## 双重输出
**1. 人类报告。** 发现结果按严重程度分组,最严重的排在前面,每一项都包含严重性、置信度、`file:line`、捕获它的检查清单 ID、问题所在、为什么重要以及修复方向。然后是跳过的检查表格。
**2. agent prompt block。** 被围栏包围且可复制粘贴,包含从 Critical 到 Low 的每个严重级别。四条规则使其重新验证真实有效:
- **由内容锚定。** 每个发现都带有引用位置的代码片段。接收方 agent 通过匹配来重新定位代码;行号被标记为 `~` 作为提示。不匹配的片段意味着该发现被定义为 `SKIPPED-STALE`。
- **意图,而非 diff。** 每个条目都说明了修复完成时必须满足的条件。如果提供 patch,就会被盲目粘贴,这正是该 block 旨在防止的失败模式。
- **自包含的发现。** 接收方 agent 没有任何审查上下文,因此每个条目都重述了足够的“原因”,以便单独进行判断。
- **强制状态表。** 每个发现 ID 都返回 `FIXED`、`SKIPPED-STALE` 或 `SKIPPED-DISAGREE` 并附带原因。过时和不同意保持区别:第一个表示审查已陈旧,第二个表示它可能是错误的,将它们混为一谈会丢失关于审查质量的唯一反馈信号。
block 中的验证命令来自审查所使用的探测,因此它永远不会指示 agent 运行未安装的二进制文件。没有发现结果意味着没有 block。
## 布局
```
.claude-plugin/ plugin.json, marketplace.json
references/ rubric.md (severity, confidence, finding format)
procedure.md (probe, detection, report skeleton, error handling)
agent-prompt.md (block template and fill rules)
skills/ one directory per skill, each a single SKILL.md
tests/ validate.py, run.sh, fixtures/, README.md
review-tools.sh probe / install / tsv for the tools the skills use
```
所有六个技能都引用相同的三个文档,这使得 Go 发现和 Vue 发现可以合并为一个连贯的列表。
## 测试
```
bash tests/run.sh # structural validator + every installed linter, against the fixtures
```
每个技能都有已知的易受攻击和已知干净的 fixtures,每个植入的缺陷都标有 `VULN: `。验证器强制要求每个检查清单行都有 fixture 覆盖,agent prompt block 可以用可用的锚点进行解析,并且技能描述不会争夺触发器。需要实时 agent 的标准 —— 严重性准确性、误报率、触发行为 —— 是 `tests/README.md` 中记录的手动协议,有意不声称为自动化。
## 名称冲突
Claude Code 内置了 `/security-review` 命令。当两者都可用时,将此命令作为 `claude-review-suite:security-review` 调用。
## 许可证
MIT。
标签:Claude Code, SOC Prime, 云安全监控, 代码审查, 应用安全, 开发工具, 日志审计, 静态分析