当用户明确要求"测试代码"、"运行代码审查"或"进行代码自检"时使用。通过多轮 A 轮批判性代码审查 + B 轮代码质量原则检查,系统化发现、记录、修复程序代码中的问题,并将计划/过程/结果统一沉淀到目标代码根目录的 `tmp/run_{timestamp}/tests/` 隔离工作区。⚠️ 不适用:用户只是想优化功能(应直接修改)、只是询问代码问题(应直接回答)、没有明确"测试代码"意图。
Install via CLI
openskills install huangwb8/skills---
name: auto-test-code
category: normal
description: 当用户明确要求"测试代码"、"运行代码审查"或"进行代码自检"时使用。通过多轮 A 轮批判性代码审查 + B 轮代码质量原则检查,系统化发现、记录、修复程序代码中的问题,并将计划/过程/结果统一沉淀到目标代码根目录的 `tmp/run_{timestamp}/tests/` 隔离工作区。⚠️ 不适用:用户只是想优化功能(应直接修改)、只是询问代码问题(应直接回答)、没有明确"测试代码"意图。
metadata:
author: Bensz Conan
short-description: 批判性思维驱动的代码自审查与优化流水线(多轮 A 轮静态/动态/安全分析 + B 轮代码质量原则检查)
keywords:
- auto-test-code
- 代码审查
- code review
- 静态分析
- 安全漏洞审查
- 代码自检
---
# auto-test-code(批判性思维驱动的代码自审查技能)
## 与 bensz-collect-bugs 的协作约定
- 因本 skill 设计缺陷导致的 bug,先用 `bensz-collect-bugs` 规范记录到 `~/.bensz-skills/bugs/`,不要直接修改用户本地已安装的 skill 源码;若有 workaround,先记 bug,再继续完成任务。
- 只有用户明确要求“report bensz skills bugs”等公开上报时,才用本地 `gh` 上传新增 bug 到 `huangwb8/bensz-bugs`;不要 pull / clone 整个仓库。
## 你要产出的东西
本 skill 的交付不是"口头建议",而是一组可追溯的文件:
(目录位置以 `config.yaml:directories.tmp` + `config.yaml:directories.tests` 为准;默认 `tmp/run_{timestamp}/tests/`;不再使用 `reviews/`)
- `tmp/run_YYYYMMDDHHMMSS/tests/vYYYYMMDDHHMM/`:A 轮会话目录(计划/过程/结果都在这里)
- `REVIEW.md`:A 轮批判性审查(问题清单 + 改进计划)
- `TEST_PLAN.md`:测试计划(本轮验证哪些修复点)
- `TEST_RUN.md`:测试过程(命令、关键输出摘录、关键决策)
- `TEST_REPORT.md`:测试结果(结论 + 证据 + 遗留问题)
- `_artifacts/`:中间产物(命令输出、日志、截图、对比结果等)
- `tmp/run_YYYYMMDDHHMMSS/tests/b-vYYYYMMDDHHMM/`:B 轮会话目录(结构同上,`REVIEW.md` 为质量检查报告)
## 目录与命名规范
- 测试会话 ID:`vYYYYMMDDHHMM`(分钟级时间戳)
- 运行工作区:`tmp/run_YYYYMMDDHHMMSS/`(同一次技能执行的 A/B 轮必须复用同一个 `run_id`)
- A 轮会话目录:`tmp/run_YYYYMMDDHHMMSS/tests/vYYYYMMDDHHMM/`
- B 轮会话目录:`tmp/run_YYYYMMDDHHMMSS/tests/b-vYYYYMMDDHHMM/`
- 兼容:`verify_session.py` 可识别旧目录名 `tests/B轮-vYYYYMMDDHHMM/`;新建统一使用 `tmp/run_*/tests/b-vYYYYMMDDHHMM/`
- ⚠️ `reviews/` 已废弃:不再创建、不再写入;如目标项目中存在旧的 `reviews/`,应将其视为历史遗留并在审查时排除。
## 工作流程
### 隔离工作区硬规则
- 每次 skill 执行开始时,必须先在目标项目根目录创建当次专用工作区:`tmp/run_YYYYMMDDHHMMSS/`。
- 所有由 skill 生成的计划、报告、日志、辅助脚本与中间产物,**只能**写入当前 `tmp/run_*/` 工作区内。
- 运行可能产生缓存或临时文件的命令时,优先将工作目录、`TMPDIR`、`XDG_CACHE_HOME`、`PYTHONPYCACHEPREFIX` 等重定向到当前 `tmp/run_*/` 工作区。
- 除了用户明确要求的源码修复外,不得把 skill 相关文件写到 `tmp/run_*/` 之外的位置,以免污染源软件项目。
### 概览
```
用户输入(目标代码路径)
↓
[A轮 × N]:静态分析 → 动态推理 → 安全分类审查 → 计划 → 优化 → 轻量测试
↓
B轮:代码质量原则检查 → 针对性优化 → 轻量验证
↓
完成(文档齐全 + 问题闭环)
```
### A 轮代码审查(可重复 N 次)
#### A.1 初始化会话(生成测试 ID + 目录)
目标:创建本轮的 `tmp/run_*/tests/` 会话骨架(计划/过程/结果都在同一目录)。
推荐使用确定性脚本:
```bash
# 在目标代码根目录内执行(选择你实际的安装路径)
RUN_ID=run_YYYYMMDDHHMMSS
python3 ~/.codex/skills/auto-test-code/scripts/create_session.py --code-root . --run-id "$RUN_ID" --kind a --id vYYYYMMDDHHMM
# 或
RUN_ID=run_YYYYMMDDHHMMSS
python3 ~/.claude/skills/auto-test-code/scripts/create_session.py --code-root . --run-id "$RUN_ID" --kind a --id vYYYYMMDDHHMM
```
最低要求:
- `tmp/run_YYYYMMDDHHMMSS/tests/` 存在
- `tmp/run_YYYYMMDDHHMMSS/tests/vYYYYMMDDHHMM/REVIEW.md`、`TEST_PLAN.md`、`TEST_RUN.md`、`TEST_REPORT.md` 存在
#### A.2 批判性分析与计划生成(写入 `tmp/run_*/tests/` 会话目录)
目标:使用**批判性思维**发现代码中的系统性问题,写成可执行计划,按 P0/P1/P2 排序。
输出:`tmp/run_YYYYMMDDHHMMSS/tests/vYYYYMMDDHHMM/REVIEW.md`
⚠️ **批判性思维是核心要求**:
- **必须使用「刁钻角度」思考**(详见 `references/CRITICAL_THINKING_FOR_CODE.md`)
- **必须发现至少 3 个系统性问题**(算法设计/边界条件/并发安全/内存安全/安全漏洞/设计质量)
- **禁止列出"不痛不痒"的表面问题**(如"缺少注释"等 P2 级别问题不应占多数)
**质量要求**(强制):
- 每轮至少发现 10 个问题(P0 + P1 + P2 总和)
- 鼓励达到 15-20 个问题
- **P0 + P1 占比必须 ≥ 60%**
- **系统性问题 ≥ 3 个**(算法/边界/并发/内存/安全/架构/设计)
**核心要求**:
- **独立评估原则**(强制):
- 每轮 A 轮必须基于目标代码的**当前工作状态**独立分析
- **不查看**历史 `tmp/run_*/` 工作区中的审查文件
- 每轮都是一次完整的、无偏见的系统性审查
- **审查范围**(强制):
- 必须审查:核心源代码文件(以 `config.yaml:a_round_check.independent_review.scan_patterns` 为准)
- 必须审查:配置文件、构建脚本、测试代码
- 排除范围:`tmp/` 等 skill 产物目录,以及 `node_modules/`、`venv/`、`__pycache__/` 等依赖/缓存目录;目标项目的测试代码仍属于必须审查范围
- **全维度覆盖**(强制):每轮必须覆盖所有审查维度(以 `config.yaml:a_round_check.dimensions` 为准);不得以“本轮不聚焦”为由跳过任何维度
- **深挖维度**(可选):可在全覆盖基础上额外指定 1-2 个**深挖维度**,对该维度使用刁钻角度做更细致分析;多轮时建议轮换深挖点
- **刁钻角度**:在深挖维度上必须使用至少一个刁钻角度(空输入/超大输入/恶意输入/竞态条件/资源耗尽/权限绕过/供应链污染)
- **优先级依据**:P0/P1/P2 必须有明确的判定标准
- P0: 崩溃风险、可利用安全漏洞、未授权访问、敏感信息泄露、数据损坏、死锁/活锁、内存泄漏
- P1: 性能问题、边界条件缺陷、逻辑错误、资源泄漏、需要前置条件或组合利用的安全风险
- P2: 代码风格、可读性、冗余代码
- **可追溯性**:每个问题必须包含位置、现象、影响、修复建议、验证方法
**批判性思维框架**(必读):
- `references/CRITICAL_THINKING_FOR_CODE.md` ⚠️ **核心文档,必须使用**
- 框架 1: 静态分析视角(算法设计/数据结构/代码复杂度/设计质量)
- 框架 2: 动态推理视角(边界条件/异常处理/资源管理)
- 框架 3: 问题质量标准(黄金公式 + 质量检查清单)
- 框架 4: 设计质量视角(架构/扩展性/API/状态/建模/耦合/模式)
- 框架 5: 安全漏洞分类视角(CWE/OWASP/STRIDE/七大王国/CVSS)
- `references/A_ROUND_REVIEW_TEMPLATE.md` ⚠️ 代码审查计划模板
- `references/CODE_SMELLS.md` 代码异味识别指南
- `references/SECURITY_PATTERNS.md` 安全漏洞模式库
- `references/SECURITY_TAXONOMY.md` 安全漏洞分类审查体系(必须用于安全维度)
- `references/DESIGN_ANTI_PATTERNS.md` 设计反模式识别指南
#### A.3 执行优化与轻量测试(写入 `tmp/run_*/tests/`)
目标:按计划逐项修复,并用轻量测试验证。
输出:
- 过程:`tmp/run_YYYYMMDDHHMMSS/tests/vYYYYMMDDHHMM/TEST_RUN.md`
- 结果:`tmp/run_YYYYMMDDHHMMSS/tests/vYYYYMMDDHHMM/TEST_REPORT.md`
轻量测试原则:
- 只验证"核心路径"与"本轮变更点"
- 每条结论必须有可复现证据(命令输出、日志、对比结果)
- 中间产物放入 `tmp/run_YYYYMMDDHHMMSS/tests/vYYYYMMDDHHMM/_artifacts/`
可选增强:
```bash
python3 ~/.codex/skills/auto-test-code/scripts/verify_session.py --require-review tmp/run_YYYYMMDDHHMMSS/tests/vYYYYMMDDHHMM
# 或
python3 ~/.claude/skills/auto-test-code/scripts/verify_session.py --require-review tmp/run_YYYYMMDDHHMMSS/tests/vYYYYMMDDHHMM
```
说明:`verify_session.py --strict` 仅用于你已将会话文档中的模板占位符全部替换后的最终自检;新建骨架默认会失败(属于预期行为)。
#### A.4 是否进入下一轮
⚠️ **强制检查**:
- [ ] 本轮已提出至少 10 个问题(P0 + P1 + P2 总和)
**进入下一轮 A 轮的条件**:
- [ ] 用户指定的轮次数未完成
- [ ] 本轮问题(P0/P1/P2)已全部闭环
**重要**:A 轮结束后,必须进入 B 轮代码质量检查。
### B 轮代码质量检查
⚠️ **强制执行**:B 轮代码质量检查是自动测试流程的强制性环节。
#### B.1 产出质量检查报告(写入 `tmp/run_*/tests/` 会话目录)
目标:对 A 轮后的最新代码做系统性质量检查。
输出:`tmp/run_YYYYMMDDHHMMSS/tests/b-vYYYYMMDDHHMM/REVIEW.md`
推荐使用确定性脚本创建 B 轮会话目录:
```bash
# 在目标代码根目录内执行(选择你实际的安装路径)
RUN_ID=run_YYYYMMDDHHMMSS
python3 ~/.codex/skills/auto-test-code/scripts/create_session.py --code-root . --run-id "$RUN_ID" --kind b --id vYYYYMMDDHHMM --a-test-id vYYYYMMDDHHMM
# 或
RUN_ID=run_YYYYMMDDHHMMSS
python3 ~/.claude/skills/auto-test-code/scripts/create_session.py --code-root . --run-id "$RUN_ID" --kind b --id vYYYYMMDDHHMM --a-test-id vYYYYMMDDHHMM
```
检查维度(以 `config.yaml` 的 `b_round_check.dimensions` 为准):
- 算法复杂度分析
- 边界条件覆盖
- 异常处理完整性
- 资源管理(内存/文件/连接)
- 并发安全性
- 安全漏洞分类审查(CWE/OWASP/STRIDE/七大王国/CVSS)
- 代码可读性与可维护性
- 测试覆盖充分性
- 设计质量(可扩展性/架构/API/状态/建模/耦合/模式)
模板:`templates/B_ROUND_CODE_QUALITY_TEMPLATE.md`
#### B.2 B 轮优化与验证(写入 `tmp/run_*/tests/`)
⚠️ **强制修复要求**:
- B 轮发现的 **所有 P0-P2 问题都必须处理**
- P0 问题必须修复
- P1 问题必须修复(除非有合理理由)
- 每个修复必须有验证证据
**完成条件**:
- [ ] P0 问题修复率 = 100%
- [ ] P1 问题修复率 ≥ 80%
- [ ] 所有修复都有可复现证据
## 完成条件(验收)
- [ ] 用户指定的 A 轮次数已完成
- [ ] B 轮代码质量检查已完成
- [ ] 每轮 A 轮平均问题数量 ≥ 10 个
- [ ] **每轮 P0 + P1 占比 ≥ 60%**
- [ ] **每轮系统性问题 ≥ 3 个**(算法/边界/并发/内存/安全/设计)
- [ ] 关键问题(P0/P1)已闭环
- [ ] `tmp/run_*/tests/` 会话结构完整且可追溯(每轮都有 REVIEW/PLAN/RUN/REPORT + artifacts)
## 可复用资源
- 配置:`config.yaml`
- 模板:`templates/`
- A 轮审查:`templates/CODE_REVIEW_TEMPLATE.md`
- B 轮质量检查:`templates/B_ROUND_CODE_QUALITY_TEMPLATE.md`
- 测试计划:`templates/SESSION_TEST_PLAN_TEMPLATE.md`
- 测试过程:`templates/SESSION_TEST_RUN_TEMPLATE.md`
- 测试报告:`templates/SESSION_TEST_REPORT_TEMPLATE.md`
- 参考:`references/`
- **批判性思维指南**:`references/CRITICAL_THINKING_FOR_CODE.md` ⚠️
- A 轮审查结构:`references/A_ROUND_REVIEW_TEMPLATE.md` ⚠️
- 代码异味识别:`references/CODE_SMELLS.md`
- 安全漏洞模式:`references/SECURITY_PATTERNS.md`
- 安全漏洞分类审查体系:`references/SECURITY_TAXONOMY.md` ⚠️
- 边界条件检查清单:`references/BOUNDARY_CHECKLIST.md`
- 设计反模式识别:`references/DESIGN_ANTI_PATTERNS.md`
- 辅助脚本:`scripts/create_session.py`
- 辅助脚本:`scripts/verify_session.py`
No comments yet. Be the first to comment!