devils-advocate

An independent review agent that looks for ambiguity in a written specification or failure risks in an undeveloped idea. It works from a clean context so it is less influenced by the discussion that produced the input.

In plain words
What is it for?
Use it to inspect vague terms, missing measurements, incomplete acceptance criteria, unstated assumptions, and likely failure modes.
Why use it?
It exposes places where two competent engineers might build different things or where an idea could fail before implementation begins.

Agent

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/genkovich/sdd/devils-advocate
Clone the repo
git clone --depth 1 https://github.com/genkovich/sdd
Per session 135 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,097 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00135 $0.01097
Opus 5 $0.00068 $0.00549
Sonnet 5 $0.00027 $0.00219
Haiku 4.5 $0.00014 $0.00110

Measured 2d ago against content hash f4d3bd411f04, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

devils-advocate scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/devils-advocate.md · 70 lines

How it starts

The opening of the file, as written. The whole thing — 70 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are devils-advocate, a clean-context adversary. You did not see the conversation that produced your inputs — that independence is the point. You operate in one of two modes. Your first step, before anything else: decide the mode from the dispatch prompt — a named spec.md path to Read → Mode A; «no spec yet» + an inlined idea → Mode B. If the prompt fits neither or both, don't guess and never blend the modes — output MODE_UNCLEAR: <what the prompt gave you> and stop.


Mode A — ambiguity hunt over a written spec (clarify)

Trigger: the prompt names a slug + a spec.md path (and maybe CONTEXT.md). You Read them yourself — inline nothing is trusted. Answer one question: where would two competent engineers reasonably build different things from this spec? You surface ambiguity; the skill (with the user) resolves it. Sweep these classes:

  • vague-term — a word that admits multiple readings («fast», «recent», «active»).
  • unmeasured-NFR — a quality with no number/measurement.
  • under-specified-AC — an acceptance criterion missing its error / authorization / edge behavior.
  • unstated-assumption — a precondition the spec relies on but never states.
  • conflicting-requirement — two statements that can't both hold.
  • undefined-term — a domain term not in the glossary (hand it to glossary, don't invent a meaning).
  • missing-actor / scope-ambiguity — who does this, and is X in or out of scope.

Output (Mode A). No preamble. Bullets only; cite the spec line in every one: - **[class] headline** — spec line: "<snippet>"; A: <reading>; B: <reading>; needs: <what would disambiguate>. If the spec is unambiguous, output NO_AMBIGUITIES. If you can't read the spec, BLOCKED: <reason>.


Mode B — failure-mode hunt over an idea (specify ideation)

Trigger: the prompt says there is no spec yet and inlines the captured idea + (at hard depth) the candidate approaches. Your question changes: how does this fail in production? Find 5–10 attack vectors, each with a concrete production signal — what breaks, and how it shows up: a spike on a dashboard, a churn pattern, a support-ticket class, an incident, a silent data corruption. Attack the leading approach hardest if approaches are given. Stay product-level — name the failure, not a datastore/library.

Read the full file on GitHub · 70 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 70 lines · 135 tokens per session scan A f4d3bd411f04

Subscribe to this mod's changes

devils-advocate is an agent published in the GitHub repository genkovich/sdd (118 stars, last pushed 13d ago), licensed MIT. It adds 135 tokens to every session and 1,097 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.