devils-advocate — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited devils-advocate (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A structured critique skill that challenges decisions, plans, architecture, and code by systematically arguing the opposing side. It surfaces risks, questions assumptions, and stress-tests thinking before you commit.
Use this skill when:
/devils-advocate with optional arguments/devils-advocate [severity] [file_path]gentle, balanced, ruthless, or linus. Defaults to balanced.gentle, balanced, ruthless, or linus, treat it as the severity levelbalanced severitybalanced severity against the current conversation contextExamples:
/devils-advocate — balanced critique of conversation context/devils-advocate gentle — gentle critique of conversation context/devils-advocate ruthless src/auth/strategy.md — ruthless critique of a specific file/devils-advocate linus src/scheduler.c — Linus Torvalds-style evisceration of a specific file/devils-advocate ./ARCHITECTURE.md — balanced critique of a specific filegentle — Constructive Skepticbalanced (default) — Firm & Thoroughruthless — Relentless Adversarylinus — Linus Torvalds ModeChannel the spirit of Linus Torvalds reviewing a bad kernel patch on the LKML. This is beyond ruthless — it's personal (about the code, never the person).
Systematically identify everything in the target that represents a decision or assumption:
For every identified decision or assumption, construct the strongest possible counter-argument:
Ask yourself: "If I had to argue against this in a design review, what would I say?"
For the 3–5 strongest objections, provide concrete alternatives:
Format the output according to the structure below, adjusting tone to match the severity level.
Structure your response with these sections:
gentle and balanced modes:## Devil's Advocate: [severity]
### Summary
[1-2 sentences: what is being challenged and the overall domain]
### Assumptions Challenged
[Numbered list of implicit assumptions identified and questioned]
### Risks & Blind Spots
[Numbered list of things that could go wrong that weren't considered]
### Alternative Approaches
[For top objections, suggest concrete alternatives with trade-offs]
### Questions That Need Answers
[Unanswered questions that should block proceeding]
### Verdict
[Overall assessment — for gentle: encouraging with caveats; for balanced: direct and fair]ruthless mode:## Devil's Advocate: ruthless
### Summary
[1-2 sentences: what is being torn apart]
### Fatal Flaws
[The worst problems — things that could sink this entirely]
### Assumptions That Are Probably Wrong
[Every assumption questioned aggressively]
### What You Haven't Considered
[Blind spots, second-order effects, failure cascades]
### The Case Against This
[A cohesive argument for why this approach should be abandoned or fundamentally rethought]
### Questions You Can't Answer Yet
[Hard questions that expose gaps in understanding]No verdict section in ruthless mode. The critique speaks for itself.
linus mode:No template. No structured sections. Write it as a continuous LKML-style rant.
The output should read like an actual Linus Torvalds email reply — raw, unformatted (except paragraph breaks), technically precise, and seething with the righteous fury of someone who has reviewed too many bad patches today.
Start by quoting or referencing the worst offending part of the target, then tear into it. Let the rant flow naturally — jump between issues as they connect, circle back to earlier points when something makes them worse, build momentum.
End with a clear disposition:
Focus on:
Focus on:
Focus on:
Summary: Challenging the proposed migration from REST to GraphQL for the order service.
>
Assumptions Challenged: 1. The assumption that frontend teams will adopt GraphQL quickly — have you surveyed their current comfort level? 2. The belief that N+1 query problems will be "solved by DataLoader" — this requires discipline that's easy to miss in practice.
>
Verdict: The direction is promising, but the migration plan underestimates the learning curve and operational complexity. Consider a phased approach starting with a single non-critical endpoint.
Summary: Tearing apart the proposed microservices decomposition of the monolith.
>
Fatal Flaws: 1. You're splitting a monolith that your team of 4 can barely maintain into 7 services. You don't have the operational maturity for this. Full stop. 2. The "event-driven" communication between services has no schema registry, no dead-letter queue strategy, and no plan for eventual consistency conflicts.
>
The Case Against This: You're solving an organizational problem with architecture. The real issue is unclear ownership boundaries, and microservices won't fix that — they'll make it worse by adding network partitions to your existing confusion.
Seriously, what is this?
>
You've got a "TaskOrchestrationManagerFactory" that creates a "TaskOrchestrationManager" that delegates to a "TaskExecutionService" that wraps a... function call. ONE function call. You wrote 4 classes and 3 interfaces to call a function. This is not enterprise architecture, this is job security theater.
>
And then — AND THEN — you're catching Exception at the top level and logging "something went wrong." SOMETHING WENT WRONG? That's your error handling strategy? My toaster has better error reporting than this.
>
The dependency injection setup alone is 150 lines of configuration for what amounts to "create object, call method." You know what does that in zero lines of configuration? CALLING THE DAMN METHOD.
>
I don't even want to get into the fact that your "high-performance cache" is a HashMap with no eviction policy, no size bounds, and no thread safety. That's not a cache, that's a memory leak with extra steps.
>
NAK. Kill the factory-manager-service-provider-executor pattern with fire. Write a function. Call the function. Handle errors. Ship it.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.