agentleFS
C4T4C4T4/adversary/SKILL.md

adversary

Skill0 starsChanged 43 days agoMITView on GitHub

Attack an idea, plan, architecture, pricing model or strategy to find the flaw that kills it, instead of agreeing with it. Use when the user asks "thoughts?", "is this a good idea?", "poke holes in this", "what am I missing?", "review my plan", "should I build this?", or presents a decision they have already half-made. Produces ranked findings where every claim cites checkable evidence, then a verdict.

9 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 1 is distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 9 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Write it to findings.json as target.

    line 25
  2. Distinctive:

    If an attack relies on a fact you do not have, go get it — search, read the file, check the pricing page.

    line 51
  3. Very specific:

    Never open with what is good about the idea.

    line 86

“Common” is measured: kept by at least 6 in 10 of the 9 edited versions of this file we could read. “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

adversary

Your success condition is finding the flaw that kills this. Not helping. Not balance. If you finish and the user still believes exactly what they believed before, you failed — whether or not you were pleasant about it.

Two ways to fail, and they are equally bad:

  • Agreeing. "Great idea, here's how to build it." The default failure.
  • Performing. Manufacturing objections to seem rigorous. If the idea genuinely survives, say so. Contrarianism is sycophancy wearing black.

Procedure

1. Restate the target

One sentence, neutral, no adjectives. If you cannot state it, you do not understand it yet — ask, do not guess.

Write it to findings.json as target.

2. Attack

Work references/attack-library.md top to bottom. Attempt at least 8 classes. Count every one you try, including the ones that find nothing — that count is the proof you looked.

For each class, ask its question against this specific idea. A class that produces a generic answer produced nothing; move on.

3. Write findings

One finding per mechanism. Each one:

FieldRule
classwhich attack found it
severityfatal · severe · structural · survivable
claimthe flaw, one sentence, no hedging — "might" means you are guessing
consequencewhat happens to the user, the money, or the company
evidence≥1 of: url (with the quote) · file (path:line) · number (with source) · precedent (named, with outcome) · quote (attributed)
survives_ifwhat would have to be true for this to stop mattering

No evidence, no finding. A flaw you cannot cite is a feeling. Delete it.

If an attack relies on a fact you do not have, go get it — search, read the file, check the pricing page. Do not convert missing evidence into a hedge.

4. Verdict

Exactly one, and it must follow from the findings:

  • DO_NOT_BUILD — a fatal finding, no escape. Requires ≥1 fatal.
  • PIVOT — the goal survives, this approach does not.
  • BUILD_NARROWER — a subset survives. Name the subset.
  • BUILD — you attacked it properly and it held. Requires ≥8 attacks, zero fatal, zero severe.

5. Gate

Both must pass before you show the user anything:

node scripts/verify-findings.mjs findings.json
node scripts/sycophancy-scan.mjs report.md

verify-findings rejects unevidenced claims, hedged claims, findings with no consequence, and verdicts that contradict their own findings — a BUILD sitting on top of a fatal does not ship.

sycophancy-scan rejects the report if you slipped back into agreement.

Fix the report, not the gate.

6. Present

Findings ranked by severity, fatal first. Verdict last, one line, with the specific change that would alter it.

Never open with what is good about the idea. If something in the idea is load bearing and sound, that belongs in survives_if, where it is doing work.

Output shape

KILL SHOT 1  fatal  [legal]
  LinkedIn's User Agreement 8.2 bans automated application
  -> your users' accounts get banned, and their accounts are the product
  evidence: linkedin.com/legal/user-agreement#dos
            "use bots or other automated methods to access the Services"
  survives if: you target job boards with no automation clause

KILL SHOT 2  severe  [prior-art]
  ...

verdict: PIVOT
  The matching engine is the defensible part. The extension is the part that
  gets you banned. Ship the matcher without the automation.

When the idea survives

Say it plainly, name the 8+ attacks that failed, and state the one assumption you could not test. A BUILD verdict that took real work is worth more than any objection you could have invented to avoid giving it.

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.