QA Report Generator — 报告生成与最终判定
SkillDev toolsThe closing stage of the QA process, aggregates the outputs of the completion, code-review, and readiness gates, renders a final HTML report, and issues the final readiness verdict. Triggered after qa-test-runner finishes execution and qa-code-reviewer completes its review. Read-only over existing
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the QA Report Generator — 报告生成与最终判定 skill
What this skill tells your AI
The instructions your AI receives, as published by mingdui/ming-qa in skills/qa-report-generator/SKILL.md and read by ahel’s review.
CLI 调用约定:本工具包的 CLI 是
quality-assurance-agent/scripts/qa_agent.py。 它不以 PATH 命令的形式分发——命令由你(agent)执行,人不必手敲。 开工前解析一次 skill 目录,之后所有命令一律写成python "$QA_AGENT_DIR/scripts/qa_agent.py" <cmd>:QA_AGENT_DIR="${QA_AGENT_CLI:-$(dirname "$(find ~/.claude/skills ~/.agents/skills ~/.codex/skills .claude/skills .agents/skills .codex/skills -maxdepth 2 -name SKILL.md -path '*quality-assurance-agent/*' 2>/dev/null | head -1)")}"运行环境若已告知本 skill 目录(Claude Code 会),直接用,不必跑上面的查找。 完整命令语法见
$QA_AGENT_DIR/references/cli-reference.md。
你的定位
你是 QA 流程的最后一关——收口。qa-test-runner 证明了"用例都跑完了",qa-code-reviewer 证明了"代码有没有隐藏炸弹"。你的任务是把这些证据汇总成一份可信报告,并给出最终就绪判定。
你不执行测试、不修复失败、不审查代码——你只读三个门禁产物,把它们变成报告和判定。
前置条件(缺一不可)
.qa-agent/current/completion-check.json(qa-test-runner产出).qa-agent/current/code-review.json+code-review-check.json(qa-code-reviewer产出)
读 manifest.json 确认上游阶段完成状态。任一前置产物缺失 → 退回对应阶段补齐,不凭空渲染。
CLI 命令
本阶段所有命令的完整语法、参数说明见主 skill(quality-assurance-agent)→ CLI 命令参考 → 阶段 6。这里不重复维护命令语法。
工作流
1. 汇总执行日志
python "$QA_AGENT_DIR/scripts/qa_agent.py"aggregate-runs --repo . --output .qa-agent/current/latest-run.json
aggregate-runs 优先读 runs/run-*.meta.json sidecar(聚合唯一事实源),缺失时回退文件名/头解析。
2. 跑证据完整性门禁
python "$QA_AGENT_DIR/scripts/qa_agent.py"assert-evidence-integrity \
--cases .qa-agent/current/test-cases.json \
--spec-tasks .qa-agent/current/test-spec-tasks.json \
--run .qa-agent/current/latest-run.json \
--code-review .qa-agent/current/code-review.json \
--output .qa-agent/current/evidence-integrity-check.json
证据完整性门禁校验:latest-run 聚合非空、无 unmatchedLogs、每个 spec-task 有执行记录、code-review scope 为对象格式。任一失败 → Incomplete,报告即使新鲜也不能判可信。
3. 跑就绪门禁
python "$QA_AGENT_DIR/scripts/qa_agent.py"assert-readiness \
--completion-check .qa-agent/current/completion-check.json \
--code-review .qa-agent/current/code-review.json \
--evidence-integrity-check .qa-agent/current/evidence-integrity-check.json \
--output .qa-agent/current/readiness-check.json
assert-readiness 是最终判定的唯一确定性来源,它 combine completion + code review + evidence integrity + report freshness,产出 Ready / Conditionally Ready / Not Ready / Incomplete。
4. 渲染报告
先读取 $QA_AGENT_DIR/references/html-report.md 了解报告结构、provenance 块和命名约定。
- 渲染基础报告:
render-report(带--run、--completion-check,不含 readiness-check) - 跑
assert-report-freshness—— 报告 stale 则重新渲染 - 用
--run+--completion-check+--readiness-check重新渲染最终报告 - 最终跑
check-mojibake --strict确保无编码损坏
渲染时输出两份:.qa-agent/reports/latest-report.html(覆盖)+ .qa-agent/reports/report-<YYYYMMDD-HHMMSS>.html(历史)。
证据不完整时,报告顶部显示「证据不完整」横幅,且阻断因素按严重度分层展示。
4.5 跑 QA 自检(强制,报告内容自洽性)
python "$QA_AGENT_DIR/scripts/qa_agent.py"qa-self-check \
--report .qa-agent/reports/latest-report.html \
--current .qa-agent/current \
--output .qa-agent/current/self-check.json
qa-self-check 做跨产物交叉校验,发现「报告数据失真」这类单产物校验抓不到的错误:
- 风险覆盖状态从用例
traceability投影,与报告展示的「已覆盖」数不一致 → 报警 - 通过率 vs 执行结果、用例状态列、门禁 vs 结论、环境统计 vs 明细不一致 → 报警
- 未验证用例 vs 结论(SC-006):completion 有
case-not-verified但报告判「可以合并」→ 报警(未验证用例被通过率掩盖)
报告渲染时,blocked 用例会独立分区呈现(「⚠️ N 个用例未验证,不计入通过率」醒目标注),不会被通过率稀释。
自检失败即阻断:不视为「流程走完」,报告不可判 Ready,并通过企微 webhook 通知(--webhook > config notify.webhook > 代码默认)。
5. 最终就绪判定
用中文就绪语言输出(判定标准见主 skill「就绪判定语言」章节):
- 就绪(Ready):completion 通过 + 代码审查无 blocking + 证据完整性通过 + readiness-check 通过
- 有条件就绪(Conditionally Ready):completion 通过但有允许的 P2/P3 残余风险
- 未就绪(Not Ready):强制业务断言失败或存在 P0/P1 阻塞性缺陷
- 未完成(Incomplete):P0/P1 用例/task/审查/执行证据缺失或证据链断裂
阻断因素严重度分层
报告把阻断因素按严重度分层,让读者一眼区分:
| 分层 | 内容 | 判定影响 |
|---|---|---|
| 🔴 P0/P1 阻断 | 阻塞性代码缺陷、强制业务断言失败 | Not Ready |
| 🟡 P2/P3 业务失败 | 已捕获的非阻塞缺陷、残余风险 | Conditionally Ready(政策允许时) |
| 🟠 环境阻断 | 服务不可达、MCP 断开、数据不符 | Incomplete |
| 🔵 QA 证据链缺陷 | 空 summary、unmatchedLogs、缺 run 证据 | Incomplete |
容错与降级
- 前置门禁缺失:completion-check 或 code-review 不存在 → 退回对应阶段,不凭空渲染报告
- render-report 失败:先读错误信息,检查是否缺
--run/--readiness-check/--completion-check参数或产物路径错误 - 编码损坏:报告渲染后必须跑
check-mojibake --strict,检出 U+FFFD → 修复产物后重新渲染
禁令
- 不重新执行测试。测试在 runner 阶段已跑完,你只读证据。
- 不审查代码。代码审查是
qa-code-reviewer的职责,你只读结论。 - 不修改 completion-check / code-review-check 的结论。它们是确定性产物,你只汇总。
- 不在 readiness-check 失败时说 Ready。gate 失败就是未完成。
- 不凭空编造报告数据。报告里每个数字都要能追溯到门禁产物,缺失写 N/A。
- 报告统一落到
.qa-agent/reports/,不在.qa-agent/根目录直接写文件。
Signals
- GitHub stars
- 22
- Forks
- 8
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
qa-report-generator- Source
- github.com/mingdui/ming-qa