Developer pack
Claude SkillUpdated -1 days ago

Doubt-Driven Development

Run an adversarial self-review — biased to disprove, not approve — on any non-trivial design decision before committing it.

What it does

Implements the CLAIM → EXTRACT → DOUBT → RECONCILE → STOP cycle: the agent extracts the central claims in a decision (thread safety assertion, ordering invariant, API contract), runs a fresh-context adversarial-only review (issues-only output, no balanced verdict), and forces a reconcile step before any irreversible output is committed. A decision is non-trivial when its correctness depends on context the type system cannot verify, its blast radius is irreversible (production deploy, data migration, public API change), or it encodes an ordering invariant a future reader cannot see. If the reviewer finds nothing, the original stands — zero findings is a valid outcome and should not be forced. Distinct from ai-output-verifier (post-hoc verification of AI-generated code output) and threat-model-builder (architectural security analysis): this skill runs mid-flight on the engineer's own design decisions, not on AI-generated artefacts or security surfaces.

When to use

  • Before committing any public API contract, database migration, or deployment configuration change — the irreversibility threshold triggers it
  • When a decision encodes a concurrency invariant (lock ordering, idempotency guarantee, event ordering) that the compiler cannot enforce
  • When a design choice depends on context (upstream service behaviour, deployment environment, user-visible side effects) that a future reader would not have

When not to use

  • Routine changes where the type system fully specifies correctness — renaming a local variable, adding a UI string, bumping a well-tested dependency
  • Prototyping phases where no output is irreversible — adding doubt-checking overhead to throwaway code slows discovery without protecting anything

Install

Download the .zip, then unzip into your Claude skills folder.

mkdir -p ~/.claude/skills
unzip ~/Downloads/doubt-driven-development.zip -d ~/.claude/skills/

# Restart Claude Code session.
# Skill is now available — Claude will use it when relevant.

SKILL.md

SKILL.md
---
name: doubt-driven-development
description: Use when reviewing a non-trivial design decision before committing it. Triggers on "is this safe to ship", "check this design", "review my API contract", or when a decision has irreversible blast radius — data migration, public API change, production deploy, concurrency invariant.
---

# Doubt-Driven Development

The engineer who made a design decision is the last person who will spot its flaw — they have already reasoned themselves into it. This skill inserts a fresh-context adversarial reviewer mid-flight, before the irreversible step.

## When this applies

A decision is non-trivial when any of these hold:

- Correctness depends on context the type system cannot verify: ordering invariants, idempotency guarantees, upstream service behavior
- Blast radius is irreversible: production deploy, data migration, public API contract change
- It encodes a concurrency invariant a future reader will not see

Routine changes — renaming a local variable, bumping a well-tested dependency, adding a UI string — do not need this review.

## The cycle

### CLAIM
State the irreversible action in one sentence. Not the intent — the action. "The migration drops and recreates `user_sessions` with a new composite index."

### EXTRACT
List the central claims the decision depends on. Two to five claims:
- Invariants that must hold ("no in-flight sessions at cutover")
- Contracts with external actors ("OAuth provider re-issues tokens on next login")
- Ordering assumptions ("migration runs before new code deploys")

If you cannot name the claims, you do not yet understand the decision well enough to commit it.

### DOUBT
Switch to adversarial-only framing. The reviewer's job is to find failures.

Rules:
- Output issues only — no balanced verdict, no "on the other hand"
- For each claim: "Under what condition does this fail? Who else depends on this? What breaks if the ordering is wrong?"
- Do not soften findings to avoid conflict

If the review finds nothing, that is a valid outcome. Do not manufacture doubt to fill the section.

### RECONCILE
For each issue:
- **Blocker**: stop and rethink the decision
- **Manageable**: proceed with a specific mitigation

Specific mitigations: "check for in-flight sessions before the DROP", "add a maintenance window", "gate the deploy behind job completion status." Not "be careful."

### STOP
End when all blockers are resolved or zero issues were found. One pass through the cycle. If RECONCILE surfaces a new major issue, restart from CLAIM with a revised decision — not another DOUBT pass on the same design.

## Output format

```
## Decision
[One-sentence irreversible action]

## Claims extracted
1. [Claim]
2. [Claim]

## Doubt pass — issues only
- [Issue: specific failure condition for claim 1]
- [Issue: specific failure condition for claim 2]
(Empty if no issues found — valid result)

## Reconcile
- [Issue] → Blocker | Manageable
  Mitigation: [specific action]

## Verdict
PROCEED | STOP + rethink
[One sentence: what changes before committing, if anything]
```

## Scope

This skill runs on the engineer's own design decisions before commitment. It is not:
- Post-hoc verification of AI-generated code (use ai-output-verifier)
- Architectural security threat analysis (use threat-model-builder)
- Code review of existing code (use code-review-helper)

Use it when the decision, not the code, is what needs pressure-testing.

Example prompts

Once installed, try these prompts in Claude:

  • Run doubt-driven-development on this migration: I'm dropping the `user_sessions` table and re-creating it with a new composite index. Walk me through CLAIM → EXTRACT → DOUBT → RECONCILE for the three riskiest invariants.
  • I'm about to publish a new REST endpoint — POST /api/v2/transfers. Use doubt-driven-development to cross-examine my API contract: is idempotency guaranteed? Are there ordering risks? Flag issues only — no strengths summary needed.
Recent changes
  • Jun 24, 2026New skill — Doubt-Driven Development: CLAIM→EXTRACT→DOUBT→RECONCILE→STOP adversarial review cycle for non-trivial design decisions before irreversible commits.