Use when designing, architecting, or planning a new system from requirements or ideas - transforms concepts into navigable design catalog using EventStorming methodology, Mermaid diagrams, and progressive elaboration through 5 phases (Requirements, Big Picture, Processes, Data/Flows, Integration)
Transforms system requirements into navigable design catalogs using EventStorming methodology and Mermaid diagrams across 5 progressive phases. Use when designing new systems from scratch, before implementation begins.
/plugin marketplace add lagz0ne/design-skill/plugin install system-design@design-skill-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
templates/big-picture-template.mmdtemplates/catalog-readme-template.mdtemplates/erd-template.mmdtemplates/process-template.mmdtemplates/requirements-template.mdtemplates/sequence-template.mmdtemplates/state-template.mmdTransform requirements into navigable design catalogs using EventStorming methodology and Mermaid diagrams.
Core principle: Progressive elaboration through event-driven thinking, producing token-efficient visual artifacts in standardized catalog structure.
Announce at start: "I'm using the system-design skill to create a design catalog for your system."
Use when:
Don't use when:
| Phase | Key Activities | Output Files |
|---|---|---|
| 1. Requirements | Ask questions, identify actors/constraints | requirements.md |
| 2. Big Picture | EventStorming timeline with events/commands | big-picture.mmd |
| 3. Processes | Zoom into critical processes, add aggregates | process-{name}.mmd |
| 4. Data & Flows | ERD, state charts, sequences | erd.mmd, state-{entity}.mmd, sequence-{flow}.mmd |
| 5. Integration | Generate catalog README | README.md |
NEVER make "industry-standard assumptions" without asking the user first.
Bad:
❌ "I'll assume standard PostgreSQL for data storage"
❌ "Proceeding with industry-standard assumptions"
❌ "I'll design for moderate scale (10K users)"
Good:
✅ "What database are you currently using?" (AskUserQuestion with options)
✅ "What scale are you targeting?" (AskUserQuestion: 100 users / 10K / 100K+)
✅ "Budget constraints for infrastructure?" (Ask directly)
All diagrams MUST use Mermaid format. NO exceptions.
Bad:
❌ ASCII art entity relationships
❌ Text-based flowcharts
❌ "I'll create ASCII diagrams because they're universal"
Good:
✅ Mermaid ER diagrams
✅ Mermaid flowcharts
✅ Mermaid sequence diagrams
✅ Mermaid state charts
Use EventStorming methodology for Phases 2-3. Required.
Bad:
❌ "Using traditional waterfall analysis"
❌ "Creating use cases and functional specs"
❌ "Based on proven patterns" (without events)
Good:
✅ "Let's identify key business events" (EventStorming)
✅ "What triggers each event?" (Commands)
✅ "What data changes when this event happens?" (Aggregates)
All artifacts go into docs/design-catalog/ with specific structure.
docs/design-catalog/
README.md # Navigation hub
requirements.md
big-picture.mmd
processes/
process-{name}.mmd
data/
erd.mmd
state-{entity}.mmd
flows/
sequence-{flow}.mmd
No random file names. No mixed concerns.
Stay at design abstraction. NO implementation details in design phase.
Forbidden in design artifacts:
Allowed:
Prefer Mermaid diagrams over lengthy text descriptions.
Token targets by project complexity:
If exceeding targets, check:
Bad:
❌ 4,000 lines of documentation
❌ Verbose explanations of every decision
❌ Repeating information across files
❌ "This is complex so 50K tokens is reasonable"
Good:
✅ Mermaid diagram with annotations
✅ Cross-reference: "See big-picture.mmd for event flow"
✅ Tables for entity attributes
✅ Minimal prose, maximum visual clarity
REQUIRED: Use TodoWrite to track phase progress.
Copy this checklist:
System Design Progress:
- [ ] Phase 1: Requirements (actors, constraints, goals identified)
- [ ] Phase 2: Big Picture (EventStorming timeline created)
- [ ] Phase 3: Processes (Critical processes detailed)
- [ ] Phase 4: Data & Flows (ERD, state charts, sequences created)
- [ ] Phase 5: Integration (Catalog assembled, next steps planned)
Goal: Understand context before designing
Activities:
Questions to ask:
Output: Create docs/design-catalog/requirements.md
Validation: Present requirements summary, ask: "Does this capture the scope?"
Goal: Understand business process through events
Announce: "Let's explore the business process through EventStorming."
Activities:
EventStorming Color Conventions (Mermaid):
flowchart LR
%% Style definitions
classDef event fill:#ff9800,stroke:#e65100,color:#000
classDef command fill:#2196f3,stroke:#0d47a1,color:#fff
classDef actor fill:#ffeb3b,stroke:#f57f17,color:#000
classDef system fill:#9c27b0,stroke:#4a148c,color:#fff
classDef aggregate fill:#4caf50,stroke:#1b5e20,color:#fff
classDef hotspot fill:#f44336,stroke:#b71c1c,color:#fff
Actor[Customer]:::actor
Cmd1[Place Order]:::command
Evt1[Order Placed]:::event
Agg1[Order]:::aggregate
Sys1[Payment Gateway]:::system
Hot1[? Refund policy unclear]:::hotspot
Actor --> Cmd1
Cmd1 --> Evt1
Evt1 --> Agg1
Agg1 --> Sys1
Evt1 -.question.- Hot1
Output: Create docs/design-catalog/big-picture.mmd
Validation: Present diagram, ask: "Does this capture the high-level flow?"
Goal: Detail specific processes from big picture
Activities:
Criteria for "critical" processes:
Output: Create docs/design-catalog/processes/process-{name}.mmd (one per process)
Validation: Review each process diagram before moving to next
Goal: Model data, state, and interactions
4.1 Entity-Relationship Diagram
Output: docs/design-catalog/data/erd.mmd
4.2 State Charts
Output: docs/design-catalog/data/state-{entity}.mmd (one per entity)
4.3 Sequence Diagrams
Output: docs/design-catalog/flows/sequence-{flow}.mmd (one per flow)
Don't diagram everything - focus on what adds clarity.
Validation: Present all artifacts, ask: "Does this design feel complete?"
Goal: Assemble catalog and plan next actions
Activities:
CRITICAL: The README must include the FULL Mermaid diagram content inline, not just links. Copy the entire contents of each .mmd file into the README's mermaid code blocks. This enables preview without opening individual files.
Options:
Output: docs/design-catalog/README.md (with all diagrams embedded)
User can jump back to earlier phases when insights emerge.
Support non-linear progression:
Flexibility principle: Design is discovery - support iteration
See templates/ directory for:
big-picture-template.mmd - EventStorming timelineprocess-template.mmd - Process EventStormingerd-template.mmd - Entity-Relationshipstate-template.mmd - State chartsequence-template.mmd - Sequence diagramrequirements-template.md - Requirements structurecatalog-readme-template.md - Catalog README| Excuse | Reality |
|---|---|
| "Industry-standard assumptions are fine" | Ask questions to understand THIS project |
| "ASCII diagrams are version control friendly" | Mermaid is required - renders AND version controls |
| "Comprehensive documentation is better" | Token-efficient diagrams beat verbose prose |
| "Traditional approach works" | EventStorming reveals events you'd miss otherwise |
| "Production-ready blueprint needed" | Design phase stays conceptual, not implementation |
| "All aspects should be covered" | Focus on design artifacts, defer implementation |
| "Database schema helps developers" | Too early - stay at entity/relationship level |
| "Technology choices are obvious" | Mark as hotspot or ask user, don't assume |
If you catch yourself doing ANY of these, you're violating the skill:
All of these mean: Stop, re-read the skill, start over correctly.
Design is successful when:
flowchart LR
%% Styles
classDef event fill:#ff9800,stroke:#e65100,color:#000
classDef command fill:#2196f3,stroke:#0d47a1,color:#fff
classDef actor fill:#ffeb3b,stroke:#f57f17,color:#000
classDef system fill:#9c27b0,stroke:#4a148c,color:#fff
classDef hotspot fill:#f44336,stroke:#b71c1c,color:#fff
%% Actors
Customer[Customer]:::actor
Seller[Seller]:::actor
%% Commands & Events
Browse[Browse Products]:::command
Add[Add to Cart]:::command
Checkout[Checkout]:::command
ProductViewed[Product Viewed]:::event
ItemAdded[Item Added to Cart]:::event
OrderPlaced[Order Placed]:::event
PaymentProcessed[Payment Processed]:::event
%% Systems
PaymentGW[Payment Gateway]:::system
%% Hotspots
Hot1[? Refund policy unclear]:::hotspot
Hot2[? Inventory sync timing?]:::hotspot
%% Flow
Customer --> Browse
Browse --> ProductViewed
Customer --> Add
Add --> ItemAdded
Customer --> Checkout
Checkout --> OrderPlaced
OrderPlaced --> PaymentProcessed
PaymentProcessed --> PaymentGW
OrderPlaced -.question.- Hot1
ItemAdded -.question.- Hot2
This is minimal - real design would be more detailed. But shows the pattern.
System design through EventStorming:
Result: Navigable design catalog that feeds into implementation planning.