adversarial-review

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

/adversarial-review -- Single-Critic Stress Test

/adversarial-review —— 单评论者压力测试

Stress-test a known artifact by actively trying to break it. The reviewer's job is to be the smartest critic in the room — not balanced, not constructive, not polite. Adversarial.
通过主动尝试找出漏洞,对已知工件进行压力测试。审查者的角色是成为房间里最严苛的批评者——无需保持平衡、建设性或礼貌,要完全站在对抗视角。

When to Use This vs /council-review

何时使用本工具 vs /council-review

ToolUse ForMode
/adversarial-review
Stress-testing a known artifact (PR, draft, spec, plan, argument)Single-critic, attack-focused
/council-review
Open questions, decisions, "what should we do?"Multi-agent, collaborative DMAD
If the input is a question without a proposed answer, redirect to
/council-review
. If the input is a finished thing the user wants probed for flaws, this is the right tool.
Empirical note: M3MADBench (2026) shows multi-agent adversarial debate underperforms multi-agent collaborative debate for open questions. Single-critic adversarial probing is a different operation — and the right tool when the goal is to find specific flaws in a specific artifact rather than synthesize a verdict across viewpoints.
工具适用场景模式
/adversarial-review
已知工件(PR、草稿、规范、计划、论点)进行压力测试单评论者,聚焦攻击
/council-review
开放性问题、决策、“我们该怎么做?”多Agent,协作式DMAD
如果输入是没有提议答案的问题,请引导至
/council-review
。如果输入是用户想要探查缺陷的已完成工件,那么本工具是正确选择。
实证说明:M3MADBench(2026年)显示,针对开放性问题,多Agent对抗性辩论的表现不如多Agent协作式辩论。单评论者对抗性探查是一种不同的操作——当目标是找出特定工件中的具体缺陷,而非综合多方观点得出结论时,它是合适的工具。

Why This Works

为什么本工具有效

The strongest practitioners ask the model what is wrong with their work, not what is right. Most users use AI to confirm their thinking. Adversarial-review forces disconfirmation. The same model that produces fluent agreement on demand will, when prompted correctly, dismantle the same argument with equal speed.
Inspired by:
  • Codex Review Plugin's
    /codex:adversarial-review
    mode — probes edge cases, questions architectural decisions, plays devil's advocate
  • The "tell me why I'm wrong" prompting practice
  • Pre-mortem methodology — assume the artifact failed; trace backward
顶尖从业者会询问模型他们的工作存在哪些问题,而非哪些优点。大多数用户使用AI来确认自己的想法,而对抗性审查会迫使模型进行否定验证。同一个模型既能按需生成流畅的赞同内容,在正确提示下,也能同样迅速地拆解同一论点。
灵感来源:
  • Codex Review Plugin的
    /codex:adversarial-review
    模式——探查边界情况、质疑架构决策、扮演唱反调的角色
  • “告诉我我错在哪里”的提示实践
  • 事前验尸方法论——假设工件已失败,反向追溯原因

Arguments

参数

  • Argument 1 (required): The artifact to review. One of:
    • File path (
      docs/spec.md
      ,
      src/auth.ts
      )
    • PR number or URL (
      123
      ,
      https://github.com/org/repo/pull/123
      )
    • Pasted text in quotes
  • Flags (optional, composable):
    • --security
      — prioritize attack surface, auth gaps, input validation, secret handling
    • --logic
      — prioritize logical inconsistencies, missing cases, unstated assumptions
    • --user
      — prioritize UX gaps, footguns, surprising behavior, accessibility
    • --scale
      — prioritize what breaks at 10× or 100× expected load, concurrency, contention
    • --quick
      — single attack pass, severity-ranked findings, no deep dives (cheap mode)
When no flag is set, all five attack vectors run. Flags narrow the focus.
  • 参数1(必填): 待审查的工件。可选类型:
    • 文件路径(
      docs/spec.md
      src/auth.ts
    • PR编号或URL(
      123
      https://github.com/org/repo/pull/123
    • 用引号包裹的粘贴文本
  • 标记(可选,可组合):
    • --security
      —— 优先关注攻击面、认证缺口、输入验证、密钥处理
    • --logic
      —— 优先关注逻辑矛盾、遗漏场景、未声明假设
    • --user
      —— 优先关注UX缺口、易踩坑点、意外行为、可访问性
    • --scale
      —— 优先关注在预期负载、并发量、竞争情况达到10倍或100倍时会失效的部分
    • --quick
      —— 单次攻击扫描,按严重性排序发现结果,不进行深度分析(低成本模式)
未设置标记时,会运行全部五个攻击维度。标记用于缩小审查范围。

Procedure

流程

Phase 1: SCOPE — Validate that this is the right tool

阶段1:范围确认——验证是否适用本工具

  1. Parse flags from
    $ARGUMENTS
    .
  2. Classify the input:
    • PR — Numeric value, or URL containing
      /pull/
      . Fetch via
      gh pr view --json title,body && gh pr diff
      .
    • File path — String resolving to an existing file. Read the file.
    • Pasted text — Treat as the artifact itself.
  3. Reject open questions. If the input is phrased as a question without a proposed answer ("Should we use GraphQL?", "What's the best way to..."), redirect:
    "This is an open question, not an artifact. Use
    /council-review
    for decisions and
    /adversarial-review
    for stress-testing a specific draft, PR, spec, or plan."
    Do not proceed.
  4. Confirm the scope. Say back to the user one sentence: "Reviewing [artifact] for [attack vectors enabled]. Looking for what's wrong, not what's right."
  1. 解析
    $ARGUMENTS
    中的标记。
  2. 对输入进行分类:
    • PR —— 数值,或包含
      /pull/
      的URL。通过
      gh pr view --json title,body && gh pr diff
      获取内容。
    • 文件路径 —— 指向现有文件的字符串。读取该文件。
    • 粘贴文本 —— 直接作为工件处理。
  3. 拒绝开放性问题。如果输入是没有提议答案的问题(“我们应该使用GraphQL吗?”、“最好的方法是什么?”),请引导:
    “这是一个开放性问题,而非工件。请使用
    /council-review
    进行决策,使用
    /adversarial-review
    对特定草稿、PR、规范或计划进行压力测试。”
    不继续执行后续步骤。
  4. 确认范围。向用户回复一句话:“正在针对[攻击维度]审查[工件]。专注于找出问题,而非优点。”

Phase 2: READ — Load the full artifact + context

阶段2:读取——加载完整工件及上下文

For PRs:
  • gh pr view <id> --json title,body,baseRefName,headRefName,changedFiles
  • gh pr diff <id>
  • Read any context files referenced in the PR body
For file paths:
  • Read the full file
  • Read sibling files if the artifact references them
  • Read project
    CLAUDE.md
    /
    AGENTS.md
    if present (for convention context)
For pasted text:
  • Use as-is
对于PR:
  • gh pr view <id> --json title,body,baseRefName,headRefName,changedFiles
  • gh pr diff <id>
  • 读取PR正文中引用的所有上下文文件
对于文件路径:
  • 读取完整文件
  • 如果工件引用了同级文件,读取这些文件
  • 如果存在项目
    CLAUDE.md
    /
    AGENTS.md
    ,读取该文件(用于获取约定上下文)
对于粘贴文本:
  • 直接使用原文

Phase 3: ATTACK — Run adversarial probes

阶段3:攻击——执行对抗性探查

Default behavior (no flag): run all five attack vectors as parallel sub-agents OR as a single agent with structured sections (your call based on artifact size — sub-agents for >500 LOC, single agent otherwise).
Each attack vector has a focused prompt:
默认行为(无标记):运行全部五个攻击维度,可选择以并行子Agent或单个Agent分结构化章节执行(根据工件大小决定——代码量超过500行时使用子Agent,否则使用单个Agent)。
每个攻击维度都有针对性的提示:

--security
(or default)

--security
(或默认)

You are a security reviewer trying to break this artifact. Find:
- Auth gaps: missing checks, broken object-level authorization, IDOR potential
- Input validation failures: injection, untrusted-input flow, type confusion
- Secret handling: hardcoded secrets, secret-in-logs, secret-in-error-messages
- External API trust: assuming responses are well-formed, missing timeouts
- Data exposure: PII in responses, over-fetching, sensitive errors

For each finding: severity (CRITICAL/HIGH/MEDIUM/LOW), specific location (file:line if applicable), reproduction sketch, and the fix in one sentence.

Do not list things that are already secure. Do not pad the report. If you find nothing, say "no findings in this dimension" and move on.
You are a security reviewer trying to break this artifact. Find:
- Auth gaps: missing checks, broken object-level authorization, IDOR potential
- Input validation failures: injection, untrusted-input flow, type confusion
- Secret handling: hardcoded secrets, secret-in-logs, secret-in-error-messages
- External API trust: assuming responses are well-formed, missing timeouts
- Data exposure: PII in responses, over-fetching, sensitive errors

For each finding: severity (CRITICAL/HIGH/MEDIUM/LOW), specific location (file:line if applicable), reproduction sketch, and the fix in one sentence.

Do not list things that are already secure. Do not pad the report. If you find nothing, say "no findings in this dimension" and move on.

--logic
(or default)

--logic
(或默认)

You are a logician reviewing this artifact. Find:
- Missing cases: state combinations the artifact doesn't handle (null, empty, max-int, negative, concurrent)
- Unstated assumptions: things the author treats as obvious that aren't
- Internal contradictions: claim X in one section, claim ~X in another
- Off-by-one and boundary errors
- Ordering: race conditions, dependency cycles, lock ordering
- Counter-examples: an input that breaks the central claim

For each finding: a concrete adversarial example, why it breaks the artifact, and the smallest fix.
You are a logician reviewing this artifact. Find:
- Missing cases: state combinations the artifact doesn't handle (null, empty, max-int, negative, concurrent)
- Unstated assumptions: things the author treats as obvious that aren't
- Internal contradictions: claim X in one section, claim ~X in another
- Off-by-one and boundary errors
- Ordering: race conditions, dependency cycles, lock ordering
- Counter-examples: an input that breaks the central claim

For each finding: a concrete adversarial example, why it breaks the artifact, and the smallest fix.

--user
(or default)

--user
(或默认)

You are a user encountering this for the first time, trying to use it incorrectly. Find:
- Footguns: things that look fine but cause silent damage
- Surprising defaults: behavior the user doesn't expect from the docs/UI
- Confirmation traps: irreversible actions that look reversible (or vice versa)
- Accessibility: keyboard-only use, screen reader, color-only signaling
- Error states: what happens when the user does the wrong thing? Is the recovery path clear?

For each finding: the specific user action, the surprising or harmful outcome, and the fix.
You are a user encountering this for the first time, trying to use it incorrectly. Find:
- Footguns: things that look fine but cause silent damage
- Surprising defaults: behavior the user doesn't expect from the docs/UI
- Confirmation traps: irreversible actions that look reversible (or vice versa)
- Accessibility: keyboard-only use, screen reader, color-only signaling
- Error states: what happens when the user does the wrong thing? Is the recovery path clear?

For each finding: the specific user action, the surprising or harmful outcome, and the fix.

--scale
(or default)

--scale
(或默认)

You are a system reviewer asking: what breaks at 10× or 100× the expected load? Find:
- Algorithmic cliffs: O(n²) or worse hidden in normal-looking code
- Memory growth: unbounded caches, accumulating state, missing cleanup
- Database hot spots: missing indexes, N+1 queries, table-locking transactions
- Concurrency: shared mutable state, race conditions, lock contention
- External dependencies: rate limits, fan-out blast radius, retry storms
- Single points of failure

For each finding: the failure mode, the rough threshold (rows / users / RPS), and the fix.
You are a system reviewer asking: what breaks at 10× or 100× the expected load? Find:
- Algorithmic cliffs: O(n²) or worse hidden in normal-looking code
- Memory growth: unbounded caches, accumulating state, missing cleanup
- Database hot spots: missing indexes, N+1 queries, table-locking transactions
- Concurrency: shared mutable state, race conditions, lock contention
- External dependencies: rate limits, fan-out blast radius, retry storms
- Single points of failure

For each finding: the failure mode, the rough threshold (rows / users / RPS), and the fix.

Universal probe (always run unless
--quick
)

通用探查(除非使用
--quick
,否则始终运行)

You are the harshest reviewer this artifact will ever see. Beyond the categories above, find:
- The thing the author was avoiding thinking about
- The simplest counter-example to the central claim
- The version of the artifact that exists in 30 days, after one round of feedback — what changed and why?
- The strongest argument *against* the artifact's central thesis
- The "we'll handle it later" item that becomes a real problem

Be specific. No abstract concerns.
You are the harshest reviewer this artifact will ever see. Beyond the categories above, find:
- The thing the author was avoiding thinking about
- The simplest counter-example to the central claim
- The version of the artifact that exists in 30 days, after one round of feedback — what changed and why?
- The strongest argument *against* the artifact's central thesis
- The "we'll handle it later" item that becomes a real problem

Be specific. No abstract concerns.

Escalation probe (V2 — always run unless
--quick
)

升级探查(V2版本——除非使用
--quick
,否则始终运行)

Single-pass review misses the failure modes that only appear over a sequence of interactions — the documented blind spot of static, single-turn evaluation. Probe the artifact dynamically:
Single inputs may look safe; sequences break. Find the multi-step failure:
- What's the 2-4 step interaction that compounds into a failure no single step triggers? (state accretion, retry storms, partial-failure left mid-way, auth downgraded across a flow)
- What does a user/attacker do AFTER the first thing works — and where does step N break what step 1 established?
- Where does the artifact assume a clean single attempt but production delivers retries, reorders, or interleaving?

Give the concrete step sequence and the state at each step up to the break.
单次扫描会遗漏仅在一系列交互中才会出现的故障模式——这是静态单轮评估的已知盲区。对工件进行动态探查:
Single inputs may look safe; sequences break. Find the multi-step failure:
- What's the 2-4 step interaction that compounds into a failure no single step triggers? (state accretion, retry storms, partial-failure left mid-way, auth downgraded across a flow)
- What does a user/attacker do AFTER the first thing works — and where does step N break what step 1 established?
- Where does the artifact assume a clean single attempt but production delivers retries, reorders, or interleaving?

Give the concrete step sequence and the state at each step up to the break.

Phase 4: TRIAGE — Categorize and rank

阶段4:分类——归类并排序

Group every finding into one of three severity tiers:
TierDefinitionAction
CRITICALWill fail in production / break safety / breach security under realistic conditionsFix before shipping
IMPORTANTWill degrade quality / cause real bugs in edge cases / confuse usersFix in the next pass
NITStyle, polish, minor inconsistencyOptional
Within each tier, rank by likelihood × blast radius. Drop findings that are pure speculation or "you could imagine a scenario where..." — keep only findings backed by a concrete example.
(V2) Validation gate — confirm before you escalate. For every CRITICAL (and ideally each IMPORTANT), state the exact reproduction and mentally re-run it against the artifact: does the trigger actually reach the failure given the code/spec as written, or does an existing guard already stop it? Demote or drop any finding that doesn't survive this re-test. Automated red-teaming's edge is validated findings with reproductions, not raw volume — an unreproducible CRITICAL costs more trust than it's worth. Mark each surviving finding
[reproduced]
.
将所有发现分为三个严重等级:
等级定义操作
CRITICAL(严重)在现实场景下会导致生产环境故障/破坏安全性/违反安全规则发布前修复
IMPORTANT(重要)会降低质量/在边缘场景引发真实bug/使用户困惑下一轮迭代中修复
NIT(细微)风格、 polish、 minor inconsistency可选修复
在每个等级内,按可能性×影响范围排序。剔除纯推测或“你可以想象一种场景……”的发现——仅保留有具体示例支持的发现。
(V2版本) 验证关卡——升级前确认。对于每个严重等级(理想情况下每个重要等级)的发现,说明确切的复现步骤,并对照工件重新推演:根据现有代码/规范,触发条件是否真的会导致故障,还是已有防护机制可以阻止?对于未通过此重新测试的发现,降级或剔除。自动化红队测试的优势在于已验证且带有复现步骤的发现,而非数量——一个无法复现的严重发现会损害信任,得不偿失。为每个通过验证的标记
[reproduced]

Phase 5: PRESENT — Surface findings with reproduction

阶段5:呈现——展示带有复现步骤的发现

Output structure:
undefined
输出结构:
undefined

Adversarial Review: [Artifact Name]

对抗性审查:[工件名称]

Attack vectors run: [list of dimensions] Findings: [N CRITICAL / M IMPORTANT / K NIT]

运行的攻击维度: [维度列表] 发现结果: [N个严重 / M个重要 / K个细微]

CRITICAL (N)

CRITICAL(N)

[1] [One-line title — what breaks]

[1] [一行标题——故障内容]

Location: [file:line or section] Trigger: [the specific input/condition that breaks the artifact] What breaks: [the failure mode, in one sentence] Fix sketch: [one sentence — what to change]
[Repeat per CRITICAL finding]

位置: [文件:行号或章节] 触发条件: [导致工件故障的具体输入/条件] 故障表现: [故障模式,一句话描述] 修复方案概述: [一句话描述——需要修改的内容]
[每个严重发现重复上述结构]

IMPORTANT (M)

IMPORTANT(M)

[Same structure, one tier down]

[结构同上,等级降低一级]

NIT (K)

NIT(K)

[One-line bullets, no expanded structure]

[一行式项目符号,无需展开结构]

What I Could Not Break

未发现漏洞的部分

[2-3 sentences naming the strongest parts of the artifact — the parts that resisted attack. This is calibration, not flattery: it tells the user where the artifact is genuinely strong.]

[2-3句话说明工件最坚固的部分——抵御住攻击的部分。这是校准,而非恭维:告知用户工件真正可靠的地方。]

What This Review Did NOT Cover

本次审查未覆盖的范围

[Honesty section. List dimensions you did not probe — usually because they require runtime testing, user research, or knowledge the artifact doesn't include. Saves the user from assuming "no findings" means "no risks".]
undefined
[诚实声明部分。列出未探查的维度——通常是因为需要运行时测试、用户研究,或工件未包含相关知识。避免用户误以为“未发现问题”意味着“无风险”。]
undefined

Phase 6: PRESENT — Show in chat + offer to save

阶段6:呈现——在聊天中展示并提供保存选项

Print the full report inline. Offer to save to
<cwd>/adversarial-review-<artifact-slug>-<date>.md
if the artifact was a file or PR.
在线打印完整报告。如果工件是文件或PR,提供保存至
<cwd>/adversarial-review-<artifact-slug>-<date>.md
的选项。

Gotchas

注意事项

  • Do not be balanced. This is the adversarial role. The artifact's defenders already exist; this skill exists to find what they missed.
  • Do not pad findings. If a dimension produced nothing, say so. Five fluffy findings beat ten real ones less than zero.
  • Do not speculate without an example. "An attacker could imagine a scenario where..." is noise. "Send
    <input>
    and observe
    <failure>
    " is signal.
  • Do not redirect to
    /council-review
    for finished artifacts.
    That's the inverse mistake — council is for open questions, this is for stress tests.
  • Do not propose entire rewrites in fix sketches. One-sentence fix or "this needs a deeper redesign — see Notes." Save the rewrite for the author.
  • Do not omit "What I Could Not Break". Without it, the user can't tell where the artifact is genuinely solid vs where you didn't look.
  • 不要保持中立。这是对抗性角色。工件的维护者已经存在;本技能的作用是找出他们遗漏的问题。
  • 不要凑数。如果某个维度没有发现问题,直接说明。五个有价值的发现胜过十个无意义的发现。
  • 不要无依据推测。“攻击者可能会想象一种场景……”是噪音。“发送
    <input>
    并观察
    <failure>
    ”才是有效信息。
  • 不要将已完成工件引导至
    /council-review
    。这是反向错误——council用于开放性问题,本工具用于压力测试。
  • 不要在修复方案中提议完全重写。用一句话描述修复方案,或“这需要深度重新设计——参见注释”。重写的工作留给作者。
  • 不要省略“未发现漏洞的部分”。没有这部分,用户无法区分工件真正可靠的部分和未探查的部分。

Changelog

更新日志

V2 (2026-05-27)

V2(2026-05-27)

Optimized via
skillforge optimize
(outcome research: red-teaming practice 2026).
  • Escalation probe (Phase 3) — adds multi-step/sequence attacks; static single-turn review is documented to miss interaction-dependent, escalation-driven failures.
  • Validation gate (Phase 4) — every CRITICAL must carry a confirmed reproduction (
    [reproduced]
    ); unreproducible findings are demoted/dropped. Mirrors automated red-teaming's edge: validated findings with reproductions beat raw volume (learning-based RT reports ~3.9× discovery at 89% validation accuracy vs manual).
  • Outcome target: deeper multi-step failure analysis + fewer false positives (validation gate). Sources: Algorithmic Red-Teaming review (arXiv 2026); Learning-based automated RT; red-teaming practitioner guides 2026.
  • Verification (independent A/B, 2026-05-27): V1 (single-pass) vs V2 (+escalation probe) on a planted retry/idempotency bug. Both arms caught the bug — so the escalation probe's catch-rate advantage is unproven on this case (the bug was catchable single-pass). V2's demonstrated win was reproduction quality: a concrete 7-step compound-failure trace vs V1's one-line mention. Claim is scoped to that; a genuinely sequence-only bug would be needed to test catch-rate.
通过
skillforge optimize
优化(基于2026年红队测试实践的成果研究)。
  • 升级探查(阶段3)——增加多步骤/序列攻击;静态单轮审查已被证实会遗漏依赖交互、逐步升级的故障。
  • 验证关卡(阶段4)——每个严重发现必须带有已确认的复现步骤(标记
    [reproduced]
    );无法复现的发现会被降级或剔除。与自动化红队测试的优势一致:带有复现步骤的已验证发现胜过单纯的数量(基于学习的红队测试报告相比手动测试,发现率约高3.9倍,验证准确率达89%)。
  • 目标成果:更深入的多步骤故障分析 + 更少的误报(验证关卡)。来源:《算法红队测试综述》(arXiv 2026)基于学习的自动化红队测试;2026年红队测试从业者指南。
  • 验证(独立A/B测试,2026-05-27):在一个植入了重试/幂等性bug的工件上对比V1(单次扫描)和V2(+升级探查)。两个版本都发现了该bug——因此升级探查在该案例中的发现率优势未被证实(该bug可通过单次扫描发现)。V2的已证实优势在于复现质量:具体的7步复合故障追踪,而V1仅用一句话提及。结论仅限于此;若要测试发现率,需使用真正仅存在于序列中的bug。

Cost Budget

成本预算

ModeAgent CallsBest For
Default (all vectors)6–7 (per-vector + universal + escalation probe + triage)Pre-merge PR review, spec sign-off
Single dimension (
--security
etc.)
2 (focused probe + triage)Targeted audit
Quick (
--quick
)
1Cheap drive-by check
模式Agent调用次数最佳适用场景
默认(全维度)6–7次(每个维度+通用+升级探查+分类)合并前PR审查、规范签署
单维度(
--security
等)
2次(聚焦探查+分类)定向审计
快速模式(
--quick
1次低成本快速检查

Routine / Schedule

常规流程/计划

For pre-merge automation, wrap as a GitHub Actions step that runs
claude code -p "/adversarial-review $PR_URL --security"
on PRs touching auth or data paths.
对于合并前自动化,可封装为GitHub Actions步骤,在PR触及认证或数据路径时运行
claude code -p "/adversarial-review $PR_URL --security"

Testing

测试

This is a prompt-only skill. The shipped
tests/eval.sh
asserts the structural contract. To verify behavior end-to-end:
  1. cd
    into a project with a recent PR or draft spec.
  2. Run
    /adversarial-review docs/spec.md
    (or any artifact path).
  3. Check that:
    • Findings are categorized into CRITICAL / IMPORTANT / NIT
    • Each CRITICAL has a specific trigger and reproduction sketch
    • "What I Could Not Break" section is present and substantive
    • "What This Review Did NOT Cover" section is honest about gaps
  4. Run with a single flag:
    /adversarial-review docs/spec.md --security
    . Verify only security findings are reported.
  5. Run on an open question to verify redirect:
    /adversarial-review "Should we use GraphQL?"
    should redirect to
    /council-review
    .
这是一个纯提示技能。已发布的
tests/eval.sh
用于验证结构约定。要进行端到端行为验证:
  1. cd
    到包含近期PR或草稿规范的项目中。
  2. 运行
    /adversarial-review docs/spec.md
    (或任意工件路径)。
  3. 检查:
    • 发现结果被分为CRITICAL/IMPORTANT/NIT
    • 每个CRITICAL发现都有具体触发条件和复现步骤概述
    • “未发现漏洞的部分”存在且内容充实
    • “本次审查未覆盖的范围”如实说明缺口
  4. 使用单个标记运行:
    /adversarial-review docs/spec.md --security
    。验证仅报告安全相关发现。
  5. 针对开放性问题运行以验证引导:
    /adversarial-review "Should we use GraphQL?"
    应引导至
    /council-review