| name | generate-mermaid |
| description | Automatically invoked when creating visual diagrams (flowcharts, sequence diagrams, ERDs, state machines, user journeys). Ensures proper Mermaid syntax and diagram clarity. |
Generate Mermaid Diagrams Skill
This skill activates when you need to create visual documentation using Mermaid diagrams.
When This Skill Activates
Automatically engage when:
- Creating flowcharts for processes or algorithms
- Documenting API interactions with sequence diagrams
- Designing database schemas with ERDs
- Mapping state transitions with state diagrams
- Illustrating user journeys
- Explaining system architecture
Diagram Type Selection
Flowchart
Use for: Process flows, decision trees, algorithm logic Best when: Showing sequential steps and decision points
Sequence Diagram
Use for: Component interactions, API calls, time-based processes Best when: Showing how components communicate over time
ERD (Entity Relationship Diagram)
Use for: Database schemas, data models, relationships Best when: Designing or documenting data structure
State Diagram
Use for: State machines, lifecycle flows, status transitions Best when: Tracking object states and transitions
User Journey
Use for: User experience flows, emotional journey, touchpoints Best when: Understanding user perspective through process
Diagram Creation Workflow
1. Choose Appropriate Diagram Type
Match diagram type to information structure
2. Identify Key Elements
- What are the main components/nodes?
- What relationships/flows exist?
- What decisions or branches occur?
- What states or transitions matter?
3. Organize Layout
- Top-to-bottom or left-to-right
- Group related elements
- Minimize line crossings
- Logical flow direction
4. Use Clear Labels
- Descriptive node names
- Action-oriented labels
- Consistent terminology
- Avoid abbreviations unless standard
5. Add Context
- Title the diagram
- Provide description
- Explain key elements
- Note important details
Mermaid Syntax Reference
Flowchart
Basic Structure
flowchart TD
Start([Start]) --> Process[Process Step]
Process --> Decision{Decision?}
Decision -->|Yes| Action1[Action 1]
Decision -->|No| Action2[Action 2]
Action1 --> End([End])
Action2 --> End
Node Shapes
[]Rectangle (process)()Rounded rectangle (start/end){}Diamond (decision)[()]Stadium (start/end alt)[[]]Subroutine[()]Database
Direction
TDorTB- Top to bottomLR- Left to rightRL- Right to leftBT- Bottom to top
Sequence Diagram
sequenceDiagram
participant A as Client
participant B as API
participant C as Database
A->>B: POST /users
activate B
B->>C: INSERT user
activate C
C-->>B: User ID
deactivate C
B-->>A: 201 Created
deactivate B
Arrow Types
->Solid line-->Dotted line->>Solid arrow-->>Dotted arrow
Activation/Deactivation
activate Actor- Show activedeactivate Actor- Show inactive
ERD
erDiagram
USER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
PRODUCT ||--o{ LINE_ITEM : "ordered in"
USER {
int id PK
string email UK
string name
datetime created_at
}
ORDER {
int id PK
int user_id FK
decimal total
string status
}
Relationships
||--||One to one||--o{One to many}o--o{Many to many||--o|One to zero or one
Attributes
PK- Primary KeyFK- Foreign KeyUK- Unique Key
State Diagram
stateDiagram-v2
[*] --> Draft
Draft --> Submitted : submit()
Submitted --> Approved : approve()
Submitted --> Rejected : reject()
Approved --> Published : publish()
Published --> Archived : archive()
Rejected --> [*]
Archived --> [*]
Special States
[*]- Start/End state- State names use camelCase or PascalCase
- Transitions labeled with actions
User Journey
journey
title Online Shopping Experience
section Browse
Visit site: 5: Customer
View products: 4: Customer
Filter results: 3: Customer
section Purchase
Add to cart: 5: Customer
Enter payment: 2: Customer
Complete order: 5: Customer
section Post-Purchase
Receive email: 4: Customer
Track shipment: 5: Customer
Satisfaction Scores
- 1-2: Poor experience
- 3: Neutral
- 4-5: Good experience
Best Practices
Clarity
Good: Descriptive Labels
flowchart TD
ValidateInput[Validate User Input] --> CheckAuth{User Authenticated?}
Avoid: Cryptic Labels
flowchart TD
A[Validate] --> B{Auth?}
Simplicity
Good: Focused Scope
flowchart TD
Start([User Login]) --> ValidEmail{Valid Email?}
ValidEmail -->|Yes| CheckPassword{Valid Password?}
ValidEmail -->|No| ShowError[Show Email Error]
CheckPassword -->|Yes| Success[Login Success]
CheckPassword -->|No| ShowError2[Show Password Error]
Avoid: Too Complex
Don't try to fit an entire system in one diagram - break into multiple focused diagrams
Layout
Good: Logical Flow
flowchart TD
A --> B
B --> C
C --> D
Avoid: Crossing Lines
Organize nodes to minimize line crossings
Consistency
- Use same node shape for same type of element
- Use consistent naming conventions
- Keep style uniform across project diagrams
Diagram Output Format
When creating a diagram, provide:
1. Context
# [Diagram Title]
[Brief description of what this diagram shows and why it's important]
2. The Diagram
```mermaid
[diagram code]
```
3. Explanation
## Key Elements
- **[Element Name]**: Description of what it represents
- **[Element Name]**: Description
## Flow Description
[Step-by-step walkthrough if needed]
## Notes
- [Important consideration]
- [Edge case or special behavior]
File Organization
Save diagrams to:
- Architecture diagrams →
docs/architecture/diagrams/[name].md - Feature flows →
docs/features/[feature-name]-[type].md - Data models →
docs/architecture/models/[name].md
Naming Convention
[subject]-[diagram-type].md
Examples:
authentication-flow.mdorder-checkout-sequence.mduser-order-erd.mdorder-status-state.md
Common Patterns
API Request Flow
sequenceDiagram
Client->>API: Request
API->>Validation: Validate
alt Valid
API->>Service: Process
Service->>DB: Query
DB-->>Service: Data
Service-->>API: Result
API-->>Client: 200 OK
else Invalid
API-->>Client: 400 Bad Request
end
Authentication Flow
flowchart TD
Start([User Login]) --> Submit[Submit Credentials]
Submit --> Validate{Valid?}
Validate -->|Yes| CheckMFA{MFA Enabled?}
Validate -->|No| Error[Show Error]
CheckMFA -->|Yes| SendCode[Send MFA Code]
CheckMFA -->|No| Success[Login Success]
SendCode --> VerifyCode{Code Valid?}
VerifyCode -->|Yes| Success
VerifyCode -->|No| Error
Error --> Start
Success --> Dashboard[Redirect to Dashboard]
State Transitions
stateDiagram-v2
[*] --> Idle
Idle --> Loading : fetch()
Loading --> Success : data received
Loading --> Error : fetch failed
Success --> Idle : reset()
Error --> Idle : reset()
Error --> Loading : retry()
Database Schema
erDiagram
USER ||--o{ POST : writes
USER ||--o{ COMMENT : writes
POST ||--o{ COMMENT : has
USER {
int id PK
string email UK
string username UK
datetime created_at
}
POST {
int id PK
int author_id FK
string title
text content
datetime published_at
}
COMMENT {
int id PK
int post_id FK
int author_id FK
text content
datetime created_at
}
Diagram Quality Checklist
- Appropriate diagram type chosen
- All nodes clearly labeled
- Logical flow direction
- Minimal line crossings
- Consistent naming
- Context provided
- Key elements explained
- Saved to correct location
- File name follows convention
- Mermaid syntax valid
Testing Diagrams
Before finalizing:
- Copy Mermaid code
- Test in Mermaid Live Editor
- Verify layout is clear
- Check labels are readable
- Ensure no syntax errors
References
- Mermaid syntax:
.claude/skills/generate-mermaid/references/mermaid-syntax.md - Common patterns:
.claude/skills/generate-mermaid/references/common-patterns.md
Constraints
- Keep diagrams focused on one aspect
- Break complex systems into multiple diagrams
- Maintain consistency across project diagrams
- Update diagrams when system changes
- Don't diagram everything - only what adds value