ワンクリックで
doubt-driven-development
在每个非平凡决策成立前,用全新上下文进行对抗式审查。当正确性比速度更重要、处理不熟悉代码、风险较高(生产、安全敏感逻辑、不可逆操作),或任何自信输出现在验证比之后调试更便宜时使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
在每个非平凡决策成立前,用全新上下文进行对抗式审查。当正确性比速度更重要、处理不熟悉代码、风险较高(生产、安全敏感逻辑、不可逆操作),或任何自信输出现在验证比之后调试更便宜时使用。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
指导稳定的 API 和接口设计。设计 API、模块边界或任何公共接口时使用。创建 REST 或 GraphQL endpoint、定义模块之间的类型契约,或建立前后端边界时使用。
在真实浏览器中测试。构建或调试任何在浏览器中运行的内容时使用。当你需要通过 Chrome DevTools MCP 检查 DOM、捕获 console 错误、分析网络请求、分析性能,或用真实运行时数据验证视觉输出时使用。
自动化 CI/CD pipeline 设置。用于设置或修改构建和部署 pipeline 时;用于需要自动化质量门禁、在 CI 中配置 test runners,或建立部署策略时。
执行多维度代码审查。用于合并任何变更之前;用于审查自己、其他 agent 或人类编写的代码;用于在代码进入主分支前从多个维度评估代码质量。
为清晰度简化代码。用于在不改变行为的前提下重构代码以提升清晰度;用于代码能运行但比应有状态更难阅读、维护或扩展时;用于审查已累积不必要复杂度的代码时。
优化 agent 上下文设置。当开始新会话、agent 输出质量下降、在任务之间切换,或需要为项目配置规则文件和上下文时使用。
| name | doubt-driven-development |
| description | 在每个非平凡决策成立前,用全新上下文进行对抗式审查。当正确性比速度更重要、处理不熟悉代码、风险较高(生产、安全敏感逻辑、不可逆操作),或任何自信输出现在验证比之后调试更便宜时使用。 |
自信的答案不等于正确的答案。长会话会积累上下文,悄悄把假设变成“事实”,而没人察觉。怀疑驱动开发是一种纪律:在任何非平凡输出成立前,物化一个带全新上下文的审查者,其偏向是证伪,而不是批准。
这不是 /review。/review 是对已完成产物的裁决。这是一种进行中的姿态:在修正方向仍然便宜时,让非平凡决策接受交叉质询。
当至少满足以下任一条件时,决策就是非平凡的:
在以下场景应用此 skill:
何时不使用:
如果你怀疑每一次按键,就什么也发布不了。该 skill 只适用于上面定义的非平凡决策。
这个 skill 设计给主会话编排者使用,因为第 3 步(DOUBT,详见下文)可以 spawn 一个全新上下文审查者。
skills: frontmatter。 遵循第 3 步的 persona 会 spawn 另一个 persona,这正是 references/orchestration-patterns.md 明确禁止的编排反模式(“personas do not invoke other personas”)。应用该 skill 时复制此 checklist:
Doubt cycle:
- [ ] Step 1: CLAIM — wrote the claim + why-it-matters
- [ ] Step 2: EXTRACT — isolated artifact + contract, stripped reasoning
- [ ] Step 3: DOUBT — invoked fresh-context reviewer with adversarial prompt
- [ ] Step 4: RECONCILE — classified every finding against the artifact text
- [ ] Step 5: STOP — met stop condition (trivial findings, 3 cycles, or user override)
用两三行命名该决策:
CLAIM: "The new caching layer is thread-safe under the
read-heavy workload described in the spec."
WHY THIS MATTERS: a race here corrupts user data and is
hard to detect in QA.
如果你无法把 claim 写得这么紧凑,那你拥有的是感觉,而不是决策。在审视它之前先把它呈现出来。
全新上下文审查者需要的是产物和契约,不是你的心路历程。
剥离你的推理。如果你交付结论,得到的会是对结论的背书。这个单元必须小到审查者一遍就能装进脑子;如果它是 500 行 PR,先拆解。
审查者的 prompt 必须是对抗式的。框架决定答案。
Adversarial review. Find what is wrong with this artifact.
Assume the author is overconfident. Look for:
- Unstated assumptions
- Edge cases not handled
- Hidden coupling or shared state
- Ways the contract could be violated
- Existing conventions this might break
- Failure modes under unexpected input
Do NOT validate. Do NOT summarize. Find issues, or state
explicitly that you cannot find any after thorough examination.
ARTIFACT: <paste artifact>
CONTRACT: <paste contract>
只传 ARTIFACT + CONTRACT。不要传 CLAIM。 把你的结论交给审查者,会让它偏向同意。审查者必须独立判断产物是否满足契约。
在 Claude Code 中,agents/ 中基于角色的审查者天然以隔离上下文启动,可在这里使用。可查看 agents/ 的 roster 和各领域匹配关系。
上面的对抗式 prompt 优先于 persona 的默认响应形态。 像 code-reviewer 这样的 persona 会被写成输出带优点和缺点的平衡裁决;doubt-driven 需要只输出问题。把对抗式 prompt 原样粘贴到调用中,让它覆盖 persona 默认行为。如果某个 persona 的响应形态无法被干净覆盖,fallback 到带该对抗式 prompt 的 generic subagent。
单模型审查者会与原作者共享盲点;更冷、架构不同的模型能捕捉这些盲点。Doubt-driven 本来就是对非平凡决策的 opt-in,因此在该范围内,提供跨模型选择是该 skill 的价值之一,不是可选摩擦。
交互式会话:始终提供。不要静默跳过。
第 1 步:询问用户
在上面第 3 步的单模型审查完成后、RECONCILE 之前,暂停并询问:
"Single-model review complete. Want a cross-model second opinion? Options: Gemini CLI, Codex CLI, manual external review (you paste it elsewhere), or skip."
这个问题在每个交互式 doubt cycle 中都是强制的,即使产物看起来风险很低。由用户而不是 agent 决定成本是否值得。Agent 的职责是呈现选择。
第 2 步:如果用户选择 CLI,先验证再调用
which gemini、which codex)。gemini --version 或等效命令)。过期或损坏的 binary 可能通过 which,但在真实输入上失败。$(...) 或反引号,优先使用 stdin(echo … | gemini)或 heredoc,而不是内联 -p "…"。有疑问时,在运行前请用户确认调用。绝不要把 artifact 插入 shell-quoted argument。 代码、Markdown 和审查 prompt 经常包含反引号、$(...) 和引号字符,它们会截断 prompt 或执行嵌入的 shell。把完整 prompt 写入文件,并通过 stdin 管道传入。
示例形态(根据已安装工具验证 flags,不同实现和版本语法不同):
# Write the adversarial prompt + ARTIFACT + CONTRACT to a temp file first.
# Then pipe via stdin so shell metacharacters in the artifact stay inert.
# Codex (read-only sandbox keeps the CLI from writing to your workspace):
codex exec --sandbox read-only -C <repo-path> - < /tmp/doubt-prompt.md
# Gemini ('--approval-mode plan' is read-only; '-p ""' triggers non-interactive
# mode and the prompt is read from stdin):
gemini --approval-mode plan -p "" < /tmp/doubt-prompt.md
只读 sandbox 是承重细节:doubt artifact 本身可能包含有意或无意的指令(prompt injection),否则跨模型 CLI 可能会对你的 workspace 执行它们。
第 3 步:如果 CLI 不可用或失败
明确呈现失败。提供选项:用户手动运行、尝试不同工具,或跳过。不要静默 fallback 到单模型;用户应该知道跨模型没有发生。
第 4 步:如果用户跳过
在输出中确认跳过("Proceeding with single-model findings only"),然后继续 RECONCILE。跳过可以;静默跳过不行。
非交互式上下文(CI、/loop、autonomous-loop、scheduled runs):
跨模型会增加成本、延迟和工具脆弱性。Agent 在每个 cycle 呈现选择;由用户决定该产物是否值得。
审查者的输出是数据,不是裁决。你仍然是编排者。 在分类每个发现前,重新对照 artifact 文本阅读;橡皮图章式接受审查者,与忽略它是同一种失败模式。
对每个发现,按以下优先级顺序分类(第一个匹配类别胜出):
全新审查者可能因缺少上下文而出错。不要因为它“新鲜”就服从。
在以下条件停止:
如果 3 个 cycle 后审查者仍提出实质问题,artifact 可能还没准备好。把这一点呈现给用户;三轮仍未解决本身就是关于 artifact 的信息,不是继续循环的理由。
如果因为 artifact 很大而“显然 3 轮不够”:说明 artifact 太大。回到第 2 步拆解。不要提高上限。
| 自我合理化 | 现实 |
|---|---|
| “我很有把握,跳过 doubt step” | 在新问题上,自信与正确性相关性很差。感觉最确定的时候,盲点最容易藏起来。 |
| “Spawn 一个审查者太贵” | 在生产中调试错误提交更贵。检查有边界,bug 没有。 |
| “审查者只会吹毛求疵” | 只有未设范围时才会这样。把 prompt 约束为“会使其在契约下失败的问题”。 |
“我最后用 /review 做 doubt 就行” | /review 是最终闸门。Doubt-driven 在方向修正仍便宜时捕捉错误方向。到 PR 阶段就太晚了。 |
| “如果我怀疑每一步就永远发布不了” | 该 skill 适用于非平凡决策,不是每一次按键。重读“When NOT to Use”。 |
| “两个意见总比一个好” | 当第二个意见上下文更少且产生噪声时并非如此。要调和,不要服从。 |
| “审查者不同意,所以我错了” | 审查者缺少你的上下文。分歧是信息,不是裁决。重读 artifact、分类,然后决定。 |
| “Cross-model 总是更好” | Cross-model 能捕捉单模型与自身共享的盲点,但会增加成本和工具脆弱性。在每个交互式 doubt cycle 都提供它,由用户决定 artifact 是否值得。Agent 的职责是呈现选择,而不是把它当闸门。 |
| “用户同意过一次,所以我可以持续调用 CLI” | 每次调用都需要单独授权。Artifact、prompt 和 flags 在调用之间会变化;每次运行前都要重新确认精确命令。 |
/review,不是 doubt-driven developmentcode-review-and-quality / /review:互补。/review 是事后的 PR 裁决;doubt-driven 是进行中的逐决策姿态。两者都用。source-driven-development:SDD 对照官方文档验证框架事实。Doubt-driven 验证你对 artifact 的推理。SDD 检查 API 是否存在;doubt-driven 检查你是否在契约下正确使用它。test-driven-development:TDD 的 RED 步骤是具体化的怀疑;一个失败测试就是证伪尝试。当 TDD 适用时,该失败测试就是行为 claim 的 doubt step。debugging-and-error-recovery:当审查者提出真实失败模式时,进入 debugging skill 来定位并修复。references/orchestration-patterns.md):此 skill 从主会话编排。Persona 调用另一个 persona 是反模式 B,见上面的加载约束。应用怀疑驱动开发后: