agentleFS
hadicancatak-coderhadicancatak-coder/devils-advocate/skills/devil-advocate/SKILL.md

devil-advocate

Skill1 starsChanged 2 months agoMITView on GitHub

Use when about to commit to a decision, plan, conclusion, or recommendation and it needs to be attacked before anyone acts on it — especially when everyone already agrees, money or time is already sunk, a deadline is pushing toward yes, or the user says "poke holes", "stress test", "red team", "what am I missing".

2 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 2

    1. SpencerGoss/agent-engineering★ 0same name
    2. thedevappsecguy/sec-skills★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Don't use for: factual questions, obvious execution tasks, code review (use a reviewer), or choosing between many open options (that is an …

    line 18
  2. Distinctive:

    If more than one model is available, run the Advocate on a different model than the one you are using.

    line 41

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Devil's Advocate

One fresh-context adversary whose only job is to prove the decision wrong. You judge. No consensus, no balance, no "on the other hand". A forced verdict at the end.

Core principle: an argument you have been helping build cannot be attacked from inside the same context. The Advocate must start cold.

When to use

  • Any decision that is expensive to reverse: rewrites, budget moves, hires, launches, migrations, "I'm presenting this tomorrow"
  • A conclusion drawn from data that fits a story everyone already believes
  • The user asks for pushback, holes, a stress test, or a red team

Don't use for: factual questions, obvious execution tasks, code review (use a reviewer), or choosing between many open options (that is an LLM Council problem, see the last section).

Workflow

1. Write the claim (you, in context)

Reduce the decision to this block. If you cannot fill every line, the decision is not ready to be attacked.

CLAIM: <one sentence, falsifiable: "X will cause Y">
EVIDENCE FOR: <the 2–4 facts the claim actually rests on>
COST IF WRONG: <what is lost — money, months, credibility>
LOAD-BEARING ASSUMPTION: <the one thing that, if false, kills the claim>

Write the CLAIM exactly as big as the evidence supports. The Advocate attacks the sentence as written: "will remove most checkout errors" gets killed where "will remove the 2% of errors that are 503s" would not. Bundled actions ("rotate the key and scrub history") get attacked at their weakest part.

2. Dispatch one Advocate (fresh subagent, no conversation history)

Give it ONLY the claim block plus any raw data or file paths it needs. The prompt tells the Advocate that you chose the load-bearing assumption and that it may attack a different one; do not remove that line. Never the transcript, never your reasoning, never your preferred answer.

  • Plugin installed: dispatch subagent type devil-advocate:advocate with the claim block as the whole prompt.
  • Skill only: dispatch a general-purpose subagent with the prompt in advocate-prompt.md verbatim.
  • If more than one model is available, run the Advocate on a different model than the one you are using. Different models have different blind spots.

The Advocate returns, in this order:

  1. KILL SHOT — the single strongest reason the decision is wrong, as an assertion with a mechanism, not a question
  2. RANKED ATTACKS (exactly 3) — each with: the attack, what must be true for it to land, a check that takes under one hour
  3. CHEAPER ALTERNATIVE — what gets 80% of the benefit at 20% of the cost
  4. P(MISTAKE) — a number, 0–100%, with one sentence of reasoning

3. Run the checks (you, in context)

Show the Advocate's output to the user verbatim. Then, before labelling anything, run every check that is a command, query, grep, or file read you can execute from here. Paste the result under the attack it belongs to. A check you could have run but didn't is not UNRESOLVED, it is undone work.

4. Answer every attack

Label each item with exactly one:

LabelMeaningRequires
CONCEDEThe attack holdsSay what changes because of it
REBUTThe attack failsEvidence, not opinion. A number, a file, a test result, a source, or the check you just ran
UNRESOLVEDCan't tell from hereName the check and who runs it

A REBUT without evidence is an UNRESOLVED. Write it as one.

5. Verdict

Exactly one of:

  • PROCEED — every attack is CONCEDE-with-adjustment or evidenced REBUT
  • PROCEED IF — list the UNRESOLVED checks; the decision waits on them
  • STOP — the kill shot stands, or a CONCEDE changes the cost/benefit

An UNRESOLVED kill shot can never produce PROCEED.

6. One rebuttal round (optional, max one)

If you REBUT the kill shot, dispatch a fresh Advocate with the original kill shot, your rebuttal, and its evidence, using the rebuttal prompt in advocate-prompt.md (or the same advocate agent, which recognises the rebuttal format). It replies ACCEPT or ESCALATE with one paragraph. Then verdict. Never a third round.

The output the user sees

## Claim
<block from step 1>

## Advocate
<verbatim, unsoftened>

## Checks run
Attack 1 check: <command> → <result>
...

## Answers
KILL SHOT — REBUT: <evidence>
Attack 1 — CONCEDE: <what changes>
Attack 2 — UNRESOLVED: <check, owner>
...

## Verdict
PROCEED IF: <checks>

Reading P(MISTAKE)

Calibration on 8 scenarios × 2 runs (see evals/results.md in the repo): decisions built on an unchecked causal story scored 65–88%; sound decisions with a precisely worded claim scored 20–35%; sound decisions with an overclaimed or bundled CLAIM sentence scored 55–60%. Above 60 means the claim as written is probably wrong. Between 40 and 60 usually means the action is fine and the claim is too big. The kill shot theme was the same across both runs in all 8 scenarios.

Common mistakes

MistakeFix
Passing the conversation to the AdvocateIt inherits your anchoring. Claim block only
Summarising the Advocate "for tone"Verbatim. The harshness is the product
Labelling before running the checks you could runStep 3 comes before step 4
REBUT with "I think" or "in my experience"That is UNRESOLVED
Five attacks of equal weightThe Advocate returns exactly three. If it didn't, send it back
Ending with "but overall it's promising"The verdict is one word. Nothing after it
Skipping the claim block because the decision is "obvious"Obvious decisions with sunk cost are the ones this exists for
CLAIM bigger than the evidenceThe Advocate kills the overclaim, not the decision. Shrink the sentence

Relation to LLM Council

Karpathy's council asks several models the same question, has them rank each other anonymously, and lets a chairman synthesise. That optimises for a well-rounded answer. This optimises for finding the one reason you are wrong. One adversary, no peer review, no synthesis, a verdict you have to defend line by line.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.