Write an engineering design doc
Writes an engineering design doc or RFC with context, goals and non-goals, options and trade-offs, the decision, risks and a rollout plan. Use before building a change that needs review or buy-in.
A design doc exists to get the right decision made before code is written, and to record why. Reviewers need to see the problem with evidence, what is deliberately out of scope, at least two real options compared on the same criteria, and how the change will be rolled out and undone. Docs fail when they argue for a conclusion chosen in advance, when the alternatives are straw men, when numbers are invented, or when rollout and failure modes are left for later.
Write a design doc for: Only if [CONSTRAINTS] is given: Constraints: Only if [OPTIONS] is given: Options on the table: Only if [TEMPLATE] is given: Use this template's headings and fill each one:
- Before writing, check you have: who is affected and how much, the requirements that drive the design (scale, latency, consistency, availability, security, cost), and the deadline. If any of these would change the recommendation and is missing, ask up to five questions. If the user wants a draft anyway, write it with clearly marked assumptions.
- Context: the current system and the problem, with the evidence given (incidents, metrics, user reports, cost), quoted as given. If there is no evidence, write the problem as an assumption and ask for data. No invented metrics; where a number is needed and missing, write
TBD: <what to measure>. - Goals as verifiable statements ("p95 checkout latency under 300 ms at 2x current peak"), and non-goals that a reader might otherwise assume are included.
- Options: at least two real alternatives plus "do nothing or the minimal change", each described well enough to be chosen, with its strongest honest case. Compare them in one table against the drivers from step 1, plus build cost, operating cost, reversibility and team familiarity.
- Decision: the recommended option, why it wins on the drivers that matter most, and what was given up. If the author brought a proposal, it stays the subject of the doc: do not quietly design something else, and if another option scores better, say so plainly here and under Risks.
- Detailed design of the recommendation: components and responsibilities, data model and ownership, API or interface changes, key flows (a sequence diagram in Mermaid where it helps), failure modes and how each is handled, security and privacy, and observability (what is measured and alerted).
- Rollout and rollback: phases, feature flags or traffic shifting, data migration with backfill and verification, the rollback at each phase, and the signal that allows moving on.
- Risks and drawbacks of the recommendation with likelihood, impact and mitigation; then open questions, each addressed to the person or team who can answer it, or an owner placeholder.
- Present options fairly. If the user prefers one, test it against the same criteria as the others, and say plainly if another option scores better.
- Keep the doc as short as the decision allows: a reviewer should be able to read it in about 10 minutes. Cut background that does not change the decision. Use tables and lists for comparisons, prose for reasoning.
- Never invent numbers, incidents, costs, team names or deadlines.
- Mark every assumption and every figure not supplied by the user.
- Separate what you verified from what you inferred. Mark inferences as such.
- When you do not know, say "I don't know" once and state what would settle it.
Design doc
Markdown with these headings, or the template's when one is given: Title, Status (Draft), Summary (3 sentences), Context, Goals, Non-goals, Options considered (with comparison table), Decision, Detailed design, Rollout and rollback, Risks, Open questions.
Open questions for the author
Questions the author must answer and data the author must supply before review, and every TBD and assumption in the doc.
1 required value still a placeholder; the assistant will ask for it.
details
- kind
- Prompt: a task you run by name to get one finished thing back
- domain
- Software engineering
- category
- Architecture
- level
- Expert
- made for
- Software engineer, Tech lead / staff engineer, Software architect
- risk
- read-only
- version
- v1.1.0 · experimental
- reviewed
- 2026-10-02
- aliases
- write-rfc
- works in
- Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Antigravity, OpenCode, Windsurf, Zed, Continue, AGENTS.md, ChatGPT, claude.ai
use in
npx @hermes-hq/hodios install write-design-doc --target claude-codenpx skills add hermes-hq/hodios-dist --skill write-design-doc -a claude-codeclaude plugin marketplace add hermes-hq/hodios-distclaude plugin install hodios-software-engineering@hodiosThe plugin brings every entry in this domain at once.
pairs well with
All of ArchitectureSoftware architect
Acts as a pragmatic software architect who designs from requirements and constraints, names trade-offs and failure modes, and keeps designs as simple as the problem allows.
software-architectCompare design options
Compares two to four technical options against the criteria that matter, weighs reversibility and risk, and recommends one. Use when a team is stuck choosing between approaches or tools.
compare-design-optionsDesign an API contract
Designs an API contract before implementation, with operations, schemas, errors, pagination, idempotency and evolution rules. Use when adding an API that other teams or clients will call.
design-api-contractReview a system design
Reviews a design document or proposal for failure modes, scaling limits, data and consistency risks and operability gaps, and returns ranked findings. Use before a design review or before building.
review-system-designWrite an architecture decision record
Writes an architecture decision record that states one decision, the forces behind it, the options weighed and the honest consequences. Use when a significant technical choice is made or proposed.
write-adrAPI design track
Takes a new API from consumer needs to a resource model, a reviewed contract, error and versioning rules, and a mock with contract tests, pausing for approval between steps.
api-design-track