From aura-frog
Draft → generate verification questions → answer independently via tools → revise. Catches hallucinated facts in reports and reviews. MANDATORY for Phase 4 security/test claims. Paper: Dhuliawala et al. 2023.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aura-frog:chain-of-verificationWhen to use
phase 4 review, security audit conclusions, test coverage claims, documentation with specific file or line references, reason: cove, before approval gate
This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **AI-consumed reference.** Optimized for Claude to read during execution.
AI-consumed reference. Optimized for Claude to read during execution. Human-readable explanation: see docs/architecture/HIERARCHICAL_PLANNING.md or docs/getting-started/ depending on topic.
Catch hallucinations by forcing the model to verify its own claims via tools.
Governed by: rules/workflow/chain-of-verification.md (when / why — MANDATORY in Phase 4)
just do: (but still verify destructive claims)Generate the answer/report as normal. Do NOT optimize for correctness yet.
List 3–5 focused questions that would disprove the draft. Each question must be:
For each question, run the tool and record the actual result. Don't reason about what "should" be — record what IS.
Compare each claim in the draft against verification results:
Security review of /api/users endpoint:
- ✓ No SQL injection risks (uses parameterized queries)
- ✓ Rate-limited at 100 req/min
- ✓ Input validated before DB write
- ⚠ Password comparison timing-safe
Q1: Does src/api/users/route.ts use parameterized queries?
→ grep "raw\|concat" src/api/users/
Q2: Is there a rate-limit middleware on /api/users?
→ grep "rateLimit\|rate-limiter" src/api/users/ src/middleware/
Q3: Is input validated before any DB call?
→ Read src/api/users/route.ts — check order of validation vs DB call
Q4: Does password comparison use timing-safe function?
→ grep "timingSafeEqual\|bcrypt.compare" src/
Q5: What's the actual rate limit value?
→ grep -A 3 "rateLimit" src/middleware/
Q1 result: 0 matches for raw/concat SQL in users/. Uses Prisma ORM.
→ CLAIM VERIFIED
Q2 result: Found src/middleware/rate-limit.ts, applied to /api/*
→ CLAIM VERIFIED
Q3 result: Read route.ts line 12-18: Zod schema parses BEFORE prisma.user.create
→ CLAIM VERIFIED
Q4 result: Found bcrypt.compare in auth service
→ CLAIM VERIFIED (bcrypt.compare is timing-safe by design)
Q5 result: Rate limit = 60 req/min, NOT 100 as draft claimed
→ CLAIM CONTRADICTED
Security review of /api/users endpoint:
- ✓ No SQL injection risks (Prisma ORM, 0 raw queries) — VERIFIED
- ✓ Rate-limited at 60 req/min (not 100 as initially drafted) — CORRECTED
- ✓ Input validated via Zod before DB write — VERIFIED
- ✓ Password comparison timing-safe (bcrypt.compare) — VERIFIED
| Claim pattern | Verification |
|---|---|
| "X tests pass" | Run the tests, count actual pass/fail |
| "Coverage Y%" | Run coverage tool, read actual number |
| "No security issues" | Grep for known anti-patterns, read flagged files |
| "Function foo exists in bar.ts" | Glob/Read to confirm |
| "API returns 200 for valid input" | Run the request or Read the handler |
| "Tests take X seconds" | Actually run and time them |
| "File has N lines" | wc -l on the file |
| "This change broke nothing" | Run full test suite |
src/api/users/route.ts use raw SQL?" — specific.rules/workflow/chain-of-verification.md — policy (MANDATORY for Phase 4)rules/core/verification.md — the general principle CoVe implements concretelyrules/core/no-assumption.md — CoVe is what "never assume" looks like post-draftskills/code-reviewer/SKILL.md — applies CoVe to each of 6 review aspectsskills/bugfix-quick/SKILL.md — verification step in root-cause diagnosis (debugging merged into bugfix-quick in v3.5)npx claudepluginhub nguyenthienthanh/aura-frog --plugin aura-frogRuns adversarial verification with three competing agents (finder, disprover, judge) to surface and filter issues in security-sensitive code, data integrity, financial logic, and breaking changes.
Runs parallel test agents for unit, integration, E2E, security, and type checking. Reports coverage, regressions, and pass/fail with detailed findings. Use for pre-merge verification.
Verifies assistant claims by independently checking changes against actual state using a read-only agent. Run when you want to confirm work was actually done.