1实现原理 · 为什么它能做到
工程骨架完全由 scripts/init_qa_project.py 用标准库 mkdir + open 落盘生成:4 层目录(tests/docs、tests/docs/templates、tests/e2e、tests/fixtures)是硬编码列表,不依赖任何模板引擎或第三方包。
dirs = [ "tests/docs", "tests/docs/templates", "tests/e2e", "tests/fixtures" ]
CSV 的列名是两个脚本之间的隐式数据契约:init 写 13 列,calculate_metrics.py 后续按同一批列名(Test Case ID/Status/Result/Bug ID/Priority/Notes)读取与聚合。
headers = [ "Test Case ID", "Category", "Priority", "Test Name", "Estimated Time (min)", "Prerequisites", "Status", "Result", "Bug ID", "Execution Date", "Executed By", "Notes", "Screenshot/Log" ]
指标口径写死在脚本里:执行数 = Status 恰为 'Completed' 的行,通过数 = Result 恰为 '✅ PASSED' 的行;执行率分母为全部有效用例行,通过率分母为已执行行。
executed = len([t for t in tests if t['Status'] == 'Completed']) passed = len([t for t in tests if t['Result'] == '✅ PASSED']) failed = len([t for t in tests if t['Result'] == '❌ FAILED'])
质量门禁在脚本里只实现 3 条(执行率 100%、通过率 ≥80%、P0=0),且 P0 判定靠 Notes 列里是否含字符串 'P0',属于弱证据判定。
gates = { "Test Execution ≥100%": execution_rate >= 100, "Pass Rate ≥80%": pass_rate >= 80, "P0 Bugs = 0": len([t for t in tests if t['Bug ID'].startswith('BUG') and 'P0' in t['Notes']]) == 0, }
「Ground Truth 原则」把文档定为唯一规格源、CSV 只记执行状态,是本 skill 的核心纪律(对应真实事故教训:CSV 与文档用例 ID 一致率仅 3.2%)。
- **Test case documents** (e.g., `02-CLI-TEST-CASES.md`) = **authoritative source** for test steps
「自主执行」不是代码能力,而是一段可粘贴的 master prompt:让宿主 LLM 读 CSV 判断进度、逐条执行测试、每条立刻更新 CSV,从而获得断点续跑。
You are a senior QA engineer with 20+ years of experience at Google. Execute the QA test plan.
补丁在于状态可续跑:master prompt 要求 LLM 先读 TEST-EXECUTION-TRACKING.csv 定位最后一个 'Completed' 用例,再从下一条继续,并强制「每条测试后立即更新、禁止批量更新」。
- Auto-resume from last completed test (reads tracking CSV)
测试用例体系来自模板而非代码生成:用例结构由 assets/templates/TEST-CASE-TEMPLATE.md 定义(AAA + TC-[CATEGORY]-[NUMBER] 命名 + P0-P4)。
### TC-[CATEGORY]-[NUMBER]: [Descriptive Title]
init 实际落盘的文件集与文档宣称的存在缺口:生成的 README/MASTER-QA-PROMPT 指向 QA-HANDOVER-INSTRUCTIONS.md、分类测试用例文档等 init 并不创建的文件。
1. Read `QA-HANDOVER-INSTRUCTIONS.md`
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| cli | python3(执行自带脚本;仅标准库 os/sys/csv/pathlib/datetime/collections) |
| cli | git(master prompt 中克隆被测仓库的示例步骤) |
| cli | docker / npx supabase(Day 1 环境搭建示例:起本地数据库) |
| cli | pnpm / npm(Day 1 安装依赖示例) |
| cli | curl(诊断脚本:检查本地 dev server 是否响应) |
| network | 文档内参考外链(仅 Markdown 超链接,代码不访问) |
4风险提醒 风险提醒:蓝色 · 知晓即可
- 生成物自我引用断裂,开箱即缺文件 — init 不创建 QA-HANDOVER-INSTRUCTIONS.md、01-[CATEGORY]-TEST-CASES.md、DAY-1-ONBOARDING-CHECKLIST.md,但生成的 README/MASTER-QA-PROMPT 把它们列为第一步要读的文件;照做会卡住,需要人工补齐映射。
- 指标口径脆弱且静默失真 — Status=='Completed'、Result=='✅ PASSED'、Notes 含 'P0' 这类精确匹配没有归一化与告警:写 'Done' 或 'PASSED' 时通过率/执行率直接算 0,用户若不逐行核对年报不出错。
- 文档承诺大于代码实现,易高估自动化程度 — 6 条质量门禁脚本只实现 3 条;『30+ prompts』实为 18 个;『100x faster / zero human error』为无度量口径的宣传语,验收时不应据此判断覆盖。
- 自主执行把项目文档当指令源,构成注入面 — master prompt 要求 LLM 严格按 tests/docs 下文档执行且『DO NOT deviate』,文档内含 git clone/docker exec/npx supabase 等真实命令示例;若项目文档被污染或来自不可信来源,agent 会在宿主机上照做,skill 自身无内容校验。
5第二遍独立确认
- [ok] 无网络/无凭证:脚本执行面反查 — 对 qa-expert/ 全目录 grep subprocess|requests|urllib|socket|http|os.system|os.environ|getenv|eval|exec:脚本侧零命中,仅参考文献里的 localhost 示例、文档外链与 docker ps 等示例命令。两脚本 import 仅 os/sys/csv/pathlib/datetime/collections。第一遍『无网络、无凭证』结论成立。
- [discrepancy] init 落盘清单 vs SKILL.md/生成文档的自我引用 — init 只创建 6 个文件:TESTS-EXECUTION-TRACKING.csv、BUG-TRACKING-TEMPLATE.csv、BASELINE-METRICS.md、WEEKLY-PROGRESS-REPORT.md、MASTER-QA-PROMPT.md、README.md(均在 tests/docs 或 tests/docs/templates 下)。但生成的 README 正文写『1. Read `QA-HANDOVER-INSTRUCTIONS.md`』并索引 QA-HANDOVER-INSTRUCTIONS.md、01-[CATEGORY]-TEST-CASES.md、02-SECURITY-TEST-CASES.md,MASTER-QA-PROMPT.md 也要求先读 tests/docs/QA-HANDOVER-INSTRUCTIONS.md——这些文件 init 一律不生成,第三方按模板走会在第一步中断。SKILL.md『What gets created』同样未提示该缺口。
- [discrepancy] 质量门禁:SKILL.md 6 条 vs 脚本 3 条 — SKILL.md 门禁表列 Test Execution 100% / Pass Rate ≥80% / P0=0 / P1≤5 / Code Coverage ≥80% / Security 90% 六条并标注均为 Blocker;calculate_metrics.py 的 gates 字典只有前三条,且 P0 判定实现为『Bug ID 以 BUG 开头且 Notes 含 P0』这一启发式。P1≤5、覆盖率、OWASP 三项无任何自动判定。
- [ok] 指标口径与 CSV 键名契约 — calculate_metrics 读取的键 Test Case ID/Status/Result/Bug ID/Priority/Notes 均存在于 init 写出的 13 列表头中,跨脚本契约自洽。但口径依赖精确字符串:Status=='Completed'、Result=='✅ PASSED'、Notes 含 'P0',大小写或写法的任何偏差都会静默计 0(无校验、无告警)——这是口径脆弱性而非事实错误。
- [discrepancy] llm_prompts_library『30+ prompts』宣称 — SKILL.md 两处写『30+ ready-to-use prompts』/『30+ ready-to-use reporting prompts』。独立计数(grep '^```' = 36 行 → 18 个围栏代码块;'### ' 小节 29 个,其中含 Best Practices/Common Mistakes/Troubleshooting 等非 prompt 小节)→ 可粘贴 prompt 块实为 18 个,最宽口径(含故障排查内的短示例)也不足 30。宣称偏高。
- [ok] 关键方法论声明与实际内容一致性(AAA/5 小时/OWASP 90%/P0-P4) — day1_onboarding.md 首行即『**Time**: 5 hours (with breaks)』,与 SKILL.md 的 5 小时时间线一致;google_testing_standards.md 确实给出 AAA 三段结构、TC-[CATEGORY]-[NUMBER] 命名与 P0-P4 定义;SKILL.md 的 OWASP A01-A07 清单与『**Target**: 90% OWASP coverage (9/10 threats mitigated)』自洽;模板文件 TEST-CASE-TEMPLATE.md 含 AAA 字段与实例。无夸大。
- [ok] Ground Truth 原则的双向核对 — SKILL.md『Test case documents … = authoritative source for test steps』与 ground_truth_principle.md『Ground Truth: 02-CLI-TEST-CASES.md (detailed test specifications)』/『Lesson Learned: … 3.2% consistency rate』表述一致,纪律有事故依据,非泛泛口号。
- [ok] pin commit 与目录资产面核对 — git rev-parse HEAD = d5c4678cb5d4fd6acc9c922690df035dbd33d247,提交时间 2026-09-09T20:31:25+08:00(= UTC 12:31:25Z),与任务给定一致。glob 全量(含隐藏文件)确认 qa-expert/ 仅 SKILL.md + scripts/2 + references/5 + assets/templates/1,无隐藏脚本、无二进制、无 .env。
6结论
a79a23756c922164…d5c4678cb5