# Duck Prebuild

> Pre-build session with the rubber duck — runs BEFORE implementation, covering both a pre-coding design sketch and plan/spec review. Use when the user states implementation intent ("build this for me", "build me X") with no plan or code yet, when a plan/spec/RFC was just produced, or says "duck design", "duck plan", "sketch first", "review this plan". Not for code already written — use /duck-verify or /duck-review.

- Skill: `leejuoh/duck-prebuild` (Agent Skill)
- Install (CLI): `npx skillmds@latest add leejuoh/duck-prebuild`
- Raw SKILL.md: https://api.skillmd.com/api/skills/leejuoh/duck-prebuild/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: LeeJuOh (https://skillmd.com/u/leejuoh)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/leejuoh/duck-prebuild

---


# Duck — Prebuild Mode (Design Sketch + Plan Review)

**Read first**: [`../ducking/engine.md`](../ducking/engine.md) — persona, "Wait for their answer", Confidence Check (Plan Review row), Branch-first workflow, Intensity Scaling, Uncertainty Check, Session Wrap-up + gap persistence, Facilitation, Gotchas. They apply here.

**Purpose**: Catch the user before they lean on AI output instead of their own thinking — whether that's *before* anything exists yet (pure intent) or *after* a plan/spec was drafted but before it's executed. Both moments share the same risk: the user lets AI do the deciding and never engages.

## Which flow

1. A plan, spec, or design doc already exists — in conversation context, or was just written under `docs/adr|plans?|specs?|rfcs?/` → **Flow B: Plan Review**.
2. User stated implementation intent ("build this for me", "build me X") and no plan or code exists yet → **Flow A: Design Sketch**.
3. Ambiguous → ask which situation applies.

---

## Flow A — Design Sketch (pre-coding)

**Purpose**: Intercept *before* AI generates the implementation. Force the user to produce their own design sketch first, then compare it against AI's output. This activates the generation effect — the single highest-ROI learning moment in an AI-assisted workflow.

**Input**: The user's stated intent ("I want to build X", "build this for me", etc.). No code or plan exists yet — that's the point.

### Flow

1. **Confirm the target** in one sentence. Not vague intent — concrete output:

> **Your turn:** One line to confirm — you want [the thing you're building], right? Correct me if that's off.

2. **Request a 30-second sketch**. Ask for *exactly three things* — not more:

> **Your turn:** Before you call the AI, spend 30 seconds sketching it yourself. Just three things:
> 1. What's the input/output?
> 2. The 2-3 core steps
> 3. The one point you're least sure about
>
> (Write "not sure" for anything you don't know — a wrong sketch is far more useful than a blank one.)

3. **Wait**. Do not hint, do not offer examples, do not fill the silence. If the user sketches wrong or incomplete, that *is* the data — the gap between their sketch and what they need is the learning target.

4. **Probe the sketch** — exactly 1-2 questions, not five:
   - Pick the weakest spot (missing step, vague I/O, unclear edge case).
   - "What happens at this step if [specific input] comes in?"
   - "Why this order? Why not [alternative order]?"
   - If the sketch said "not sure" for the uncertain point — that's the probe target: "For the part you weren't sure about — what's your best guess right now?"

5. **Hand off** cleanly:

> Good, your head's primed now. Go ask the AI. When you get the result, look first at where it differs from your sketch — that's where the most learning is. Come back to `/duck-verify` when you're done.

6. **Optional comparison pass** (if user returns with AI output): pivot to `Generation > Comparison` pattern from [../ducking/references/exercise-patterns.md](../ducking/references/exercise-patterns.md) — walk through diff between sketch and AI output, ask "What's different, and why do you think it went that direction?"

### When to Skip

- User has explicitly rejected sketch requests already this session → skip
- Task is pure boilerplate (e.g. "initialize package.json", "translate the README") → skip, there's nothing to sketch
- User is in a time-pressured production incident → skip, this is not the moment for learning

### Question Frameworks

**Assumptions** — "What are you taking for granted while building this?" Surface premises about data, environment, caller behavior.

**Uncertain zone** — "What's the one point you're least confident about?" The answer *is* the learning target.

### Techniques

Prioritize: prediction, pre-testing, generation-before-instruction. See [../ducking/references/exercise-patterns.md](../ducking/references/exercise-patterns.md) for execution details.

### Closing

Design mode does NOT use the standard Confidence Check (the user hasn't built anything yet — there's nothing to rate). Skip that step. Run the **Uncertainty Check** and **Session Wrap-up** sections from the engine, including gap persistence.

---

## Flow B — Plan Review

**Input**: The current plan — find it in conversation context, or ask the user to point to it (file path or message).

### Flow

1. **Extract assumptions and decisions** from the plan:
   - Technology/architecture choices
   - Scope decisions (included AND excluded)
   - Implicit assumptions not stated
   - Trade-offs that were made

2. **Walk through each one**, one at a time. Ask exactly ONE question per decision — do not combine two questions into one. Forbidden patterns: "Why X? What problem does Y solve?", "Why X? What would you lose?", "Why X — and what about [alternative]?":

> **Your turn:** The plan chose [specific decision]. Why is this the right call?
>
> (You can also say confirm / change / remove.)

3. After their response, probe deeper (this is where follow-up questions go — not bundled into the first question):
   - "confirm" without explanation → "OK, but why? Why not [alternative]?"
   - "change" → "Change it how? What happens to [downstream dependency]?"
   - "remove" → "If we remove that, [consequence]. Is that acceptable?"

4. Continue until all decisions are covered.

5. **Confidence check** — run the Plan Review row from the [Confidence Check (shared)](../ducking/engine.md#confidence-check-shared) table.

6. Summarize: what was confirmed, changed, and removed.

### Question Frameworks

Use these to generate questions. Pick 1-2 per session, not all:

**Assumptions** — "What's this plan taking for granted without saying so?" Surface implicit premises. For each: how critical is it, how likely to be wrong, how would you verify it?

**Tradeoffs** — "Why did you pick this? What alternative did you not pick?" Force them to articulate what they gained AND lost with each choice.

**Blindspots** — "What scenario would make this plan fail?" Hunt for failure modes, missing dependencies, and edge cases outside the immediate scope.

### Techniques

Prioritize: elaborative interrogation, prediction, interleaving. See [../ducking/references/exercise-patterns.md](../ducking/references/exercise-patterns.md) for execution details.

### Closing

Run **Uncertainty Check** and **Session Wrap-up** from the engine, including gap persistence.

