关于 agent-output-audit
agent-output-audit 是独立核查实施 Agent 是否完成任务规格的技能,依据仓库文件、实际行为、测试和 CI,而非自我报告。它生成审计报告、记录问题,并可重新打开未完成的任务。
主要功能
- 01发现仓库验证命令
- 02运行基线与最终质量门
- 03对照任务要求和证据
- 04扫描测试中的 AI 相关卫生问题
- 05重开未完成任务并提交缺陷
- 06编写结构化审计报告
适用场景
- 01核验已完成的实施任务
- 02检查测试是否覆盖成功标准
- 03调查基线或不稳定测试失败
- 04记录审计发现与受阻检查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pedronauck/ skills --skill agent-output-audit安装后在 Claude Code 中输入/agent-output-audit确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/audit-report-template.mdissue-template.mdreferences/ai-implementation-audit.mdchecklist.mde2e-coverage.mdflaky-triage.mdindependent-evaluator-protocol.mdproject-signals.mdscripts/discover-project-contract.py详细介绍
Agent 输出审计
你是独立评估者。只回答一个问题——“实现 Agent 是否真的完成了 task_NN.md 中的要求?”——依据文件、公开行为、测试和 CI 作出判断。自我报告不算证据。(真实用户能否成功使用产品属于 qa-execution;请对 Compozy slug 同时运行两者,并将输出分开保存。)
第 1 步:了解仓库验证约定
- 运行命令前,先阅读根目录说明、仓库文档和 CI/构建文件。
- 运行
python3 scripts/discover-project-contract.py --root .,以找出可能的安装/验证/构建/测试/lint/启动命令和 E2E 信号。 - 优先使用仓库定义的统一命令(
make verify、just verify、CI 入口等),而不是语言默认命令。如果发现结果中有多个可能的验证门槛或涉及多个生态系统,请在选择前阅读references/project-signals.md,并说明取舍依据。 - 对任何流程进行覆盖率分类前,请先阅读
references/e2e-coverage.md。 - 确定审计产物目录:若提供了
audit-output-path参数,则使用该目录;否则使用仓库约定;若无约定,则使用/tmp/agent-output-audit-<slug>。创建其audit/子目录;所有缺陷和报告都存放在<audit-output-path>/audit/下。 - 检测 Compozy 模式。 如果
.compozy/tasks/<slug>/存在,记录 slug,并执行以下操作:- 以只读方式读取
state.yaml——根据 cy-codex-loop 约定,由scripts/update-state.py负责修改该文件。 - 如存在
_techspec.md(交付物的事实来源)和_tasks.md(任务清单),则读取。 - 列出所有
task_NN.md,并记录其 frontmatter 中的status:(pending|in_progress|completed)。若 frontmatter 与state.yaml不一致,以 frontmatter 为准。 - 记录记忆槽
.compozy/tasks/<slug>/memory/qa-execution.md——第 5 步会在任何状态切换前写入该文件。
- 以只读方式读取
第 2 步:运行基线验证门槛
- 使用仓库首选命令安装依赖。
- 在开始任何审计工作前运行一次规范验证门槛,按最快顺序执行:lint 和类型检查 → 构建 → 单元测试 → 集成测试。
- 如果 E2E 命令独立于统一验证门槛,决定是在此时运行,还是等运行时前置条件就绪后再运行,并记录计划。
- 若基线失败,请阅读首个失败输出,并判断该问题是既存问题还是由当前工作引入。只有在通过干净复现证明与当前工作无关后,才能将其排除在审计范围之外。
- 不稳定失败处理流程。 对任何基线失败进行分类前,须在同一 SHA 上将失败测试单独运行 3-5 次。如果未更改代码且至少有一次运行通过,则在
SUITE HEALTH SNAPSHOT中将其记录为flaky-suspect(包括测试名称、尝试次数、重试结果和疑似类别),不得将其升级为 PASS。分配疑似类别或提出隔离方案前,请阅读references/flaky-triage.md。
第 3 步:审核任务实现
仅当不存在任务、阶段、PRD、技术规格或实施计划相关工件时,才跳过此步骤。
- 在形成任何判断前,完整阅读
references/independent-evaluator-protocol.md——该文档规定了哪些内容算作证据、哪些不算,以及对话记录的分类(genuine-failure/grader-bug/ambiguous-task/bypass-exploit)。在 Compozy 模式下,阅读实施者的memory/<phase>.md工件,并在评判任务前将异常分类记录到memory/qa-execution.md→Errors / Corrections。 - 总结每个
task_NN.md及其正文,整理成任务实现矩阵(列与 cy-codex-loop frontmatter 字段对应):task_path、declared_status(frontmatter 中status:的字面值)title、type、complexity、dependencies——与 frontmatter 字段一致techspec_deliverable——存在时,关联的_techspec.md章节- 需求、子任务、检查清单项、成功标准、依赖文件
implementation_evidence——文件、模块、路由、命令、迁移、种子数据、测试verification_evidence——执行的命令、退出代码、输出摘要qa_verdict——PASS|PARTIAL|FAIL|REOPEN|BLOCKED(与declared_status区分)ai_audit_findings——第 4 步触发的红旗 ID 及其判定action——none|fixed|reopened-frontmatter|BUG-NNN.md filedlinked_bugs——BUG ID
- 根据实际文件、公开行为、自动化测试和验收标准,核验每个已完成或声称已完成的任务。针对当前仓库状态,重新执行最小化的公开验证。
- 指定
qa_verdict:PASS:每项重要需求和成功标准都有实现及最新验证证据。PARTIAL:已有实现,但缺少一项或多项非关键需求、测试或证据。FAIL:声称的行为无法正常工作,或缺少关键需求。REOPEN:frontmatter 标注status: completed,但 QA 判定为PARTIAL或FAIL。BLOCKED:缺少明确的前置条件。验证所有不依赖缺失依赖项的本地边界,并单独报告受阻的实时验证。
第 4 步:AI 测试卫生扫描(RF-1..RF-6)
- 在扫描任何
declared_status: completed任务的测试差异前,完整阅读references/ai-implementation-audit.md——该文档规定了 RF-1..RF-6 扫描器、Requirement→Test 映射以及判定矩阵。 - 针对自任务基线以来的差异运行扫描(
git log --follow <test_file>、git diff <baseline_sha>..HEAD)。 - 按矩阵给出的结果输出判定。RF-1(新增 skip/only/xit/t.Skip)、针对 P0/P1 标准的 RF-2(弱化断言)、RF-3(在 TC 声明为 Integration/E2E 的依赖项上使用 mock),以及针对 P0/P1 的 RF-4(无正当理由的快照变更)均自动判定为
FAIL。 - 将发现记录在矩阵的
ai_audit_findings列,以及audit-report.md中每个任务对应的区块。 - 应用 Requirement→Test 映射:对于
task_NN.md中的每项 Success Criterion,以及关联_techspec.md中的每个条目,将匹配的测试标记为covers/weak/missing。已勾选的项目或status: completed若没有对应的covers行,即视为审核失败。
步骤 5:重新打开、提交缺陷、编写记忆
- 将每个尚未完成但已标记为完成的任务标记为
REOPEN。 - 在 Compozy 模式下,先使用 cy-codex-loop 规定的章节(
Objective Snapshot、Important Decisions、Learnings、Files / Surfaces、Errors / Corrections、Ready for Next Run)编写memory/qa-execution.md,然后再更改任何task_NN.md的 frontmatter(记忆优先于状态这一不变量)。 - 将问题任务的
task_NN.mdfrontmatter 中的status:改回pending(若可挽救,则改为in_progress)。不要改动state.yaml——它由update-state.py管理,下一轮迭代会根据 frontmatter 进行同步。 - 使用
assets/issue-template.md,在<audit-output-path>/audit/issues/下提交BUG-<num>.md,其中包括:任务路径(Reopens task:)、失败的成功标准(Summary:)、触发 RF-2 时的原始严格断言(Root cause:)、红旗 ID 和判定结果(Automation Follow-up:),以及任何记录异常分类(Related:)。 - 如果问题是在审计范围内可明确界定的根因修复,则实施修复、添加回归测试并重新运行任务验证;否则重新打开该任务。
步骤 6:质量门禁判定
- 在审计期间进行最后一次代码更改后,从头重新运行规范验证门禁。
- 在
audit-report.md的质量门禁部分逐项记录PASS/FAIL/N/A:- 规范测试套件中的不稳定率 <2%。
- P0/P1 任务的 AI 测试卫生扫描中
FAIL数为零。 - 未解决的
Critical/High级问题为零。 - 覆盖率变化 ≥ 基线(无回退)。
- P0 流程中未解决的
flaky-suspect为零。
- 任一门禁为
FAIL,都将阻止本次运行获得无条件 PASS 判定。
步骤 7:编写审计报告
- 使用
assets/audit-report-template.md将报告写入<audit-output-path>/audit/audit-report.md,并包含所有必需章节:- 步骤 2 和 6 中执行的每条命令,都要记录其 Claim / Command / Exit code / Verdict。
- AUTOMATED COVERAGE——检测到的支持情况、测试框架、规范命令、必需流程及其分类、新增或更新的规格。
- TASK IMPLEMENTATION AUDIT——Compozy slug、计划来源、矩阵总数、各任务判定结果、重新打开/修复/受阻任务,以及缺陷链接。
- SUITE HEALTH SNAPSHOT——不稳定率、不稳定事件、变异测试分数(存在测试框架时)、相对于基线的覆盖率变化、受阻数量、仅限人工执行的数量、AI 审计发现数量。
- QUALITY GATES——逐项记录各门禁的 PASS/FAIL/N/A。
- ISSUES FILED——总数、按严重性分类的数量,并附上
Reopens task:注释。 - 对每个受阻场景、缺失凭据或环境缺口,记录阻止执行的确切命令或前置条件。
- 在 Compozy slug 中,最终的 PASS 会满足 cy-codex-loop Phase E 的
verify.last_status=PASS前置条件——将update-state.py留给 cy-codex-loop 处理。 - 在宣布审计完成前,确认
references/checklist.md中的每一项均已满足——这是涵盖所有步骤的完整完成标准。
评论
支持 Markdown