adversarial-reviewer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited adversarial-reviewer (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 normal review looks for obvious problems. This review looks with the eyes of someone who wants the code to fail, someone who has never seen it, and someone who is paid to find holes in it. Each persona must report at least one finding. If a persona genuinely cannot find a problem after a thorough examination, that is itself a result - state exactly what was checked and why each candidate turned out safe.
Read the code in full without judging it. Understand what it is trying to do and what invariants it relies on. Only then switch to the adversarial personas, one at a time.
If a diff or specific files are in scope, focus there. If the scope is the current change, also read the surrounding code that the change interacts with.
The Saboteur wants the code to fail at runtime. They probe for:
== hide a type mismatch? Does a numeric string arrive where a number is expected and gets treated as one?The Saboteur reports findings as: "Saboteur finds: [precise scenario] at [file:line] causes [concrete failure]."
The New Hire is reading this code for the first time, on their second week. They flag:
The New Hire reports findings as: "New Hire finds: [what was confusing or missing] at [file:line] because [what they would have assumed instead]."
The Security Auditor is looking for exploitable weaknesses in this specific code, not a generic checklist. They focus on:
== instead of a constant-time function? Is a random token generated with Math.random()?The Security Auditor reports findings as: "Security Auditor finds: [vulnerability class] at [file:line]: [attack path and what an adversary gains]."
After all three personas have reported, give a consolidated summary:
Saboteur: [N findings]
New Hire: [N findings]
Security Auditor: [N findings]
Critical items (address before merge):
- [file:line] - [the finding] - [the fix]
Should-fix items:
- ...
Low / consider items:
- ...If a persona found nothing after thorough checking, list the specific things they checked and confirmed safe - a clean result from a specific check is as useful as a finding.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.