Internal sub-skill. Do not auto-activate. Use only when explicitly invoked by name by another skill or agent.
Scanned 9/4/2026
Install to Claude Code
npx -y skills add shopwareLabs/ai-coding-tools --skill phpunit-test-reconciling --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Phpunit Test Reconciling?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/shopwarelabs-phpunit-test-reconciling)More formats (shields.io, HTML) on the badges page.
---
name: phpunit-test-reconciling
version: 5.1.0
description: Internal sub-skill. Do not auto-activate. Use only when explicitly invoked by name by another skill or agent.
user-invocable: false
allowed-tools: Read, Glob, Grep, mcp__plugin_test-writing_test-rules__get_rules
---
# PHPUnit Test Review Reconciling
Re-evaluate review findings against incoming critique and emit a binding revised stance, for any test type (unit, integration, or migration). Run in one of two modes: `peer` (reconcile against co-reviewers' findings) or `adversary` (reconcile against adversary challenges). Evidence — the rule's detection algorithm applied to the code — decides every disposition.
```dot
digraph reconcile {
"Reconcile request" [shape=doublecircle];
"mode?" [shape=diamond];
"peer: load own + peer findings on shared files" [shape=box];
"adversary: load own stance + adversary challenges" [shape=box];
"Per contested finding: load detection algorithm (inline RULES block by ID if rules set, else get_rules), apply to code" [shape=box];
"Evidence decides disposition — never social pressure" [shape=box];
"Emit binding revised stance" [shape=doublecircle];
"Reconcile request" -> "mode?";
"mode?" -> "peer: load own + peer findings on shared files" [label="peer"];
"mode?" -> "adversary: load own stance + adversary challenges" [label="adversary"];
"peer: load own + peer findings on shared files" -> "Per contested finding: load detection algorithm (inline RULES block by ID if rules set, else get_rules), apply to code";
"adversary: load own stance + adversary challenges" -> "Per contested finding: load detection algorithm (inline RULES block by ID if rules set, else get_rules), apply to code";
"Per contested finding: load detection algorithm (inline RULES block by ID if rules set, else get_rules), apply to code" -> "Evidence decides disposition — never social pressure";
"Evidence decides disposition — never social pressure" -> "Emit binding revised stance";
}
```
## Input
The spawn prompt provides:
- `mode` — `peer` or `adversary`
- `scope` per file — list of method names, or `full class`. Reconcile only findings within the scoped methods; discard incoming items targeting out-of-scope code.
- `{rules}` (optional) — the pre-rendered rule catalog as text, provided in your prompt. When set, find contested rules by ID in that text; it holds every rule, so **NEVER** read, open, search, or locate a rule file by any means — no `Read`/`Grep`/`Glob`, no `get_rules` — not even to resolve a missing ID. Reading the cited code is unaffected. When omitted, rules load via `get_rules`.
Mode `peer` additionally provides:
- `own_findings` — your findings from the prior wave, per file
- `peer_findings` — co-reviewers' findings on the same files, per file
Mode `adversary` additionally provides:
- `own_stance` — your current binding stance, per file
- `adversary_challenges` — challenges to consensus, resurrections, adversary-introduced findings, and endorsements, per file
## Core Procedure
Load references/reconciliation-rules.md. Apply it to every disposition in both modes.
For each finding under contention:
1. Load the detection algorithm: when `{rules}` is set, find the rule by ID in that inline text; otherwise call `mcp__plugin_test-writing_test-rules__get_rules(ids={rule_id})`.
2. Apply the detection algorithm against the actual code at the cited location
3. Decide the disposition on evidence alone (see mode sections below)
## Mode: peer
Compare own findings against peer findings per file:
- **Shared** (you and a peer both reported) — endorse.
- **Peer-only** (peer reported, you did not) — challenge with a detection-algorithm citation, or concede. Do not add it to your own findings (no new findings in peer mode).
- **Own-only** (you reported, peer did not) — maintain with code evidence, or withdraw if a peer's challenge holds.
Output binding stance per file: `findings` you stand by, and `withdrawn` with reasons. See references/output-format.md.
## Mode: adversary
Evaluate every adversary item per file:
- **Challenge to consensus** — defend with counter-evidence, or withdraw if the adversary's evidence holds.
- **Resurrection** of a finding withdrawn earlier — re-adopt if the adversary's evidence beats your original concession reason; otherwise maintain withdrawal with a strengthened reason.
- **Adversary-introduced finding** — challenge or concede by the same standard as a peer finding. Adopting it is allowed in adversary mode.
- **Endorsement** — no action.
Output binding stance per file with an `adversary_impact` tag on every entry: `findings` (defended | unchanged), `re_adopted` (resurrected), `withdrawn` (overturned), `adopted_new` (introduced). See references/output-format.md.
## Troubleshooting
### MCP Tool Unavailability
If `mcp__plugin_test-writing_test-rules__get_rules` is unavailable, detection algorithms cannot be verified.
- Mode `peer`: concede peer findings you cannot verify; note the limitation in the stance.
- Mode `adversary`: maintain your current positions; note the limitation in the stance.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!