Design System
Input: $ARGUMENTS
Overview
Complete system design workflow — composes multiple sub-procedures to go from requirements gathering through design generation, evaluation, selection, and verification.
Steps
Step 1: Gather Requirements
Define what the system must do:
-
Functional requirements (what it does):
- FR1: [capability]
- FR2: [capability]
-
Performance requirements (how well):
- PR1: [metric and threshold]
- PR2: [metric and threshold]
-
Interface requirements (how it connects):
- IR1: [input/output/protocol]
- IR2: [input/output/protocol]
-
Constraints (non-negotiable):
- Budget: [amount]
- Timeline: [deadline]
- Technology: [must use/cannot use]
- Regulatory: [compliance requirements]
-
Quality attributes:
- Reliability, scalability, maintainability, security, usability
- Which matter most? Rank them.
→ INVOKE: /rqg (requirements gathering) for thorough elicitation
Step 2: Check for Existing Solutions
Before designing from scratch:
- Does a complete solution already exist? (Buy vs build)
- Does a partial solution exist that can be adapted?
- Are there reference architectures or patterns for this type of system?
- What have others done for similar problems?
→ INVOKE: /ans (analogous solutions) for cross-domain search
Step 3: Decide Design Path
Based on Step 2:
| Situation | Path |
|---|---|
| Complete solution exists and fits | Adapt existing (Step 4) |
| Partial solution or pattern exists | Adapt + extend (Steps 4 + 5) |
| Nothing exists | Design from scratch (Steps 5-8) |
Step 4: Adapt Existing Solution
If adapting:
- What does the existing solution provide?
- What gaps remain vs your requirements?
- What modifications are needed?
- What are the risks of modifying? (Breaking what works)
- Is the adaptation cost less than building from scratch?
Step 5: Generate Design Options
Create 2-3 distinct design approaches:
For each design option:
DESIGN OPTION [N]:
Name: [descriptive label]
Architecture: [high-level structure]
Key components: [major parts and their roles]
Technology choices: [what tools/frameworks/platforms]
Key tradeoff: [what this design optimizes for at the expense of]
Design generation techniques:
- Decompose by function (each component does one thing)
- Decompose by data (each component owns its data)
- Decompose by user (each component serves one user type)
- Reference architectures (adapt known patterns)
- → INVOKE: /ma (morphological analysis) for systematic variation
Step 6: Evaluate Design Candidates
Compare options against requirements:
| Requirement | Design A | Design B | Design C |
|---|---|---|---|
| FR1 | [meets/partially/fails] | ||
| PR1 | [meets/partially/fails] | ||
| Cost | [estimate] | [estimate] | [estimate] |
| Complexity | [H/M/L] | [H/M/L] | [H/M/L] |
| Risk | [H/M/L] | [H/M/L] | [H/M/L] |
→ INVOKE: /crw (criteria weighted ranking) for systematic comparison
Step 7: Select Best Design
Based on evaluation:
- Which design meets the most requirements?
- Which has the lowest risk?
- Which is most feasible given constraints?
- Document the rationale for selection
- Document why alternatives were rejected (for future reference)
Step 8: Verify Design
Before implementation:
- Requirements trace: Can every requirement be traced to a design element?
- Completeness: Are there design elements with no corresponding requirement? (Over-design)
- Consistency: Do design elements conflict with each other?
- Feasibility: Can each element actually be built with available resources?
- Risk: What are the highest-risk elements? Plan to prototype those first.
→ INVOKE: /vp (verification procedures) for systematic verification
Step 9: Report
SYSTEM DESIGN:
Requirements: [N functional, N performance, N interface, N constraints]
Design path: [adapt existing / extend / from scratch]
Selected design: [name]
Architecture: [high-level description]
Key components:
| Component | Function | Technology | Risk |
|-----------|----------|-----------|------|
| [component] | [what it does] | [how built] | [H/M/L] |
Alternatives rejected: [which and why]
Verification:
- Requirements coverage: [N/N mapped]
- Consistency: [issues found]
- Feasibility: [issues found]
Implementation priority: [what to build first — highest risk elements]
When to Use
- Designing a new system from requirements
- Creating architecture for complex multi-component projects
- When multiple design options need systematic evaluation
- When design decisions need documented rationale
- → INVOKE: /rqg for requirements, /dsn for design principles, /enc for engineering conventions
Verification
- Requirements gathered before design generation
- Existing solutions checked before designing from scratch
- At least 2 design candidates evaluated
- Evaluation uses explicit criteria tied to requirements
- Selected design verified against original requirements
- All design decisions have documented rationale