adversarial-review
Skill1 starsChanged 4 months agoApache-2.0View on GitHub
Run a design-challenging Claude Code review of local git changes in this repository. Args: --wait, --background, --base <ref>, --scope <auto|working-tree|branch>, --model <model>, --effort <auto|low|medium|high|xhigh|max>, [focus text]. Defaults to opus with CLI-selected effort. Use only when the user wants stronger scrutiny than a normal review, such as explicit tradeoff challenge, risky-change review, or custom focus text.
104 other projects use a version of this.
Adopted by
Most recently taken up by
- revisit-studies/studytheir own version, first seen Nov 9, 2026
- ozt88/skillstheir own version, first seen Nov 8, 2026
- selamy-labs/agent-skillstheir own version, first seen Nov 8, 2026
- kellen-miller/skillstheir own version, first seen Nov 8, 2026
- leinardi/adversarial-review-looptheir own version, first seen Nov 8, 2026
- artberri/skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use rethink, root-cause-analysis and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
fabioespindulaSkillrethink
Reframe a plan, idea, or decision before the user commits to it. Use when the user asks to rethink, step back, pressure-test, gut-check, decide, right-size, simplify, think bigger about, or evaluate a concrete plan or decision in product, strategy, technical architecture, career, life, company direction, or personal priorities. This skill improves decision quality before action: clarify the real question, challenge assumptions, compare alternatives, calibrate ambition, classify the operating mode, surface risks, and recommend a next move. Do not use for broad future exploration without a concrete decision; that belongs to a think-big or research-style skill.
Also in 3 projects that use this
MicrosoftSkillroot-cause-analysis
Use when a Regional Retail Manager asks I'm seeing unusual inventory movement at our Northwest stores. Can you help me understand what's happening?
Also in 3 projects that use this
anasahmed07Skillbetter-auth-best-practices
Skill for integrating Better Auth - the comprehensive TypeScript authentication framework.
Also in 4 projects that use this
DockerSkillfix-issue
Fix a single GitHub issue end-to-end: triage, research, write the fix, review, and create a PR. Use when asked to fix an issue: "fix issue 1234", "resolve #500", "create a PR for issue 200".
Also in 3 projects that use this
MicrosoftSkillpull-request
Write concise, focused pull request descriptions for Wassette — at most three sentences on the what and why, with an explicit note on any breaking public-API change and how users adapt. Use when opening or editing a Wassette pull request.
Also in 3 projects that use this
juriwiensSkillcodex-review
Run code review via Codex CLI
Also in 3 projects that use this
- +2 more from microsoft
Other versions104 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 104
- PrefectHQ/fastmcp★ 28ksame name
- jlowin/fastmcp★ 28ksame name
- mengxi-ream/read-frog★ 10ksame name
- epicenter-md/epicenter★ 4.8ksame name
- EpicenterHQ/epicenter★ 4.8ksame name
- basicmachines-co/basic-memory★ 4.5ksame name
- DanMcInerney/architect-loop★ 626same name
- deadlock-mod-manager/deadlock-mod-manager★ 584same name
- boraoztunc/skills★ 454same name
- syahiidkamil/Software-Engineer-AI-Agent-Atlas★ 404same name
94 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
Show its rules and text
We split this skill into the rules it gives an agent
45 rules. 0 are common, 20 are distinctive, and 25 are very specific to this project.
0
Common
Most of the 93 edited versions we read keep these.
20
Distinctive
This author's own choices. Worth a look.
25
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill when the user wants Claude Code to challenge the implementation approach, design choices, assumptions, or tradeoffs in this …
- Very specific: line 10
Do not treat $cc:adversarial-review as the default review path.
- Very specific: line 12
If the user wants Claude Code to go beyond review and perform investigation, validation edits, or implementation work, route to $cc:rescue …
- Very specific: line 13
If the user asks for a local review plus a separate Claude background review and then wants the main Codex thread to aggregate the findings …
- Distinctive: line 26
Before launching the review, stay in read-only inspection mode: inspect git status and diff stats only, then ask at most one user question …
- Very specific: line 28
Use the same review target selection as $cc:review.
- Very specific: line 31
If the raw arguments include --wait, do not ask.
- Very specific: line 32
If the raw arguments include --background, do not ask.
- Distinctive: line 37
Treat untracked files or directories as reviewable work for auto or working-tree review even when git diff --shortstat is empty.
- Distinctive: line 38
Only conclude there is nothing to review when the relevant scope is actually empty.
- Distinctive: line 41
When in doubt, run the review instead of declaring that there is nothing to review.
- Very specific: line 48
Treat --wait and --background as Codex-side execution controls only.
- Distinctive: line 49
Do not weaken the adversarial framing or rewrite the user's focus text.
- Very specific: line 61
Do not fall back to raw claude, claude-code, claude review, bash -lc ...claude..., or any other direct Claude CLI syntax when the companion …
- Distinctive: line 62
If the resolved companion command fails, surface that failure.
- Distinctive: line 64
Do not fix anything mentioned in the review output.
- Very specific: line 68
Do not satisfy background adversarial review by using a generic claude_review_runner-style helper role, raw Claude CLI, or any other review …
- Very specific: line 69
Never satisfy background adversarial review by running the companion command itself with shell backgrounding such as &, nohup, detached …
- Very specific: line 71
Before spawning the built-in child, capture the review job id plus routing context in one call: node …
- Very specific: line 73
If that helper returns a non-empty jobId, pass it into the companion command as an internal --job-id <reserved-job-id> routing flag.
- Very specific: line 74
If that helper returns a non-empty ownerSessionId, include --owner-session-id <owner-session-id> in the companion command.
- Very specific: line 75
If it returns an empty ownerSessionId, omit --owner-session-id entirely.
- Very specific: line 76
If that helper returns a non-empty parentThreadId, pass it into the child prompt as the parent thread id for one-shot completion …
- Very specific: line 77
If it returns an empty parentThreadId, omit the notification path instead of emitting a blank thread-id placeholder.
- Distinctive: line 83
Prefer a self-contained child message over inheriting parent history.
- Very specific: line 84
Only consider fork_context: true as a last resort for a short follow-up where essential context truly cannot be summarized.
- Very specific: line 85
Before spawning the built-in child, emit one short commentary update that records the attempted subagent model selection.
- Very specific: line 86
If spawn_agent rejects gpt-5.4-mini with an explicit model-unavailable error such as Unknown model, model unavailable, or equivalent "not …
- Very specific: line 87
If that fallback happens, emit one short commentary update that clearly says gpt-5.4-mini was unavailable and the parent is retrying with …
- Distinctive: line 88
Do not use that fallback for arbitrary failures.
- Distinctive: line 90
run exactly one shell command
- Distinctive: line 93
run that command as one blocking foreground shell-tool call, not as a background terminal/session
- Distinctive: line 94
do not request a shell session id, poll a shell session later, or return before the companion command exits
- Very specific: line 95
if the available shell tool is exec_command, call it once in non-interactive mode and wait for command exit in that same call
- Very specific: line 98
never leave an empty routing placeholder such as --owner-session-id --job-id
- Distinctive: line 101
not inspect the repo or perform the review itself
- Very specific: line 102
if a parent thread id is available, allow one extra send_input call after a successful shell result and before finishing
- Distinctive: line 106
if the parent provided a non-empty parent thread id, do not silently drop the completion notification path from the child prompt
- Very specific: line 107
if a reserved review job id is available, use this exact notification message: Background Claude Code adversarial review finished.
- Distinctive: line 112
use these steering messages instead of embedding the raw review result in the notification
- Distinctive: line 113
do not embed the raw Claude result inside the notification message
- Distinctive: line 114
do not include any other prose in that notification message
- Distinctive: line 115
use that same steering message as the child's own final assistant message instead of echoing the raw review result
- Distinctive: line 116
Do not wait for completion in this turn.
- Very specific: line 117
After launching, tell the user: Claude Code adversarial review started in the background.
“Common” is measured: kept by at least 6 in 10 of the 93 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.
Files
Claude Code Adversarial Review
Use this skill when the user wants Claude Code to challenge the implementation approach, design choices, assumptions, or tradeoffs in this repository.
Do not treat $cc:adversarial-review as the default review path. Use it only when the user explicitly wants stronger scrutiny than a normal code review.
Good triggers include requests to challenge the design, challenge tradeoffs, pressure-test a risky change, question whether a migration/config/template change really removed the risk, or honor custom focus text that asks for harsher review.
If the user wants Claude Code to go beyond review and perform investigation, validation edits, or implementation work, route to $cc:rescue instead.
If the user asks for a local review plus a separate Claude background review and then wants the main Codex thread to aggregate the findings and apply fixes, keep the delegated Claude portion on $cc:review unless the user explicitly asks for the adversarial angle.
Unlike $cc:review, this skill accepts custom focus text after the flags. The moment the user wants to steer Claude toward a specific angle or risk question, prefer $cc:adversarial-review.
Resolve <plugin-root> as two directories above this SKILL.md file. Always run the companion from that active plugin root:
node "<plugin-root>/scripts/claude-companion.mjs" adversarial-review ...
Supported arguments: --wait, --background, --base <ref>, --scope auto|working-tree|branch, --model <model>, --effort <auto|low|medium|high|xhigh|max>, plus optional focus text after the flags (defaults: model=opus, effort=auto delegated to Claude CLI)
Raw slash-command arguments:
$ARGUMENTS
Rules:
- This skill is review-only. Do not fix issues, apply patches, or suggest that you are about to make changes.
- Before launching the review, stay in read-only inspection mode: inspect git status and diff stats only, then ask at most one user question about whether to wait or run in background.
- Preserve the user's scope flags and custom focus text exactly.
- Use the same review target selection as
$cc:review.
Execution mode rules:
- If the raw arguments include
--wait, do not ask. Run in the foreground. - If the raw arguments include
--background, do not ask. Run in background through the built-in adversarial-review subagent path. - Otherwise, estimate the review size before asking:
- For working-tree review, start with
git status --short --untracked-files=all. - For working-tree review, also inspect both
git diff --shortstat --cachedandgit diff --shortstat. - For base-branch review, use
git diff --shortstat <base>...HEAD. - Treat untracked files or directories as reviewable work for auto or working-tree review even when
git diff --shortstatis empty. - Only conclude there is nothing to review when the relevant scope is actually empty.
- Recommend waiting only when the scoped review is clearly tiny, roughly 1-2 files total and no sign of a broader directory-sized change.
- In every other case, including unclear size, recommend background.
- When in doubt, run the review instead of declaring that there is nothing to review.
- For working-tree review, start with
- Then use
AskUserQuestionexactly once with two options, putting the recommended option first and suffixing its label with(Recommended):Wait for resultsRun in background
Argument handling:
- Preserve the user's arguments exactly.
- Treat
--waitand--backgroundas Codex-side execution controls only. Strip them before calling the companion command. - Do not weaken the adversarial framing or rewrite the user's focus text.
$cc:adversarial-reviewuses the same review target selection as$cc:review.- It supports working-tree review, branch review, and
--base <ref>. - It does not support
--scope stagedor--scope unstaged. - Unlike
$cc:review, it can still take extra focus text after the flags. - The companion review process itself always runs in the foreground. Background mode only changes how Codex launches that command.
- For the detailed execution contract, treat the internal runtime reference at
../../internal-skills/review-runtime/runtime.mdas supporting guidance only. It is an internal reference document, not a public skill to invoke.
Foreground flow:
- Run:
node "<plugin-root>/scripts/claude-companion.mjs" adversarial-review --view-state on-success <arguments with --wait/--background removed> - Foreground adversarial review belongs to the main Codex thread. Do not spawn a review subagent, do not invoke a generic review-runner role, and do not proxy this foreground path through any background worker abstraction.
- Do not fall back to raw
claude,claude-code,claude review,bash -lc ...claude..., or any other direct Claude CLI syntax when the companion path is available. The foreground syntax contract here is the resolved companion command above, not a hand-rolled Claude invocation. - If the resolved companion command fails, surface that failure. Do not silently retry foreground adversarial review through a different CLI shape, a generic review runner, or a custom shell wrapper.
- Present the companion stdout faithfully.
- Do not fix anything mentioned in the review output.
Background flow:
- For background adversarial review, use Codex's built-in
defaultsubagent instead of a detached background shell command. - Do not satisfy background adversarial review by using a generic
claude_review_runner-style helper role, raw Claude CLI, or any other review executor that bypasses the resolved companion command. - Never satisfy background adversarial review by running the companion command itself with shell backgrounding such as
&,nohup, detachedspawn, or any equivalent direct background process launch. - Background here means "spawn the forwarding child via
spawn_agentand do not wait in the parent turn." The companion adversarial-review command inside that child still runs once, in the foreground, inside the child thread. - Before spawning the built-in child, capture the review job id plus routing context in one call:
node "<plugin-root>/scripts/claude-companion.mjs" background-routing-context --kind review --json - If that helper returns a non-empty
jobId, pass it into the companion command as an internal--job-id <reserved-job-id>routing flag. - If that helper returns a non-empty
ownerSessionId, include--owner-session-id <owner-session-id>in the companion command. - If it returns an empty
ownerSessionId, omit--owner-session-identirely. Never leave an empty placeholder such as--owner-session-id --job-id. - If that helper returns a non-empty
parentThreadId, pass it into the child prompt as the parent thread id for one-shot completion notification. - If it returns an empty
parentThreadId, omit the notification path instead of emitting a blank thread-id placeholder. - Spawn exactly one transient forwarding child through
spawn_agentwith:agent_type: "default"fork_context: falsemodel: "gpt-5.4-mini"reasoning_effort: "medium"
- Prefer a self-contained child message over inheriting parent history. The built-in adversarial-review child should not rely on full parent thread replay for normal operation.
- Only consider
fork_context: trueas a last resort for a short follow-up where essential context truly cannot be summarized. Avoid it for large or long-lived threads because it can exhaust the child context window. - Before spawning the built-in child, emit one short commentary update that records the attempted subagent model selection. Default text should clearly say the parent is starting the built-in adversarial-review child with
gpt-5.4-miniatmediumeffort. - If
spawn_agentrejectsgpt-5.4-miniwith an explicit model-unavailable error such asUnknown model,model unavailable, or equivalent "not in list / unavailable" wording, retry once withmodel: "gpt-5.4"and the samereasoning_effort: "medium". - If that fallback happens, emit one short commentary update that clearly says
gpt-5.4-miniwas unavailable and the parent is retrying withgpt-5.4. - Do not use that fallback for arbitrary failures.
- The built-in child must be a pure forwarder. It should:
- run exactly one shell command
- execute:
node "<plugin-root>/scripts/claude-companion.mjs" adversarial-review --view-state defer <arguments with --wait/--background removed> - run that command as one blocking foreground shell-tool call, not as a background terminal/session
- do not request a shell session id, poll a shell session later, or return before the companion command exits
- if the available shell tool is
exec_command, call it once in non-interactive mode and wait for command exit in that same call - include
--owner-session-id <owner-session-id>only when the parent resolved a non-empty owner session id - include
--job-id <reserved-job-id>when the parent reserved one - never leave an empty routing placeholder such as
--owner-session-id --job-id - return only that command's stdout exactly, with no added commentary
- ignore stderr progress chatter such as
[cc] ...lines and preserve only the final stdout-equivalent result text - not inspect the repo or perform the review itself
- if a parent thread id is available, allow one extra
send_inputcall after a successful shell result and before finishing - the child prompt must mention the tool name
send_inputliterally; do not replace it with a vague instruction like "send a message to the parent" - that
send_inputcall must target the provided parent thread id, must happen at most once, and must not run on failure paths - that
send_inputcall should use the exact tool shapesend_input({ target: <parent-thread-id>, message: <steering-message> })with no extra prose payload - if the parent provided a non-empty parent thread id, do not silently drop the completion notification path from the child prompt
- if a reserved review job id is available, use this exact notification message:
Background Claude Code adversarial review finished. Open it with $cc:result <reserved-job-id>. - otherwise fall back to:
Background Claude Code adversarial review finished. Inspect it with $cc:status first, then use $cc:result for the finished job you want to open. - that
send_inputmessage should use one of those exact steering messages instead of inlining the raw review result - use these steering messages instead of embedding the raw review result in the notification
- do not embed the raw Claude result inside the notification message
- do not include any other prose in that notification message
- use that same steering message as the child's own final assistant message instead of echoing the raw review result
- Do not wait for completion in this turn.
- After launching, tell the user:
Claude Code adversarial review started in the background. Check the subagent session or $cc:status for progress, and once it's done, we will let you know to see the results. - Do not fix anything mentioned in the review output.
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
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.

