| name | duck-prebuild |
| disable-model-invocation | true |
| description | 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. |
| allowed-tools | Read Grep Glob Bash(bash ${CLAUDE_PLUGIN_ROOT}/skills/ducking/scripts/log-gap.sh *) Bash(bash ${CLAUDE_PLUGIN_ROOT}/skills/ducking/scripts/read-config.sh *) |
Duck — Prebuild Mode (Design Sketch + Plan Review)
Read first: ../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
- 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.
- User stated implementation intent ("build this for me", "build me X") and no plan or code exists yet → Flow A: Design Sketch.
- 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
- 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.
- 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:
- What's the input/output?
- The 2-3 core steps
- 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.)
-
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.
-
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?"
-
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.
- Optional comparison pass (if user returns with AI output): pivot to
Generation > Comparison pattern from ../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 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
-
Extract assumptions and decisions from the plan:
- Technology/architecture choices
- Scope decisions (included AND excluded)
- Implicit assumptions not stated
- Trade-offs that were made
-
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.)
-
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?"
-
Continue until all decisions are covered.
-
Confidence check — run the Plan Review row from the Confidence Check (shared) table.
-
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 for execution details.
Closing
Run Uncertainty Check and Session Wrap-up from the engine, including gap persistence.