Mermaid Diagramming
Create professional software diagrams using Mermaid's text-based syntax. Mermaid renders diagrams from simple text definitions, making diagrams version-controllable, easy to update, and maintainable alongside code.
Core Syntax Structure
All Mermaid diagrams follow this pattern:
diagramType
definition content
Key principles:
- First line declares diagram type (e.g.,
classDiagram, sequenceDiagram, flowchart)
- Use
%% for comments
- Line breaks and indentation improve readability but aren't required
- Unknown words break diagrams; parameters fail silently
Diagram Type Selection Guide
Choose the right diagram type:
Class Diagrams - Domain modeling, OOP design, entity relationships
- Domain-driven design documentation
- Object-oriented class structures
- Entity relationships and dependencies
Sequence Diagrams - Temporal interactions, message flows
- API request/response flows
- User authentication flows
- System component interactions
- Method call sequences
Flowcharts - Processes, algorithms, decision trees
- User journeys and workflows
- Business processes
- Algorithm logic
- Deployment pipelines
Entity Relationship Diagrams (ERD) - Database schemas
- Table relationships
- Data modeling
- Schema design
C4 Diagrams - Software architecture at multiple levels
- System Context (systems and users)
- Container (applications, databases, services)
- Component (internal structure)
- Code (class/interface level)
State Diagrams - State machines, lifecycle states
Git Graphs - Version control branching strategies
Gantt Charts - Project timelines, scheduling
Pie/Bar Charts - Data visualization
Quick Start Examples
Class Diagram (Domain Model)
classDiagram
Title -- Genre
Title *-- Season
Title *-- Review
User --> Review : creates
class Title {
+string name
+int releaseYear
+play()
}
class Genre {
+string name
+getTopTitles()
}
Sequence Diagram (API Flow)
sequenceDiagram
participant User
participant API
participant Database
User->>API: POST /login
API->>Database: Query credentials
Database-->>API: Return user data
alt Valid credentials
API-->>User: 200 OK + JWT token
else Invalid credentials
API-->>User: 401 Unauthorized
end
Flowchart (User Journey)
flowchart TD
Start([User visits site]) --> Auth{Authenticated?}
Auth -->|No| Login[Show login page]
Auth -->|Yes| Dashboard[Show dashboard]
Login --> Creds[Enter credentials]
Creds --> Validate{Valid?}
Validate -->|Yes| Dashboard
Validate -->|No| Error[Show error]
Error --> Login
ERD (Database Schema)
erDiagram
USER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
PRODUCT ||--o{ LINE_ITEM : includes
USER {
int id PK
string email UK
string name
datetime created_at
}
ORDER {
int id PK
int user_id FK
decimal total
datetime created_at
}
Detailed References
For in-depth guidance on specific diagram types, see:
- references/class-diagrams.md - Domain modeling, relationships (association, composition, aggregation, inheritance), multiplicity, methods/properties
- references/sequence-diagrams.md - Actors, participants, messages (sync/async), activations, loops, alt/opt/par blocks, notes
- references/flowcharts.md - Node shapes, connections, decision logic, subgraphs, styling
- references/erd-diagrams.md - Entities, relationships, cardinality, keys, attributes
- references/c4-diagrams.md - System context, container, component diagrams, boundaries
- references/advanced-features.md - Themes, styling, configuration, layout options
Best Practices
- Start Simple - Begin with core entities/components, add details incrementally
- Use Meaningful Names - Clear labels make diagrams self-documenting
- Comment Extensively - Use
%% comments to explain complex relationships
- Keep Focused - One diagram per concept; split large diagrams into multiple focused views
- Version Control - Store
.mmd files alongside code for easy updates
- Add Context - Include titles and notes to explain diagram purpose
- Iterate - Refine diagrams as understanding evolves
Editorial Style Rules
Mermaid 자동 레이아웃을 쓰더라도 아래 규칙을 지키면 "AI 기본 출력" 느낌을 크게 줄일 수 있습니다
(diagram-design 모듈에서 이식한 압축본. 완전한 에디토리얼 렌더링이 필요하면
skills/diagram-design/SKILL.md 표현 계층을 사용하세요).
- 액센트는 1~2개 노드만:
classDef accent를 핵심 노드(happy path의 결정점, 최종 산출물)에만
적용. 모든 분기·에러에 색을 칠하면 신호가 사라집니다. 나머지는 기본 스타일 유지.
- 밀도 예산: 사람에게 보여줄 다이어그램은 노드 9개 이하 목표. 초과하면 개요 1장 + 상세 N장으로
분할합니다. (파이프라인 검증용
.mmd는 기존 20개 제한 유지 — 용도가 다름)
- 도형이 타입을 말하게: 시작/끝
([ ]), 처리 [ ], 분기 { }, 서브루틴 [[ ]].
색으로 노드 타입을 구분하지 않습니다.
- 분기 레이블 필수: decision에서 나가는 모든 화살표에
|Yes|/|No| 등 레이블. 출구 4개 이상인
분기는 중첩 분기로 리팩터링.
- 색 토큰: 순수
#000/#fff 대신 near-black(#2d3142)·off-white(#f5f5f5). 액센트는
프로젝트 DESIGN.md 토큰이 있으면 그것을, 없으면 한 가지 hue만.
---
config:
theme: base
themeVariables:
primaryColor: "#f5f5f5"
primaryTextColor: "#2d3142"
primaryBorderColor: "#4f5d75"
lineColor: "#4f5d75"
---
flowchart TD
A([시작]) --> B{유효?}
B -->|Yes| C[처리]
B -->|No| D[거부]
C --> E([완료])
classDef accent stroke:#eb6c36,stroke-width:2px
class E accent
Configuration and Theming
Configure diagrams using frontmatter:
---
config:
theme: base
themeVariables:
primaryColor: "#ff6b6b"
---
flowchart LR
A --> B
Available themes: default, forest, dark, neutral, base
Layout options:
layout: dagre (default) - Classic balanced layout
layout: elk - Advanced layout for complex diagrams (requires integration)
Look options:
look: classic - Traditional Mermaid style
look: handDrawn - Sketch-like appearance
Exporting and Rendering
Native support in:
- GitHub/GitLab - Automatically renders in Markdown
- VS Code - With Markdown Mermaid extension
- Notion, Obsidian, Confluence - Built-in support
Export options:
- Mermaid Live Editor - Online editor with PNG/SVG export
- Mermaid CLI -
npm install -g @mermaid-js/mermaid-cli then mmdc -i input.mmd -o output.png
- Docker -
docker run --rm -v $(pwd):/data minlag/mermaid-cli -i /data/input.mmd -o /data/output.png
Common Pitfalls
- Breaking characters - Avoid
{} in comments, use proper escape sequences for special characters
- Syntax errors - Misspellings break diagrams; validate syntax in Mermaid Live
- Overcomplexity - Split complex diagrams into multiple focused views
- Missing relationships - Document all important connections between entities
When to Create Diagrams
Always diagram when:
- Starting new projects or features
- Documenting complex systems
- Explaining architecture decisions
- Designing database schemas
- Planning refactoring efforts
- Onboarding new team members
Use diagrams to:
- Align stakeholders on technical decisions
- Document domain models collaboratively
- Visualize data flows and system interactions
- Plan before coding
- Create living documentation that evolves with code
1---2name: mermaid-diagrams3description: Create Mermaid software diagrams: flowcharts, sequence, class, ERD, C4, state, git, pie, and gantt; use for diagram, visualize, model, map out, show the flow, architecture, database, code, or user-flow docs.4---56# Mermaid Diagramming78Create professional software diagrams using Mermaid's text-based syntax. Mermaid renders diagrams from simple text definitions, making diagrams version-controllable, easy to update, and maintainable alongside code.910## Core Syntax Structure1112All Mermaid diagrams follow this pattern:1314```mermaid15diagramType16 definition content17```1819**Key principles:**20- First line declares diagram type (e.g., `classDiagram`, `sequenceDiagram`, `flowchart`)21- Use `%%` for comments22- Line breaks and indentation improve readability but aren't required23- Unknown words break diagrams; parameters fail silently2425## Diagram Type Selection Guide2627**Choose the right diagram type:**28291. **Class Diagrams** - Domain modeling, OOP design, entity relationships30 - Domain-driven design documentation31 - Object-oriented class structures32 - Entity relationships and dependencies33342. **Sequence Diagrams** - Temporal interactions, message flows35 - API request/response flows36 - User authentication flows37 - System component interactions38 - Method call sequences39403. **Flowcharts** - Processes, algorithms, decision trees41 - User journeys and workflows42 - Business processes43 - Algorithm logic44 - Deployment pipelines45464. **Entity Relationship Diagrams (ERD)** - Database schemas47 - Table relationships48 - Data modeling49 - Schema design50515. **C4 Diagrams** - Software architecture at multiple levels52 - System Context (systems and users)53 - Container (applications, databases, services)54 - Component (internal structure)55 - Code (class/interface level)56576. **State Diagrams** - State machines, lifecycle states587. **Git Graphs** - Version control branching strategies598. **Gantt Charts** - Project timelines, scheduling609. **Pie/Bar Charts** - Data visualization6162## Quick Start Examples6364### Class Diagram (Domain Model)65```mermaid66classDiagram67 Title -- Genre68 Title *-- Season69 Title *-- Review70 User --> Review : creates71 72 class Title {73 +string name74 +int releaseYear75 +play()76 }77 78 class Genre {79 +string name80 +getTopTitles()81 }82```8384### Sequence Diagram (API Flow)85```mermaid86sequenceDiagram87 participant User88 participant API89 participant Database90 91 User->>API: POST /login92 API->>Database: Query credentials93 Database-->>API: Return user data94 alt Valid credentials95 API-->>User: 200 OK + JWT token96 else Invalid credentials97 API-->>User: 401 Unauthorized98 end99```100101### Flowchart (User Journey)102```mermaid103flowchart TD104 Start([User visits site]) --> Auth{Authenticated?}105 Auth -->|No| Login[Show login page]106 Auth -->|Yes| Dashboard[Show dashboard]107 Login --> Creds[Enter credentials]108 Creds --> Validate{Valid?}109 Validate -->|Yes| Dashboard110 Validate -->|No| Error[Show error]111 Error --> Login112```113114### ERD (Database Schema)115```mermaid116erDiagram117 USER ||--o{ ORDER : places118 ORDER ||--|{ LINE_ITEM : contains119 PRODUCT ||--o{ LINE_ITEM : includes120 121 USER {122 int id PK123 string email UK124 string name125 datetime created_at126 }127 128 ORDER {129 int id PK130 int user_id FK131 decimal total132 datetime created_at133 }134```135136## Detailed References137138For in-depth guidance on specific diagram types, see:139140- **[references/class-diagrams.md](references/class-diagrams.md)** - Domain modeling, relationships (association, composition, aggregation, inheritance), multiplicity, methods/properties141- **[references/sequence-diagrams.md](references/sequence-diagrams.md)** - Actors, participants, messages (sync/async), activations, loops, alt/opt/par blocks, notes142- **[references/flowcharts.md](references/flowcharts.md)** - Node shapes, connections, decision logic, subgraphs, styling143- **[references/erd-diagrams.md](references/erd-diagrams.md)** - Entities, relationships, cardinality, keys, attributes144- **[references/c4-diagrams.md](references/c4-diagrams.md)** - System context, container, component diagrams, boundaries145- **[references/advanced-features.md](references/advanced-features.md)** - Themes, styling, configuration, layout options146147## Best Practices1481491. **Start Simple** - Begin with core entities/components, add details incrementally1502. **Use Meaningful Names** - Clear labels make diagrams self-documenting1513. **Comment Extensively** - Use `%%` comments to explain complex relationships1524. **Keep Focused** - One diagram per concept; split large diagrams into multiple focused views1535. **Version Control** - Store `.mmd` files alongside code for easy updates1546. **Add Context** - Include titles and notes to explain diagram purpose1557. **Iterate** - Refine diagrams as understanding evolves156157## Editorial Style Rules158159Mermaid 자동 레이아웃을 쓰더라도 아래 규칙을 지키면 "AI 기본 출력" 느낌을 크게 줄일 수 있습니다160(diagram-design 모듈에서 이식한 압축본. 완전한 에디토리얼 렌더링이 필요하면161`skills/diagram-design/SKILL.md` 표현 계층을 사용하세요).162163- **액센트는 1~2개 노드만**: `classDef accent`를 핵심 노드(happy path의 결정점, 최종 산출물)에만164 적용. 모든 분기·에러에 색을 칠하면 신호가 사라집니다. 나머지는 기본 스타일 유지.165- **밀도 예산**: 사람에게 보여줄 다이어그램은 노드 9개 이하 목표. 초과하면 개요 1장 + 상세 N장으로166 분할합니다. (파이프라인 검증용 `.mmd`는 기존 20개 제한 유지 — 용도가 다름)167- **도형이 타입을 말하게**: 시작/끝 `([ ])`, 처리 `[ ]`, 분기 `{ }`, 서브루틴 `[[ ]]`.168 색으로 노드 타입을 구분하지 않습니다.169- **분기 레이블 필수**: decision에서 나가는 모든 화살표에 `|Yes|`/`|No|` 등 레이블. 출구 4개 이상인170 분기는 중첩 분기로 리팩터링.171- **색 토큰**: 순수 `#000`/`#fff` 대신 near-black(`#2d3142`)·off-white(`#f5f5f5`). 액센트는172 프로젝트 `DESIGN.md` 토큰이 있으면 그것을, 없으면 한 가지 hue만.173174```mermaid175---176config:177 theme: base178 themeVariables:179 primaryColor: "#f5f5f5"180 primaryTextColor: "#2d3142"181 primaryBorderColor: "#4f5d75"182 lineColor: "#4f5d75"183---184flowchart TD185 A([시작]) --> B{유효?}186 B -->|Yes| C[처리]187 B -->|No| D[거부]188 C --> E([완료])189 classDef accent stroke:#eb6c36,stroke-width:2px190 class E accent191```192193## Configuration and Theming194195Configure diagrams using frontmatter:196197```mermaid198---199config:200 theme: base201 themeVariables:202 primaryColor: "#ff6b6b"203---204flowchart LR205 A --> B206```207208**Available themes:** default, forest, dark, neutral, base209210**Layout options:**211- `layout: dagre` (default) - Classic balanced layout212- `layout: elk` - Advanced layout for complex diagrams (requires integration)213214**Look options:**215- `look: classic` - Traditional Mermaid style216- `look: handDrawn` - Sketch-like appearance217218## Exporting and Rendering219220**Native support in:**221- GitHub/GitLab - Automatically renders in Markdown222- VS Code - With Markdown Mermaid extension223- Notion, Obsidian, Confluence - Built-in support224225**Export options:**226- [Mermaid Live Editor](https://mermaid.live) - Online editor with PNG/SVG export227- Mermaid CLI - `npm install -g @mermaid-js/mermaid-cli` then `mmdc -i input.mmd -o output.png`228- Docker - `docker run --rm -v $(pwd):/data minlag/mermaid-cli -i /data/input.mmd -o /data/output.png`229230## Common Pitfalls231232- **Breaking characters** - Avoid `{}` in comments, use proper escape sequences for special characters233- **Syntax errors** - Misspellings break diagrams; validate syntax in Mermaid Live234- **Overcomplexity** - Split complex diagrams into multiple focused views235- **Missing relationships** - Document all important connections between entities236237## When to Create Diagrams238239**Always diagram when:**240- Starting new projects or features241- Documenting complex systems242- Explaining architecture decisions243- Designing database schemas244- Planning refactoring efforts245- Onboarding new team members246247**Use diagrams to:**248- Align stakeholders on technical decisions249- Document domain models collaboratively250- Visualize data flows and system interactions251- Plan before coding252- Create living documentation that evolves with code