---
name: diagram-generator
description: Generates architecture, database, and system diagrams using Mermaid syntax. Creates visual representations of system architecture, database schemas, component relationships, and data flows.
version: 1.0
model: sonnet
invoked_by: both
user_invocable: true
tools: [Read, Write, Glob, Grep]
best_practices:
- Use Mermaid syntax for diagrams
- Extract structure from code and documentation
- Create clear, readable diagrams
- Include relationships and dependencies
- Generate both high-level and detailed views
error_handling: graceful
streaming: supported
templates: [architecture-diagram, database-diagram, component-diagram, sequence-diagram]
---
Diagram Generator Skill - Generates architecture, database, and system diagrams using Mermaid syntax to visualize system structure, relationships, and flows.
- Creating architecture diagrams
- Documenting database schemas
- Visualizing component relationships
- Documenting data flows
- Creating sequence diagrams
- Generating system overviews
### Step 1: Identify Diagram Type
Determine what type of diagram is needed:
- **Architecture Diagram**: System structure and components
- **Database Diagram**: Schema and relationships
- **Component Diagram**: Component interactions
- **Sequence Diagram**: Process flows
- **Flowchart**: Decision flows
### Step 2: Extract Structure
Analyze code and documentation (Use Parallel Read/Grep/Glob):
- Read architecture documents
- Analyze component structure
- Extract database schema
- Identify relationships
- Understand data flows
### Step 3: Generate Mermaid Diagram
Create diagram using Mermaid syntax:
- Use appropriate diagram type
- Define nodes and relationships
- Add labels and descriptions
- Include styling if needed
### Step 4: Embed in Documentation
Embed diagram in markdown:
- Use mermaid code blocks
- Add diagram description
- Reference in documentation
**Integration with Architect Agent**:
- Generates architecture diagrams
- Documents system structure
- Visualizes component relationships
**Integration with Database Architect Agent**:
- Generates database schema diagrams
- Documents table relationships
- Visualizes data models
**Integration with Technical Writer Agent**:
- Embeds diagrams in documentation
- Creates visual documentation
- Enhances documentation clarity
1. **Use Mermaid**: Standard syntax for compatibility
2. **Keep Clear**: Simple, readable diagrams
3. **Show Relationships**: Include all important connections
4. **Add Labels**: Clear node and edge labels
5. **Update Regularly**: Keep diagrams current with code
**Architecture Diagram**
```mermaid
graph TB
Client[Client Application]
API[API Gateway]
Auth[Auth Service]
User[User Service]
DB[(Database)]
Client --> API
API --> Auth
API --> User
User --> DB
Auth --> DB
```
**Database Schema Diagram**
```mermaid
erDiagram
USERS ||--o{ ORDERS : places
USERS {
uuid id PK
string email
string name
}
ORDERS ||--|{ ORDER_ITEMS : contains
ORDERS {
uuid id PK
uuid user_id FK
date created_at
}
ORDER_ITEMS {
uuid id PK
uuid order_id FK
uuid product_id FK
int quantity
}
```
**Component Diagram**
```mermaid
graph LR
A[Component A] --> B[Component B]
A --> C[Component C]
B --> D[Component D]
C --> D
```
**Sequence Diagram**
```mermaid
sequenceDiagram
participant User
participant API
participant Auth
participant DB
User->>API: Login Request
API->>Auth: Validate Credentials
Auth->>DB: Query User
DB-->>Auth: User Data
Auth-->>API: JWT Token
API-->>User: Auth Response
```
**Example Commands**:
```bash
# Generate architecture diagram
node .claude/tools/diagram-generator/scripts/generate.mjs --type architecture "authentication system"
# Generate database schema diagram
node .claude/tools/diagram-generator/scripts/generate.mjs --type database "user management module"
# Generate component diagram
node .claude/tools/diagram-generator/scripts/generate.mjs --type component "API service relationships"
# Generate sequence diagram
node .claude/tools/diagram-generator/scripts/generate.mjs --type sequence "user login flow"
```
## Memory Protocol (MANDATORY)
**Before starting:**
Read `.claude/context/memory/learnings.md`
**After completing:**
- New pattern -> `.claude/context/memory/learnings.md`
- Issue found -> `.claude/context/memory/issues.md`
- Decision made -> `.claude/context/memory/decisions.md`
> ASSUME INTERRUPTION: If it's not in memory, it didn't happen.