A Technical Design Doc Prompt That Holds the RFC Structure
A reusable technical design doc prompt that locks the RFC structure: context, scored options, failure modes, rollout. Includes model behavior on long docs.
A technical design doc prompt earns its keep when it stops every author from inventing a new doc structure. Context, the options you considered, why you picked one, what breaks, how you roll it out. Same shape every time, so reviewers know where to look. The hard part isn't writing prose. It's holding that structure across a long document without a section quietly going missing.
The tools online fall into two buckets. Conversational generators that ask you twenty questions and hand back a doc. Galleries of example RFCs from big companies, useful for inspiration, useless as a reusable prompt. Neither gives you a locked output contract you can run on every design, which is the thing that actually makes the docs comparable.
This covers a prompt that fixes the section order, the model behavior on long docs, and why the clarifying-question loop is usually a trap.
What you can do with this prompt
- Turn a rough proposal into a full RFC skeleton in one pass
- Force a real "alternatives considered" section instead of one option dressed up
- Score tradeoffs against named criteria so the decision is defensible
- Surface failure modes before code, not in the postmortem
- Mark unknowns as open questions instead of letting the model guess
- Keep every team doc in the same shape so reviews go faster
Why the structure drifts on long docs
A design doc is a long, multi-section artifact, and that's exactly where models get sloppy. Early sections come back rich and detailed. By section nine the model starts compressing, merging headings, or dropping a section it covered implicitly. You don't notice until a reviewer asks where the rollback plan went.
The fix is an output contract that lists every required section, placed where the model still pays attention to it. On long generations that means near the end of the prompt, not buried at the top.
The section everyone skips is "alternatives considered," and it's the one that makes the doc worth writing. A design with one option isn't a design; it's a decision already made, looking for a rubber stamp. Force the prompt to produce at least two real alternatives with honest tradeoffs, including the option you rejected and why. That's where reviewers catch the assumption you didn't know you'd made.
Anatomy of the prompt
Variables
{{proposal}} — the rough feature or system idea
{{constraints}} — known limits (stack, deadline, team size)
{{criteria}} — what to score options against (e.g. cost, risk, speed)
Prompt
Role: staff engineer writing an RFC for design review.
Task: turn {{proposal}} into a design doc. Produce at least two
real alternatives scored against {{criteria}}. Mark anything you
don't know from {{proposal}} or {{constraints}} as "OPEN QUESTION",
never a guess.
Output contract (every section, in this order)
1. Context and problem
2. Goals / non-goals
3. Proposed design
4. Alternatives considered (>= 2, scored)
5. Failure modes and mitigations
6. Rollout and rollback plan
7. Open questions
The "mark unknowns as OPEN QUESTION" rule is what makes the draft trustworthy. A model told to write a complete doc will fill gaps with confident invention. A model told to flag gaps hands you a map of what still needs a human decision.
How models behave on this specific job
Behavior on holding a long, multi-section doc, not on reasoning quality alone:
| Behavior on design-doc writing | Claude | ChatGPT (GPT-4o) |
|---|---|---|
| Holds all sections across a long doc | Steady; rarely drops a heading | Compresses or merges later sections unless the contract is restated near the end |
| Produces genuinely distinct alternatives | Strong; two real options | Strong, but second option sometimes restates the first |
| Flags unknowns instead of guessing | Reliable with the rule | Reliable with the rule; guesses more without it |
| Scores tradeoffs against named criteria | Consistent table | Consistent table |
The honest read: GPT-4o reasons well inside a section but loses the macro structure on long docs, so the section contract has to stay near the end of the prompt where it still has weight. Claude holds structure better but will occasionally write two "alternatives" that are the same idea with different words. Read the alternatives section critically regardless of model.
1. Write the proposal rough
Drop the unpolished idea into {{proposal}}. A paragraph is enough. The prompt's job is to impose structure, so you don't need to pre-structure it.
2. State the constraints
{{constraints}} is where the real design lives. Stack, deadline, team size, the thing you can't change. The model can't infer your on-call rotation or your latency budget, so tell it.
3. Name the scoring criteria
{{criteria}} turns "this option is better" into "this option scores higher on cost and risk." Pick three. More than that and the table becomes noise.
4. Run and audit the alternatives
Go straight to the alternatives section. If the two options are the same idea twice, regenerate with a sharper criteria list. This section is the doc's reason to exist.
5. Resolve the open questions
The open-questions list is your to-do, not the model's failure. Each one is a decision a human has to make. Resolving them is the actual design work; the model just framed it.
Variables you'll set
| Variable | Required | What it is |
|---|---|---|
{{proposal}} | Yes | The rough feature or system idea |
{{constraints}} | Yes | Known limits: stack, deadline, team size, hard requirements |
{{criteria}} | No | What to score options against; defaults to cost, risk, and effort |
An opinion worth holding
Skip the clarifying-question loop. The generators that ask you twenty questions before writing feel rigorous, but they stall the draft and the questions are usually things you'd have written into the doc anyway. A complete skeleton with gaps flagged as open questions beats an interrogation, because you can see the whole shape and fill the real decisions in context. Drafting is faster when you're editing a structure than when you're answering a quiz.
This is also why a reusable prompt beats a one-off. The section contract, the alternatives rule, the open-question convention all live in the prompt, not in the head of whoever wrote the doc last. New engineers inherit the standard for free.
Getting started
- Copy the skeleton into your model.
- Paste one real proposal into
{{proposal}}and fill{{constraints}}. - Name three scoring criteria.
- Run it, then audit the alternatives section for two genuinely distinct options.
- Treat the open questions as your design to-do list.
- For a workflow that scores tradeoffs and maps failure modes as a system, use a pack built for review, like the Technical Design Review Playbook.
The Technical Design Review Playbook turns a proposal into a full review package: clarified requirements, scored tradeoffs, mapped failure modes, and a phased execution plan, with the {{criteria}} scoring and the alternatives rule already locked into the contract. It's part of The Complete AI Prompts Bundle, a one-time lifetime license to the whole catalog plus every pack added later, which is worth it if design review is a recurring job rather than a one-off.
Once the design is approved, the next step is turning it into guarded execution. The Spec-to-Code Harness takes a settled spec into a verified implementation plan, which picks up where the RFC leaves off. For the planning lens, the comparison of o3 vs Claude for planning covers which model holds a multi-step plan, and the spec-driven development walkthrough shows the handoff to an agent.
Browse all engineering prompt packs →Common questions
What is a technical design doc prompt?
Should the prompt write the whole doc or ask clarifying questions first?
Does Claude or ChatGPT hold a long design doc better?
Get the prompt packs this guide is built on
Ready-to-paste prompts with documented variables and usage guides for ChatGPT, Claude, and Gemini. One-time payment, own it forever.
More prompt guides

Gemini vs Claude for Long-Context Code: Window or Accuracy
The honest framing of Gemini vs Claude for long-context code isn't which model is smarter. It's a tradeoff between two different things: how much code you can fit in one prompt, and how often the mode…

An OKR Drafting Prompt That Catches Vanity Key Results
An OKR drafting prompt has to fight the model's strongest instinct: handing back something that sounds like a goal but can't be measured. Ask any model for key results and you'll get "increase user en…

A Customer-Facing Release Notes Prompt That Drops the Jargon
A customer-facing release notes prompt has one job the engineering changelog never had: talk to someone who doesn't read code. "Refactored the auth middleware" means nothing to a user. "Sign-in is fas…