skills/mine/agent-output-audit/SKILL.md
Independent audit of AI-implemented work — certifies a completed task actually did what it claims, checking files, diffs, tests, and CI rather than the agent's self-report. Flags skipped or weakened tests, mock-hidden integration, snapshot drift, happy-path-only coverage, flaky retries, and status/evidence mismatches. Use when validating completed Compozy tasks, AI-authored PRs, or codex-loop iterations. Not for real-user, persona, or journey QA — use qa-execution for those.
npx skillsauth add pedronauck/skills agent-output-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are the independent evaluator. Answer one question — "Did the implementing agent actually do what task_NN.md says it did?" — from files, public behavior, tests, and CI. A self-report is not evidence. (Whether a real user can succeed at the product is qa-execution; run both on a Compozy slug and keep their outputs separate.)
python3 scripts/discover-project-contract.py --root . to surface candidate install/verify/build/test/lint/start commands and E2E signals.make verify, just verify, CI entrypoints) over language defaults. When discovery surfaces more than one plausible gate or mixes ecosystems, read references/project-signals.md before choosing, and state the tie-breaker.references/e2e-coverage.md before classifying any flow's coverage.audit-output-path argument if given, else repository conventions, else /tmp/agent-output-audit-<slug>. Create its audit/ subdirectory; store all bugs and reports under <audit-output-path>/audit/..compozy/tasks/<slug>/ exists, record the slug and:
state.yaml read-only — scripts/update-state.py owns its mutation per the cy-codex-loop contract._techspec.md (deliverable source of truth) and _tasks.md (task roster) when present.task_NN.md and capture its frontmatter status: (pending | in_progress | completed). When frontmatter disagrees with state.yaml, frontmatter is the source of truth..compozy/tasks/<slug>/memory/qa-execution.md — Step 5 writes it before any status flip.flaky-suspect in the SUITE HEALTH SNAPSHOT (test name, attempts, retry outcome, suspected category) rather than promoting it to PASS. Read references/flaky-triage.md before assigning a suspected category or proposing a quarantine.Skip this step only when no task, phase, PRD, tech spec, or implementation-plan artifacts exist.
references/independent-evaluator-protocol.md in full before forming any verdict — it owns what does and does not count as evidence, and the transcript classification (genuine-failure / grader-bug / ambiguous-task / bypass-exploit). In Compozy mode, read the implementer's memory/<phase>.md artifacts and record anomaly classifications in memory/qa-execution.md → Errors / Corrections before judging the task.task_NN.md and its body into a Task Implementation Matrix (columns mirror cy-codex-loop frontmatter):
task_path, declared_status (literal frontmatter status:)title, type, complexity, dependencies — mirrored from frontmattertechspec_deliverable — linked _techspec.md section when presentimplementation_evidence — files, modules, routes, commands, migrations, seeds, testsverification_evidence — commands executed, exit codes, output summariesqa_verdict — PASS | PARTIAL | FAIL | REOPEN | BLOCKED (distinct from declared_status)ai_audit_findings — red flag IDs that fired in Step 4 with verdictaction — none | fixed | reopened-frontmatter | BUG-NNN.md filedlinked_bugs — BUG IDsqa_verdict:
PASS: every material requirement and success criterion has implementation and fresh verification evidence.PARTIAL: implementation exists but one or more non-critical requirements, tests, or evidence are missing.FAIL: claimed behavior does not work or a critical requirement is absent.REOPEN: frontmatter says status: completed but the QA verdict is PARTIAL or FAIL.BLOCKED: a concrete prerequisite is missing. Validate every local boundary that does not need the missing dependency and report the blocked live validation separately.references/ai-implementation-audit.md in full before scanning the test diff of any task with declared_status: completed — it owns the RF-1..RF-6 scanners, the Requirement→Test mapping, and the verdict matrix.git log --follow <test_file>, git diff <baseline_sha>..HEAD).FAIL.ai_audit_findings and in the per-task block of audit-report.md.task_NN.md and every linked _techspec.md bullet, mark the matching test covers / weak / missing. A checked item or status: completed without a covers row is an audit failure.REOPEN.memory/qa-execution.md with the cy-codex-loop canonical sections (Objective Snapshot, Important Decisions, Learnings, Files / Surfaces, Errors / Corrections, Ready for Next Run) before flipping any task_NN.md frontmatter (memory-precedes-status invariant).task_NN.md frontmatter status: back to pending (or in_progress if salvageable). Leave state.yaml alone — update-state.py owns it, and the next iteration reconciles from frontmatter.BUG-<num>.md under <audit-output-path>/audit/issues/ using assets/issue-template.md, including: the task path (Reopens task:), the failed Success Criterion (Summary:), the original strict assertion when RF-2 fired (Root cause:), the red flag ID and verdict (Automation Follow-up:), and any transcript anomaly classification (Related:).audit-report.md, each PASS / FAIL / N/A:
FAIL from the AI test-hygiene scan on P0/P1 tasks.Critical / High issues open.flaky-suspect on P0 flows.FAIL on any gate blocks an unconditional PASS verdict for the run.<audit-output-path>/audit/audit-report.md using assets/audit-report-template.md, with all mandatory sections:
Reopens task: annotations.verify.last_status=PASS precondition for Phase E — leave update-state.py to cy-codex-loop.references/checklist.md — it is the exhaustive completion criterion across all steps.development
Deep review of branch diffs, working trees, or GitHub PRs at any size. Use when the user asks for CodeRabbit-grade review, an incremental re-review after new pushes, publication of findings to a PR, a cross-LLM peer-review verdict round, or conformance review against spec artifacts. Don't use for applying fixes, reviewing specs or PRDs as documents, or quick single-file feedback.
tools
Orchestrate Claude and Codex worker TUIs from a controller agent through herdr panes and the herdr socket CLI. Use when delegating bounded tasks to herdr worker panes, running user-activated plan-first delegations (Claude Code plan mode, Codex Plan mode), waiting on native agent status (idle, working, blocked, done), or verifying worker reports. Workers launch as interactive TUIs via herdr agent start — never through headless runners (compozy exec, claude -p, codex exec). Not for cmux workspaces (see cmux-orchestration) and not for end-user herdr control.
tools
TanStack Query, Router, and Form patterns for React. Use when writing useQuery/queryOptions, mutations, caching, file-based routes, search params, loaders, or TanStack Form validation. Don't use for TanStack Start, TanStack DB/collections, Zustand client state, or non-TanStack routing.
development
Use when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a frontend interface. Covers websites, landing pages, dashboards, product UI, app shells, components, forms, settings, onboarding, and empty states. Handles UX review, visual hierarchy, information architecture, cognitive load, accessibility, performance, responsive behavior, theming, anti-patterns, typography, fonts, spacing, layout, alignment, color, motion, micro-interactions, UX copy, error states, edge cases, i18n, and reusable design systems or tokens. Also use for bland designs that need to become bolder or more delightful, loud designs that should become quieter, live browser iteration on UI elements, or ambitious visual effects that should feel technically extraordinary. Not for backend-only or non-UI tasks.