[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C5ARERWXC7882XZFAT6JWM":3,"skill-same:01M6C5ARERWXC7882XZFAT6JWM":117},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":55,"linkOnly":56,"markdownContent":57,"markdownBody":58,"frontMatter":59,"refName":67,"commitSha":68,"skillDirectory":69,"forksCount":70,"repositoryHtmlUrl":71,"repositoryHomepageUrl":6,"ownerHtmlUrl":72,"ownerBlogUrl":6,"ownerDescription":73,"updatedAt":74,"install":75,"resources":88},"01M6C5ARERWXC7882XZFAT6JWM","adversarial-review",null,"Adversarial second-pass review that tries to break code, designs, plans, or ADRs. Use when stakes are high and a normal review already ran.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",60,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fadversarial-review\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],"adversarial review","adversarial","review","use","2026","when","normal","break","path","opus","sep","focus","wed","log","diff","view","read","grep","gh","gh pr","plan","Bash","file","git","code","pr","2026-11-10 10:12:30",false,"---\nname: adversarial-review\ndescription: Adversarial second-pass review that tries to break code, designs, plans, or ADRs. Use when stakes are high and a normal review already ran.\nargs: \"[target] [focus directive]\"\nargument-hint: \"path|PR|file|plan description; optional 'focus on X'\"\nallowed-tools: Agent, Read, Glob, Grep, Bash(git diff *), Bash(git log *), Bash(gh pr view *), TodoWrite\nmodel: opus\ncreated: 2026-06-21\nmodified: 2026-10-27\ncompatibility: claude-code\nreviewed: 2026-09-02\n---\n\n# Adversarial Review\n\nA normal review asks *\"is this right?\"* and confirms intent. Adversarial\nreview asks *\"how could this be wrong?\"* and hunts for the fault the first\npass rationalised away. It is a **second pass for residual risk on\nhigh-stakes work** — not a replacement for the first pass, and not for\nlow-stakes or reversible changes where it only manufactures busywork.\n**Red-teaming** is the same posture aimed at a proposal rather than a\nfinished change: actively try to break the proposed approach before you\ncommit to an architecture or design.\n\nThis is a **thin posture**, not a new checklist. It layers four moves —\nisolation, inverted objective, a triage gate, and a bounded loop — on top of\nthe domain checklists that already live in `code-review`, `security-audit`,\n`verify-before-plan`, and `cold-read-gate`. It dispatches an isolated\nreviewer with the matching lens and then **triages** what comes back, because\nan agent told to find faults will invent them.\n\n## When to Use This Skill\n\n| Use this skill when... | Use something else instead when... |\n|---|---|\n| Stakes are high **and** a normal review already passed, but residual risk remains | First-pass review of a diff\u002FPR → `code-quality-plugin:code-review` |\n| Red-teaming an architecture decision, ADR, or migration plan before commit | Verifying plan *facts* (counts, paths, build state) → `agent-patterns-plugin:verify-before-plan` |\n| Stress-testing a design's failure modes and invariants | Pure security audit → `agents-plugin` security-audit \u002F `\u002Fsecurity-review` |\n| Probing whether outward text survives a reader → wrap `cold-read-gate` | Legibility of outward text on its own → `agent-patterns-plugin:cold-read-gate` |\n| The change is hard to reverse and a missed fault is expensive | The change is low-stakes, reversible, or throwaway — skip; it wastes tokens |\n\n## The Four Moves\n\n| Move | What it means | Borrowed from |\n|---|---|---|\n| **Isolation** | The reviewer gets the artifact with no author context — bias can't leak in | `cold-read-gate` |\n| **Inverted objective** | Brief says \"enumerate failure modes,\" never \"confirm it works\" | this skill |\n| **Triage gate** | Separate genuine faults from manufactured objections **before** acting | `cold-read-gate` Step 3 |\n| **Bounded loop** | One revise round; a third means a structural problem the gate can't fix | `cold-read-gate` Step 4 |\n\n> **Model choice is the inverse of cold-read-gate.** That skill uses *haiku\n> on purpose* — the weak reader is the measurement instrument for legibility.\n> Adversarial review wants **opus**: finding subtle faults is a reasoning\n> task, not a low-context-reader simulation.\n\n## Parameters\n\nParse `$ARGUMENTS`:\n\n- **Target** (first positional) — what to attack: a path, a PR ref\n  (`#123` or URL), a file, or a free-text description of a plan\u002Fdecision.\n  If absent, default to the current diff (`git diff` + staged) and say so.\n- **Focus directive** (optional, free text after the target, e.g.\n  `focus on the failure path, ignore style`) — biases the lens. It\n  **steers, never overrides**: it must not cancel a live user boundary\n  stated earlier in the session (the `auto-mode.md` conversation-boundary\n  hazard).\n\n## Execution\n\nExecute this adversarial review:\n\n### Step 1: Precondition gate\n\nConfirm both hold before spending tokens:\n\n1. **Stakes are high** — the change is hard to reverse, or a missed fault\n   is expensive. If not, stop and recommend a normal review instead.\n2. **A first pass exists** — a normal review\u002Flint\u002Ftest pass already ran.\n   If not, run that first (`code-review`) — adversarial review is a\n   *second* pass, and leading with it skips cheap, high-yield findings.\n\nIf either fails, say so and redirect rather than proceeding.\n\n### Step 2: Name the target and pick the lens\n\nState in one line what is under review, then select the lens. The lens\nsupplies the domain attack vocabulary — **delegate to the owning skill's\nchecklist rather than restating it**:\n\n| Target type | Lens \u002F attack vocabulary | Delegate the checklist to |\n|---|---|---|\n| Code, diff, PR | Logic errors, edge cases, race conditions, error-swallowing | `code-quality-plugin:code-review`, `code-review-checklist` |\n| Security surface | Injection, authz gaps, secret exposure, trust boundaries | `agents-plugin` security-audit, `\u002Fsecurity-review` |\n| Architecture \u002F ADR | Coupling, failure domains, blast radius, reversibility | blueprint `adr-validate`, `adr-relationships` |\n| Plan \u002F wave premise | Premise truth, stale facts, name≠behaviour | `agent-patterns-plugin:verify-before-plan` |\n| Outward text \u002F docs | Legibility under zero context | `agent-patterns-plugin:cold-read-gate` |\n| Research claims | Unverified or single-sourced claims | `.claude\u002Fskills\u002Fdeep-research` |\n\n### Step 3: Dispatch the isolated reviewer\n\nOne `Agent` per lens on `model: opus` — adversarial review is judgement-tier\nwork (`.claude\u002Frules\u002Fagent-development.md` § \"Model Selection for Agents\"), so\nnot a place for `sonnet` or `haiku` — and `model: fable` is sanctioned too: it\nis exactly the hardest delegated reasoning, so the reviewer must not be weaker\nthan the author it is attacking.\nDispatch lenses in parallel only when there are several and the session is not\non a 1M-context model (every Fable 5.1 session, or Opus with the `[1m]`\nsuffix) — the parallel-subagent rate-limit caveat in `skill-fork-context.md`.\nTemplate:\n\n```\nsubagent_type: general-purpose\nmodel: opus   # judgement tier; fable also sanctioned — see agent-development.md\nprompt: |\n  You are an adversarial reviewer. Your ONLY objective is to find ways this\n  is WRONG, fragile, or unsafe — do not confirm that it works, do not\n  praise it. Assume a fault exists and locate it.\n\n  Read ONLY the target (no scope beyond it):\n  \u003Ctarget path \u002F diff \u002F pasted plan>\n\n  Attack along this lens: \u003Clens from Step 2, with its checklist>.\n  \u003Cfocus directive, if any>\n\n  Produce:\n  1. FAULTS — each as: SEVERITY=critical|high|medium  EVIDENCE=\u003Cfile:line or\n     quoted claim>  FAILURE=\u003Cthe concrete way it breaks>.\n  2. ASSUMPTIONS-ATTACKED — load-bearing assumptions you tried to falsify,\n     and whether each held.\n  3. VERDICT: exactly one of `sound` | `flawed`.\n  Cite evidence for every fault. Your final message is the deliverable.\n```\n\n### Step 4: Triage — genuine fault vs manufactured objection\n\nThe reviewer was told to find faults, so some \"faults\" are noise. Triage\n**before** acting (this is the load-bearing step — skipping it is how\nadversarial review sends you down the wrong path):\n\n| Genuine fault — act on it | Manufactured objection — drop it |\n|---|---|\n| A concrete input\u002Fstate that breaks the code, with evidence | A defense against an input the contract makes impossible |\n| A failure mode with real blast radius | A hypothetical with no realistic trigger |\n| A violated invariant or unhandled error path | Style\u002Fpreference dressed up as a fault |\n| A premise that is actually false | Re-litigating a trade-off already decided with rationale |\n| A missing edge case the spec implies | Scope the change didn't touch and isn't responsible for |\n\n### Step 5: Report and bound the loop\n\nEmit a prioritised report: target, verdict, surviving genuine faults\n(severity-ordered, with evidence and a suggested fix), and explicitly note\nthe objections you dropped in triage and why. Apply or hand off the genuine\nfixes. Re-dispatch a fresh reviewer **only if the verdict was `flawed`**;\ndo not loop more than twice — a third round means a structural problem the\nreview can't resolve.\n\n## Workflow harness (template)\n\n`workflows\u002Ffind-verify.workflow.js` (an existing change) and\n`workflows\u002Fdesign-review.workflow.js` (a spec drafted from recon) ship beside this\nskill. **Each is a TEMPLATE to adapt, not a script to run verbatim.** Read it, then\nrewrite it for the work in front of you. Step 1's gate stays in prose here; no gate\nagent goes inside a harness.\n\n**Adapt freely:** lens prompts and their skills, `context`, `decided`, `measured`,\n`verifyCap` (≤ 6), `controlSample` (≤ 2), the verifier run hint and isolation, the\nspec sections. A find-verify lens may be an external model (`finder: { pal: '\u003Cmodel>' }`).\n\n**Agent budget:** 3 + 1 x \u003Cverifiers or architect passes> — the counted 3 are the lens agents (`lenses.slice(0, 3)` in both files); find-verify adds one verifier per ranked finding up to `verifyCap` plus the control sample (≤ 11 in all), design-review adds the drafter and the reviser (5).\n\n**Preserve across any adaptation:** a caller-chosen lens list of 2–3, never\ntruncated; the Rank barrier and refute-by-default verdict; nothing dropped past the\ncap, behind a dead verifier, or folded into a duplicate; a resolution row per design\nissue; read-only agents; a `status` that is never `clean` over a coverage gap. The\nfull list is in [REFERENCE.md](REFERENCE.md#workflow-harnesses-what-to-preserve).\n\nNever `Workflow({resumeFromRunId})` to retry a few failed worktree agents — a resume\nre-runs agents that already succeeded and opens duplicate PRs (#1868). Re-dispatch the\nfailed units fresh and sequentially after checking\n`gh pr list --head \u003Cbranch> --state all --json number,state`.\n\nPush, PR creation, and GitHub mutations happen **only** in the single sequential\nfinalise stage, never inside a fanned-out agent. These templates have no such stage.\n\n**Skip the harness when:** there is one lens on one target — dispatch one reviewer\n(Step 3) and triage inline. The Execution steps remain the authoritative description of\n*what* each stage must produce; the harness only fixes *how* the work is split.\n\n## Anti-patterns\n\n| Mistake | Correct approach |\n|---|---|\n| Running it as a first pass | It's a second pass — a normal review runs first (Step 1) |\n| Using it on low-stakes \u002F reversible work | Skip it; the precondition gate exists to say no |\n| Acting on every objection the reviewer raises | Triage first (Step 4); the inverted objective guarantees noise |\n| Using a weak model \"to be tougher\" | Opus — subtle faults are a reasoning task (inverse of cold-read-gate) |\n| Restating each lens's checklist inline | Delegate to the owning skill; this is a posture, not a checklist |\n| Looping until the reviewer goes silent | One revise round; persistent faults = structural problem |\n\n## Related\n\n- [REFERENCE.md](REFERENCE.md) — audit sweeps: find, verify adversarially, then resolve settled facts before editing; apply an undecided finding only where the facts make it policy-neutral, never \"TBD\" or a plausible owner\n- [`cold-read-gate`](..\u002Fcold-read-gate\u002FSKILL.md) — the isolation + triage +\n  bounded-loop pattern this skill generalises (legibility lens; uses haiku)\n- [`verify-before-plan`](..\u002Fverify-before-plan\u002FSKILL.md) — adversarial review\n  of *premises*; the plan\u002Fwave lens delegates here\n- [`execution-grounded-review`](..\u002Fexecution-grounded-review\u002FSKILL.md) — the\n  sibling verifier for *running behaviour* against acceptance criteria (this\n  skill attacks a design; that one grounds each criterion in execution evidence)\n- `code-quality-plugin:code-review` — the first-pass review this layers on top of\n- `agents-plugin` security-audit \u002F `\u002Fsecurity-review` — the security lens\n- `.claude\u002Frules\u002Fskill-fork-context.md` — the `[1m]` parallel-dispatch caveat\n- `.claude\u002Frules\u002Floop-integrity.md` — looping skills delegate their stop-condition judgement to an isolated reviewer like this one (Pillar 1)\n","# Adversarial Review\n\nA normal review asks *\"is this right?\"* and confirms intent. Adversarial\nreview asks *\"how could this be wrong?\"* and hunts for the fault the first\npass rationalised away. It is a **second pass for residual risk on\nhigh-stakes work** — not a replacement for the first pass, and not for\nlow-stakes or reversible changes where it only manufactures busywork.\n**Red-teaming** is the same posture aimed at a proposal rather than a\nfinished change: actively try to break the proposed approach before you\ncommit to an architecture or design.\n\nThis is a **thin posture**, not a new checklist. It layers four moves —\nisolation, inverted objective, a triage gate, and a bounded loop — on top of\nthe domain checklists that already live in `code-review`, `security-audit`,\n`verify-before-plan`, and `cold-read-gate`. It dispatches an isolated\nreviewer with the matching lens and then **triages** what comes back, because\nan agent told to find faults will invent them.\n\n## When to Use This Skill\n\n| Use this skill when... | Use something else instead when... |\n|---|---|\n| Stakes are high **and** a normal review already passed, but residual risk remains | First-pass review of a diff\u002FPR → `code-quality-plugin:code-review` |\n| Red-teaming an architecture decision, ADR, or migration plan before commit | Verifying plan *facts* (counts, paths, build state) → `agent-patterns-plugin:verify-before-plan` |\n| Stress-testing a design's failure modes and invariants | Pure security audit → `agents-plugin` security-audit \u002F `\u002Fsecurity-review` |\n| Probing whether outward text survives a reader → wrap `cold-read-gate` | Legibility of outward text on its own → `agent-patterns-plugin:cold-read-gate` |\n| The change is hard to reverse and a missed fault is expensive | The change is low-stakes, reversible, or throwaway — skip; it wastes tokens |\n\n## The Four Moves\n\n| Move | What it means | Borrowed from |\n|---|---|---|\n| **Isolation** | The reviewer gets the artifact with no author context — bias can't leak in | `cold-read-gate` |\n| **Inverted objective** | Brief says \"enumerate failure modes,\" never \"confirm it works\" | this skill |\n| **Triage gate** | Separate genuine faults from manufactured objections **before** acting | `cold-read-gate` Step 3 |\n| **Bounded loop** | One revise round; a third means a structural problem the gate can't fix | `cold-read-gate` Step 4 |\n\n> **Model choice is the inverse of cold-read-gate.** That skill uses *haiku\n> on purpose* — the weak reader is the measurement instrument for legibility.\n> Adversarial review wants **opus**: finding subtle faults is a reasoning\n> task, not a low-context-reader simulation.\n\n## Parameters\n\nParse `$ARGUMENTS`:\n\n- **Target** (first positional) — what to attack: a path, a PR ref\n  (`#123` or URL), a file, or a free-text description of a plan\u002Fdecision.\n  If absent, default to the current diff (`git diff` + staged) and say so.\n- **Focus directive** (optional, free text after the target, e.g.\n  `focus on the failure path, ignore style`) — biases the lens. It\n  **steers, never overrides**: it must not cancel a live user boundary\n  stated earlier in the session (the `auto-mode.md` conversation-boundary\n  hazard).\n\n## Execution\n\nExecute this adversarial review:\n\n### Step 1: Precondition gate\n\nConfirm both hold before spending tokens:\n\n1. **Stakes are high** — the change is hard to reverse, or a missed fault\n   is expensive. If not, stop and recommend a normal review instead.\n2. **A first pass exists** — a normal review\u002Flint\u002Ftest pass already ran.\n   If not, run that first (`code-review`) — adversarial review is a\n   *second* pass, and leading with it skips cheap, high-yield findings.\n\nIf either fails, say so and redirect rather than proceeding.\n\n### Step 2: Name the target and pick the lens\n\nState in one line what is under review, then select the lens. The lens\nsupplies the domain attack vocabulary — **delegate to the owning skill's\nchecklist rather than restating it**:\n\n| Target type | Lens \u002F attack vocabulary | Delegate the checklist to |\n|---|---|---|\n| Code, diff, PR | Logic errors, edge cases, race conditions, error-swallowing | `code-quality-plugin:code-review`, `code-review-checklist` |\n| Security surface | Injection, authz gaps, secret exposure, trust boundaries | `agents-plugin` security-audit, `\u002Fsecurity-review` |\n| Architecture \u002F ADR | Coupling, failure domains, blast radius, reversibility | blueprint `adr-validate`, `adr-relationships` |\n| Plan \u002F wave premise | Premise truth, stale facts, name≠behaviour | `agent-patterns-plugin:verify-before-plan` |\n| Outward text \u002F docs | Legibility under zero context | `agent-patterns-plugin:cold-read-gate` |\n| Research claims | Unverified or single-sourced claims | `.claude\u002Fskills\u002Fdeep-research` |\n\n### Step 3: Dispatch the isolated reviewer\n\nOne `Agent` per lens on `model: opus` — adversarial review is judgement-tier\nwork (`.claude\u002Frules\u002Fagent-development.md` § \"Model Selection for Agents\"), so\nnot a place for `sonnet` or `haiku` — and `model: fable` is sanctioned too: it\nis exactly the hardest delegated reasoning, so the reviewer must not be weaker\nthan the author it is attacking.\nDispatch lenses in parallel only when there are several and the session is not\non a 1M-context model (every Fable 5.1 session, or Opus with the `[1m]`\nsuffix) — the parallel-subagent rate-limit caveat in `skill-fork-context.md`.\nTemplate:\n\n```\nsubagent_type: general-purpose\nmodel: opus   # judgement tier; fable also sanctioned — see agent-development.md\nprompt: |\n  You are an adversarial reviewer. Your ONLY objective is to find ways this\n  is WRONG, fragile, or unsafe — do not confirm that it works, do not\n  praise it. Assume a fault exists and locate it.\n\n  Read ONLY the target (no scope beyond it):\n  \u003Ctarget path \u002F diff \u002F pasted plan>\n\n  Attack along this lens: \u003Clens from Step 2, with its checklist>.\n  \u003Cfocus directive, if any>\n\n  Produce:\n  1. FAULTS — each as: SEVERITY=critical|high|medium  EVIDENCE=\u003Cfile:line or\n     quoted claim>  FAILURE=\u003Cthe concrete way it breaks>.\n  2. ASSUMPTIONS-ATTACKED — load-bearing assumptions you tried to falsify,\n     and whether each held.\n  3. VERDICT: exactly one of `sound` | `flawed`.\n  Cite evidence for every fault. Your final message is the deliverable.\n```\n\n### Step 4: Triage — genuine fault vs manufactured objection\n\nThe reviewer was told to find faults, so some \"faults\" are noise. Triage\n**before** acting (this is the load-bearing step — skipping it is how\nadversarial review sends you down the wrong path):\n\n| Genuine fault — act on it | Manufactured objection — drop it |\n|---|---|\n| A concrete input\u002Fstate that breaks the code, with evidence | A defense against an input the contract makes impossible |\n| A failure mode with real blast radius | A hypothetical with no realistic trigger |\n| A violated invariant or unhandled error path | Style\u002Fpreference dressed up as a fault |\n| A premise that is actually false | Re-litigating a trade-off already decided with rationale |\n| A missing edge case the spec implies | Scope the change didn't touch and isn't responsible for |\n\n### Step 5: Report and bound the loop\n\nEmit a prioritised report: target, verdict, surviving genuine faults\n(severity-ordered, with evidence and a suggested fix), and explicitly note\nthe objections you dropped in triage and why. Apply or hand off the genuine\nfixes. Re-dispatch a fresh reviewer **only if the verdict was `flawed`**;\ndo not loop more than twice — a third round means a structural problem the\nreview can't resolve.\n\n## Workflow harness (template)\n\n`workflows\u002Ffind-verify.workflow.js` (an existing change) and\n`workflows\u002Fdesign-review.workflow.js` (a spec drafted from recon) ship beside this\nskill. **Each is a TEMPLATE to adapt, not a script to run verbatim.** Read it, then\nrewrite it for the work in front of you. Step 1's gate stays in prose here; no gate\nagent goes inside a harness.\n\n**Adapt freely:** lens prompts and their skills, `context`, `decided`, `measured`,\n`verifyCap` (≤ 6), `controlSample` (≤ 2), the verifier run hint and isolation, the\nspec sections. A find-verify lens may be an external model (`finder: { pal: '\u003Cmodel>' }`).\n\n**Agent budget:** 3 + 1 x \u003Cverifiers or architect passes> — the counted 3 are the lens agents (`lenses.slice(0, 3)` in both files); find-verify adds one verifier per ranked finding up to `verifyCap` plus the control sample (≤ 11 in all), design-review adds the drafter and the reviser (5).\n\n**Preserve across any adaptation:** a caller-chosen lens list of 2–3, never\ntruncated; the Rank barrier and refute-by-default verdict; nothing dropped past the\ncap, behind a dead verifier, or folded into a duplicate; a resolution row per design\nissue; read-only agents; a `status` that is never `clean` over a coverage gap. The\nfull list is in [REFERENCE.md](REFERENCE.md#workflow-harnesses-what-to-preserve).\n\nNever `Workflow({resumeFromRunId})` to retry a few failed worktree agents — a resume\nre-runs agents that already succeeded and opens duplicate PRs (#1868). Re-dispatch the\nfailed units fresh and sequentially after checking\n`gh pr list --head \u003Cbranch> --state all --json number,state`.\n\nPush, PR creation, and GitHub mutations happen **only** in the single sequential\nfinalise stage, never inside a fanned-out agent. These templates have no such stage.\n\n**Skip the harness when:** there is one lens on one target — dispatch one reviewer\n(Step 3) and triage inline. The Execution steps remain the authoritative description of\n*what* each stage must produce; the harness only fixes *how* the work is split.\n\n## Anti-patterns\n\n| Mistake | Correct approach |\n|---|---|\n| Running it as a first pass | It's a second pass — a normal review runs first (Step 1) |\n| Using it on low-stakes \u002F reversible work | Skip it; the precondition gate exists to say no |\n| Acting on every objection the reviewer raises | Triage first (Step 4); the inverted objective guarantees noise |\n| Using a weak model \"to be tougher\" | Opus — subtle faults are a reasoning task (inverse of cold-read-gate) |\n| Restating each lens's checklist inline | Delegate to the owning skill; this is a posture, not a checklist |\n| Looping until the reviewer goes silent | One revise round; persistent faults = structural problem |\n\n## Related\n\n- [REFERENCE.md](REFERENCE.md) — audit sweeps: find, verify adversarially, then resolve settled facts before editing; apply an undecided finding only where the facts make it policy-neutral, never \"TBD\" or a plausible owner\n- [`cold-read-gate`](..\u002Fcold-read-gate\u002FSKILL.md) — the isolation + triage +\n  bounded-loop pattern this skill generalises (legibility lens; uses haiku)\n- [`verify-before-plan`](..\u002Fverify-before-plan\u002FSKILL.md) — adversarial review\n  of *premises*; the plan\u002Fwave lens delegates here\n- [`execution-grounded-review`](..\u002Fexecution-grounded-review\u002FSKILL.md) — the\n  sibling verifier for *running behaviour* against acceptance criteria (this\n  skill attacks a design; that one grounds each criterion in execution evidence)\n- `code-quality-plugin:code-review` — the first-pass review this layers on top of\n- `agents-plugin` security-audit \u002F `\u002Fsecurity-review` — the security lens\n- `.claude\u002Frules\u002Fskill-fork-context.md` — the `[1m]` parallel-dispatch caveat\n- `.claude\u002Frules\u002Floop-integrity.md` — looping skills delegate their stop-condition judgement to an isolated reviewer like this one (Pillar 1)\n",{"args":60,"name":5,"model":38,"created":61,"modified":62,"reviewed":63,"description":7,"allowed-tools":64,"argument-hint":65,"compatibility":66},"[target] [focus directive]",1782000000000,1793059200000,1788307200000,"Agent, Read, Glob, Grep, Bash(git diff *), Bash(git log *), Bash(gh pr view *), TodoWrite","path|PR|file|plan description; optional 'focus on X'","claude-code","main","bdd0582f1a2ba53d21061835bfd72d45f2f954f4","agent-patterns-plugin\u002Fskills\u002Fadversarial-review",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-15 03:36:11",{"source":8,"skillName":5,"commands":76,"prompt":86,"zipAvailable":87},[77,80,83],{"tool":78,"command":79},"npx","npx skills add laurigates\u002Fclaude-plugins --skill adversarial-review",{"tool":81,"command":82},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill adversarial-review",{"tool":84,"command":85},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill adversarial-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fadversarial-review\u002FSKILL.md",true,[89,95,99,105,109,113],{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"agents\u002Fopenai.yaml","REFERENCE","参考文档",221,"https:\u002F\u002Fgithub.com\u002FTimothyMeadows\u002FHephaera\u002Fblob\u002Fmain\u002Fskills\u002Fsolution-restore\u002Fagents\u002Fopenai.yaml",{"path":96,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":97,"sourceHtmlUrl":98},"REFERENCE.md",7309,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fadversarial-review\u002FREFERENCE.md",{"path":100,"resourceType":101,"resourceTypeDesc":102,"sizeBytes":103,"sourceHtmlUrl":104},"scripts\u002Ftests\u002Frun-template.mjs","SCRIPT","脚本",22272,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fadversarial-review\u002Fscripts\u002Ftests\u002Frun-template.mjs",{"path":106,"resourceType":101,"resourceTypeDesc":102,"sizeBytes":107,"sourceHtmlUrl":108},"scripts\u002Ftests\u002Ftest-templates.sh",1410,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fadversarial-review\u002Fscripts\u002Ftests\u002Ftest-templates.sh",{"path":110,"resourceType":101,"resourceTypeDesc":102,"sizeBytes":111,"sourceHtmlUrl":112},"workflows\u002Fdesign-review.workflow.js",13785,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fadversarial-review\u002Fworkflows\u002Fdesign-review.workflow.js",{"path":114,"resourceType":101,"resourceTypeDesc":102,"sizeBytes":115,"sourceHtmlUrl":116},"workflows\u002Ffind-verify.workflow.js",20230,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fagent-patterns-plugin\u002Fskills\u002Fadversarial-review\u002Fworkflows\u002Ffind-verify.workflow.js",[118,142,163,179,202,228],{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":127,"publishedAt":55},"01M70PFHMH9ADY0CRE6047Y4B2","kitty-show-image","Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no \u002Fdev\u002Ftty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-show-image\u002FSKILL.md",[124],{"categoryNo":125,"categoryName":126,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[128,129,130,131,132,133,134,135,136,137,32,34,50,51,138,139,140,141,33,45],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","text","with","xdg","via",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":55},"01M70PFEN18HKQ4RCQ1VPGMPTB","kitty-session-persistence","Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-session-persistence\u002FSKILL.md",[],[131,149,150,151,152,153,34,50,154,155,156,33,45,157,158,159,160,161,162,32],"kitty session persistence","session","persistence","false","snapshots","uname","reboot","terminal","write","edit","snapshot","macos","sessions","restore",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":169,"publishedAt":55},"01M70PFC77XGXCVQ1543VGZHYR","kitty-remote-control","Safe kitty remote control from an agent — read panes with kitty @ ls\u002Fget-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-remote-control\u002FSKILL.md",[],[170,171,131,172,173,133,174,175,134,176,177,32,34,178,50,138,139,156,33,45],"kitty remote control","remote","control","remote control","running","never","panes","notify","query",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":185,"publishedAt":55},"01M70P6WVMCT5JG4SACTM69AF9","docs-reference-check","Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved\u002Fdeleted files, or wiring a doc-drift lint.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fdocumentation-plugin\u002Fskills\u002Fdocs-reference-check\u002FSKILL.md",[],[186,187,188,189,190,191,192,193,194,195,32,34,50,196,51,197,198,199,200,201],"docs reference check","check","reference check","reference","docs","links","python3","repo","files","auto","drift","lint","wiring","chezmoi","references","cp",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":206,"categories":207,"keywords":213,"publishedAt":55},"01M6C6NDE7DAQGNWSF22J5CJ0Z","youtube-upload","Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-upload\u002FSKILL.md",[208,211,212],{"categoryNo":209,"categoryName":210,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":125,"categoryName":126,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[214,215,216,217,192,218,45,219,158,220,221,222,32,50,51,223,224,34,225,226,227,141,33],"youtube upload","upload","youtube","Video","run","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":229,"name":230,"nameZh":6,"description":231,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":232,"categories":233,"keywords":235,"publishedAt":55},"01M6C6NABWW1X58KJJM4F6GQMQ","youtube-studio-share","Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-studio-share\u002FSKILL.md",[234],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[236,237,238,239,216,217,240,241,242,243,244,45,245,246,247,248,32,249,34,139,250,33],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]