api-and-interface-desi…
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Subjects every non-trivial decision to a fresh-context adversarial review before it stands. Use when you want every assumption cross-examined before proceeding, when stress-testing a plan for hidden failure modes, when correctness matters more than speed, when working in
Claude Code
$ npx -y skills add addyosmani/agent-skills --skill doubt-driven-development --agent claude-code
Codex
$ npx skills add addyosmani/agent-skills --skill doubt-driven-development -a codex -y
Cursor
$ npx skills add addyosmani/agent-skills --skill doubt-driven-development -a cursor -y
Gemini CLI
$ npx skills add addyosmani/agent-skills --skill doubt-driven-development -a gemini-cli -y
GitHub Copilot
$ npx skills add addyosmani/agent-skills --skill doubt-driven-development -a github-copilot -y
OpenCode
$ npx skills add addyosmani/agent-skills --skill doubt-driven-development -a opencode -y
Windsurf
$ npx skills add addyosmani/agent-skills --skill doubt-driven-development -a windsurf -y
name: doubt-driven-development description: Subjects every non-trivial decision to a fresh-context adversarial review before it stands. Use when you want every assumption cross-examined before proceeding, when stress-testing a plan for hidden failure modes, when correctness matters more than speed, when working in unfamiliar code, when stakes are high (production auth, security-sensitive logic, a high-stakes migration, irreversible operations), or any time a confident output would be cheaper to verify now than to debug later.
A confident answer is not a correct one. Long sessions accumulate context that quietly turns assumptions into "facts" without anyone noticing. Doubt-driven development is the discipline of materializing a fresh-context reviewer — biased to **disprove**, not approve — before any non-trivial output stands.
This is not `/review`. `/review` is a verdict on a finished artifact. This is an in-flight posture: non-trivial decisions get cross-examined while course-correction is still cheap.
A decision is **non-trivial** when at least one of these is true:
Apply the skill when:
**When NOT to use:**
If you doubt every keystroke, you ship nothing. The skill applies only to non-trivial decisions as defined above.
This skill is designed for the **main-session orchestrator**, where Step 3 (DOUBT, detailed below) can spawn a fresh-context reviewer.
Copy this checklist when applying the skill:
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)
Name the decision in two or three lines:
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.If you can't write the claim that compactly, you have a vibe, not a decision. Surface it before scrutinizing it.
A fresh-context reviewer needs the **artifact** and the **contract**, not the journey.
Strip your reasoning. If you hand over conclusions, you'll get back validation of your conclusions. The unit must be small enough that a reviewer can hold it in mind in one read — if it's a 500-line PR, decompose first.
Strip reasoning, not evidence: if a caller, guard or test contradicts the claim, include it in the unit.
The reviewer's prompt **must be adversarial**. Framing decides the answer.
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>
**Pass ARTIFACT + CONTRACT only. Do NOT pass the CLAIM.** Handing the reviewer your conclusion biases it toward agreement. The reviewer must independently determine whether the artifact satisfies the contract.
In Claude Code, the role-based reviewers in `agents/` start with isolated context by design and are usable here — see `agents/` for the roster and per-domain match.
**The adversarial prompt above takes precedence over the persona's default response shape.** Personas like `code-reviewer
Production-grade engineering skills for AI coding agents. Skills encode the workflows, quality gates, and best practices that senior engineers use when building software.
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Tests in real browsers via Chrome DevTools MCP. Use when building or debugging anything that runs in a browser. Use when you need…
Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate…
Conducts multi-axis code review. Use before merging any change. Use when reviewing code written by yourself, another agent, or a…
Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder…
Establishes a project's quality bar as a written contract and stops agents quietly lowering it. Interviews the user on which…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.