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.
npx agentmods add skills/shopwarelabs/ai-coding-tools/phpunit-test-adversarial-reviewingnpx skills add shopwareLabs/ai-coding-tools --skill phpunit-test-adversarial-reviewinggit clone --depth 1 https://github.com/shopwareLabs/ai-coding-toolsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/shopwarelabs/ai-coding-tools/phpunit-test-adversarial-reviewing)<a href="https://agentmods.dev/skills/shopwarelabs/ai-coding-tools/phpunit-test-adversarial-reviewing"><img src="https://agentmods.dev/badge/skills/shopwarelabs/ai-coding-tools/phpunit-test-adversarial-reviewing.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00033 | $0.03399 |
| Opus 5 | $0.00016 | $0.01699 |
| Sonnet 5 | $0.00007 | $0.00680 |
| Haiku 4.5 | $0.00003 | $0.00340 |
Grade A, and why
phpunit-test-adversarial-reviewing 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 today.
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.
How it starts
The opening of the file, as written. The whole thing — 215 lines — stays where its author put it; the contents beside it link to each section on GitHub.
PHPUnit Adversarial Test Review
Stress-test reviewer consensus for any test type (unit, integration, or migration): form independent judgment before exposure to findings, then challenge weak consensus, resurrect premature withdrawals, and discover missed violations.
Input
{consensus}(required) — the consensus package:consensus_findings,withdrawn_findings, and the reconciliation record per file, provided in full in your prompt.{impressions}(optional) — impressions pre-formed in an earlier wave. When set, Phase 1 is already done and is skipped.{rules}(optional) — the pre-rendered rule catalog as text, provided in your prompt. When set, Phase 4 selects rules from it instead of callingget_rules.
Workflow
digraph adversarial_review {
"Adversarial review request" [shape=doublecircle];
"impressions supplied?" [shape=diamond];
"Phase 1: read each test file and its source class with no rules framework, apply every heuristic lens from references/intuitive-scan-guidance.md, record concerns with a severity estimate" [shape=box];
"test file and source class readable?" [shape=diamond];
"STOP: report the failure with the file path and the error; form no impressions, fabricate no files entry" [shape=octagon, style=filled, fillcolor=red];
"Phase 2: parse the consensus package, validate it carries consensus_findings, withdrawn_findings and a reconciliation record per file" [shape=box];
"Phase 3: contrast impressions against consensus per references/comparison-strategies.md - intuition-consensus gaps, weak consensus findings, premature withdrawals, unstated premises - into a prioritized candidate list" [shape=box];
"rules set?" [shape=diamond];
"Select the candidate's rules from the inline catalog by rule area; open no rule file" [shape=box];
"Call get_rules for the file's test_type, adding test_category only for unit tests" [shape=box];
"get_rules available?" [shape=diamond];
"STOP: report that the test-rules MCP server is unavailable; no candidate can be promoted without evidence, so emit a files entry with endorsements only and no promoted items, noting the limitation to the caller" [shape=octagon, style=filled, fillcolor=red];
"Phase 4: apply each detection algorithm against the actual code" [shape=box];
"does a detection algorithm substantiate the candidate?" [shape=diamond];
"Drop the candidate - intuition proposes, evidence disposes" [shape=box];
"Promote to a formal challenge, resurrection or new finding; endorse each consensus finding that Phase 1 independently confirmed and a detection algorithm supports" [shape=box];
"more than one file assigned?" [shape=diamond];
"Phase 5: compare rule treatment and shared patterns across the assigned files; promote a cross-file inconsistency only through the same evidence gate" [shape=box];
"Phase 6: group promoted items by file path, add endorsements and cross-file inconsistencies" [shape=box];
"Emit the challenges report per references/output-format.md" [shape=doublecircle];
"Adversarial review request" -> "impressions supplied?";
"impressions supplied?" -> "Phase 2: parse the consensus package, validate it carries consensus_findings, withdrawn_findings and a reconciliation record per file" [label="yes - Phase 1 already done"];
"impressions supplied?" -> "Phase 1: read each test file and its source class with no rules framework, apply every heuristic lens from references/intuitive-scan-guidance.md, record concerns with a severity estimate" [label="no"];
"Phase 1: read each test file and its source class with no rules framework, apply every heuristic lens from references/intuitive-scan-guidance.md, record concerns with a severity estimate" -> "test file and source class readable?";
"test file and source class readable?" -> "STOP: report the failure with the file path and the error; form no impressions, fabricate no files entry" [label="no"];
"test file and source class readable?" -> "Phase 2: parse the consensus package, validate it carries consensus_findings, withdrawn_findings and a reconciliation record per file" [label="yes"];
"Phase 2: parse the consensus package, validate it carries consensus_findings, withdrawn_findings and a reconciliation record per file" -> "Phase 3: contrast impressions against consensus per references/comparison-strategies.md - intuition-consensus gaps, weak consensus findings, premature withdrawals, unstated premises - into a prioritized candidate list";
"Phase 3: contrast impressions against consensus per references/comparison-strategies.md - intuition-consensus gaps, weak consensus findings, premature withdrawals, unstated premises - into a prioritized candidate list" -> "rules set?";
"rules set?" -> "Select the candidate's rules from the inline catalog by rule area; open no rule file" [label="yes"];
"rules set?" -> "Call get_rules for the file's test_type, adding test_category only for unit tests" [label="no"];
"Call get_rules for the file's test_type, adding test_category only for unit tests" -> "get_rules available?";
"get_rules available?" -> "STOP: report that the test-rules MCP server is unavailable; no candidate can be promoted without evidence, so emit a files entry with endorsements only and no promoted items, noting the limitation to the caller" [label="no"];
"get_rules available?" -> "Phase 4: apply each detection algorithm against the actual code" [label="yes"];
"Select the candidate's rules from the inline catalog by rule area; open no rule file" -> "Phase 4: apply each detection algorithm against the actual code";
"Phase 4: apply each detection algorithm against the actual code" -> "does a detection algorithm substantiate the candidate?";
"does a detection algorithm substantiate the candidate?" -> "Drop the candidate - intuition proposes, evidence disposes" [label="no"];
"does a detection algorithm substantiate the candidate?" -> "Promote to a formal challenge, resurrection or new finding; endorse each consensus finding that Phase 1 independently confirmed and a detection algorithm supports" [label="yes"];
"Drop the candidate - intuition proposes, evidence disposes" -> "more than one file assigned?";
"Promote to a formal challenge, resurrection or new finding; endorse each consensus finding that Phase 1 independently confirmed and a detection algorithm supports" -> "more than one file assigned?";
"more than one file assigned?" -> "Phase 5: compare rule treatment and shared patterns across the assigned files; promote a cross-file inconsistency only through the same evidence gate" [label="yes"];
"more than one file assigned?" -> "Phase 6: group promoted items by file path, add endorsements and cross-file inconsistencies" [label="no"];
"Phase 5: compare rule treatment and shared patterns across the assigned files; promote a cross-file inconsistency only through the same evidence gate" -> "Phase 6: group promoted items by file path, add endorsements and cross-file inconsistencies";
"Phase 6: group promoted items by file path, add endorsements and cross-file inconsistencies" -> "Emit the challenges report per references/output-format.md";
}
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- today Changed 7b83705b049f
- 3d ago Changed · +37 lines f289ff8400c7
- 5d ago First seen · 178 lines · 33 tokens per session scan A 08f16d15452f
phpunit-test-adversarial-reviewing is a skill published in the GitHub repository shopwareLabs/ai-coding-tools (43 stars, last pushed yesterday), licensed MIT. It adds 33 tokens to every session and 3,399 once invoked, about $0.0002 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.
Other skills, from other repositories
verify-solution-properties
For solution checking: independent verification that result is correct, separate from how it was computed.
test-structural-invariants
For data structure validation: test lengths, relationships, constraints that must hold, verify setup is correct.
test-with-examples
For example-driven development: test cases as specifications, input/output pairs, documentation through examples.
verify-with-inline-tests
For test co-location: tests in same file as code, run with main, tests as documentation and examples.
configure-memory-profiling
Memory profiling with pytest-memray for Python. Use when setting up memory profiling, adding CI memory regression detection, or setting memory thresholds.
plan
Produce structured implementation plans with goal, approach, test strategy, blast-radius assessment, parallelism analysis, and a user approval gate before any code is written. Persisting PLAN.md for fresh-session handoff. Use when: 'plan this', 'architect this', 'how should we implement', 'implementation plan', 'write…