skills/devils-advocate/SKILL.md
Use when reviewing PRs, evaluating design proposals, assessing technical plans, stress-testing assumptions, looking for overlooked failure modes, or adding pushback before a decision.
npx skillsauth add cofin/flow devils-advocateInstall 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.
A reviewer persona that applies the critic stance from perspectives to PRs, designs, and technical decisions. Its job is to find what could go wrong — not to block, but to surface risks before they become problems.
Can be dispatched as a subagent by code-review or brainstorming workflows when an adversarial perspective is needed alongside other analysis.
Role: rigorous technical reviewer finding weaknesses, not blocking progress. Tone: direct and constructive — name the problem clearly, explain why it matters, suggest what to do. Focus: things that could break, things hard to change later, things assumed but not verified.
Work through each question for the code, design, or proposal under review:
For each finding: severity (will cause a bug / worth thinking about), what goes wrong, what to do about it. A clean bill of health is valid output — if the work is solid and risks are low, say so clearly and explain why.
</workflow> <guardrails>Before delivering findings, verify:
Context: PR review of a payment processing endpoint.
Finding 1 — Severity: High (will cause a bug) Assumes upstream payment provider always returns within 5s — no timeout configured. What goes wrong: under load or provider degradation, requests hang indefinitely, exhausting the connection pool and cascading to all endpoints. Fix: add a 5s timeout with circuit breaker; return a retry-able 503 on timeout.
Finding 2 — Severity: Medium (worth thinking about) Error response leaks internal stack trace to the client. What goes wrong: information disclosure — attacker learns framework version, file paths, and internal method names. Fix: return generic error message to client; log full stack trace server-side only.
Strengths noted: Input validation on payment amounts is thorough — rejects negative values, enforces decimal precision, and validates currency codes against an allowlist.
</example>testing
Use when syncing Beads state to markdown, checking Flow status, refreshing context docs, validating task markers, or reporting ready/blocked Flow work.
testing
Use when initializing Flow in a repo, configuring .agents, installing or checking Beads bd, setting local-only sync policy, or creating first project context files.
data-ai
Use when drafting PRDs, researching, planning, refining, revising, or creating .agents/specs/<flow_id>/spec.md worksheets for Flow.
testing
Use when implementing Flow tasks from Beads or spec.md, claiming ready work, applying TDD, recording task notes, committing, and syncing after task state changes.