Doubt Review(对抗式决策复查)

SkillDatabases & data

Launch an adversarial, independent re-review of a just-made non-trivial technical decision, strip the decision of its conclusion and hand it to a fresh-context reviewer to "find problems." Use before writing back decisions that affect the ER or shared components, before finalizing complex SQL/state-m

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Doubt Review(对抗式决策复查) skill

What this skill tells your AI

The instructions your AI receives, as published by tscarpe/claude-sdlc-skills in skills/sdlc-doubt/SKILL.md and read by ahel’s review.

定位:自信的答案不等于正确的答案。长会话中,假设会悄然变成"事实"。本 skill 是 in-flight 复查——决策落地前质疑它,不是事后的代码质量检查(如 trellis-check、/code-review)。

何时触发

非平凡决策定义(任一命中才触发)

  1. 新增/修改分支逻辑或状态机流转
  2. 跨模块/跨域边界,影响 ER 或公共组件
  3. 断言编译器无法验证的属性(事务边界、幂等、数据一致性、租户隔离)
  4. 不可逆或大爆炸半径(删数据、迁移、审核状态变更)

触发场景

  • 大需求切片发现影响 ER/公共组件的偏差,回写上层设计文档前
  • design.md 关键决策定稿前(技术设计评审前)
  • 复杂 SQL 定稿前(join 3 表+ / 租户隔离条件 / 聚合口径)
  • 代码提交前,对"全范围检查已通过"这一断言本身存疑时
  • 用户明示触发

不触发(防滥用)

命名选择、单层内实现细节、spec 已直接覆盖的规则、机械性改动(重命名/格式化/移动文件)、用户明确要速度不要验证。

五步闭环

复制此 checklist 跟踪:

Doubt cycle:
- [ ] Step 1: CLAIM — 2-3 行命名决策 + 为何重要
- [ ] Step 2: EXTRACT — 提取 artifact + contract,剥离推理,不含 CLAIM
- [ ] Step 3: DOUBT — Agent 子代理 + 对抗 prompt
- [ ] Step 4: RECONCILE — 每条发现按四分类回 artifact 文本归类
- [ ] Step 5: STOP — 满足停止条件(平凡发现 / 3 轮 / 用户 override)

Step 1: CLAIM

CLAIM: "订单取消走快照回滚而非实时表反查,在并发操作场景下数据一致"
WHY: 不一致会导致取消后订单列表与操作记录不符

写不出 2-3 行的紧凑 CLAIM = 还没有决策,只有感觉——先想清楚再质疑。

Step 2: EXTRACT(最关键的一步)

给审查者只准备两样东西:

  • ARTIFACT:被审制品——代码 diff、design 片段、SQL,不是整个文件
  • CONTRACT:它必须满足什么——接口契约、数据约束、业务规则

剥离自己的推理过程,明确不传 CLAIM——传了结论,审查者会顺着附和。制品大到审查者一遍读不完(如 500 行 PR),先拆分再提取。

Step 3: DOUBT

用 Agent 工具生成子代理(隔离上下文 = 天然 fresh reviewer),prompt 用下方对抗模板。可用 Code Reviewer / general-purpose 类型,但对抗 prompt 必须原样传入以覆盖其默认输出形态。

Step 4: RECONCILE

审查输出是数据,不是判决——每条发现回到 artifact 文本归类后才算数。按下方四分类表处理。不要因为审查者"上下文更新鲜"就服从它。

Step 5: STOP

满足任一即停:下一轮只剩平凡/已考虑过的发现;3 轮上限(3 轮仍有实质问题 = 制品不行,升级用户,不要磨第 4 轮);用户明确说"就这样"。

对抗 Prompt 模板

模板与 sdlc-gate skill(../sdlc-gate/SKILL.md,同集合安装时与本 skill 同级)Step 2 的对抗模板同源;输出形态按消费方有意分化——本 skill 会话内 RECONCILE 消费,行级证据即可;sdlc-gate 输出汇总进 issues 文件,需结构化四字段(标题/原文/位置/严重度)。单独安装本 skill 时该引用仅作来源说明,不依赖其存在。

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
- Concurrency or race conditions under parallel access
- Irreversible or hard-to-rollback changes

Do NOT validate. Do NOT summarize. Find issues, or state
explicitly that you cannot find any after thorough examination.
输出仅限问题清单,每条附 artifact 中的行级证据(引用原文)。

ARTIFACT: <粘贴 artifact>
CONTRACT: <粘贴 contract>

RECONCILE 四分类(按此 precedence 逐类过滤,首个命中即归类)

分类判定特征处置
1. 契约误读审查者因不知道的上下文误报(数据来源是内部可信的、上游已校验、变更是注释里写明的有意设计)先补全 CONTRACT 再进下一轮
2. 有效可行动真问题,artifact 确实违反 contract修改 artifact,重走 DOUBT
3. 有效权衡真取舍但修复成本大于接受成本在 decisions.md 或 design.md 备注后放行,让用户看见
4. 噪音同义反复/风格偏好/对不存在场景的防御记下,跳过

消费侧详表(甄别他人评审的误报形态)可引用项目内的 AI 评审误报甄别表(如使用 Trellis 的项目在 .trellis/spec/guides/index.md「核对 AI 评审结论时」)——每条 CRITICAL/WARNING 都要回到代码里验证;该文件读不到时跳过,详表是增强材料,不阻塞五步闭环。

红旗(过程性,自查)

  • 跳过 EXTRACT 直接把结论传给了审查者
  • 审查者输出形态变成"验证/总结"而非"找错"(对抗失效,重发 prompt)
  • 3 轮后还在磨同一条发现
  • 应触发场景未触发且无用户豁免(静默跳过)
  • 2 轮以上审查有实质发现、却零条被归为可行动(在演戏质疑,停止并升级)

Signals

GitHub stars
36
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
sdlc-doubt
Source
github.com/tscarpe/claude-sdlc-skills