Mermaid Diagrams
by @jarekbird
Generate and render diagrams from Mermaid syntax into PNG, SVG, or PDF using customizable themes and various diagram types.
clawhub install mermaidπ About This Skill
Mermaid Diagrams Skill
Generate diagrams from text using Mermaid.
Requirements
@mermaid-js/mermaid-cli (npm install -g @mermaid-js/mermaid-cli)Usage
1. Write Mermaid syntax to a .mmd file
2. Run mmdc to render PNG/SVG
3. Return the image to the user
Basic Command
mmdc -i input.mmd -o output.png -t dark -b transparent
Options
| Flag | Description |
|---|---|
| -i | Input .mmd file |
| -o | Output file (.png, .svg, .pdf) |
| -t | Theme: default, dark, forest, neutral |
| -b | Background color (transparent, hex) |
| -w | Width in pixels (default: 800) |
| -H | Height in pixels |
| -s | Scale factor (default: 1, use 2-3 for high-res) |
| -c | Config JSON file for advanced theming |
Supported Diagram Types
graph TD / graph LRsequenceDiagramclassDiagramstateDiagram-v2erDiagramganttpiemindmaptimelinegitGraphquadrantChartblock-betaWorkflow
1. Determine the best diagram type for what the user wants
2. Write the .mmd file to /tmp/mermaid-
3. Render: mmdc -i /tmp/mermaid-
4. Show the image to the user via Read tool
5. Clean up temp files if not needed
Example: Architecture Diagram
graph TD
A[Client] -->|HTTPS| B[API Gateway]
B --> C[Auth Service]
B --> D[App Server]
D --> E[(PostgreSQL)]
D --> F[(Redis Cache)]
Example: Sequence Diagram
sequenceDiagram
participant U as User
participant A as API
participant DB as Database
U->>A: POST /login
A->>DB: Validate credentials
DB-->>A: User record
A-->>U: JWT token
Tips
graph LR for left-to-right flow, graph TD for top-down-t dark -b transparent-s 2 or -s 3 for sharp images on retina displayspty: false when calling mmdcTheming
For custom colors, create a config JSON:
{
"theme": "base",
"themeVariables": {
"primaryColor": "#f59e0b",
"primaryTextColor": "#1a1a1a",
"primaryBorderColor": "#d97706",
"lineColor": "#6b7280",
"secondaryColor": "#10b981",
"tertiaryColor": "#3b82f6"
}
}
Then: mmdc -i input.mmd -o output.png -c config.json
π‘ Examples
1. Write Mermaid syntax to a .mmd file
2. Run mmdc to render PNG/SVG
3. Return the image to the user
Basic Command
mmdc -i input.mmd -o output.png -t dark -b transparent
Options
| Flag | Description |
|---|---|
| -i | Input .mmd file |
| -o | Output file (.png, .svg, .pdf) |
| -t | Theme: default, dark, forest, neutral |
| -b | Background color (transparent, hex) |
| -w | Width in pixels (default: 800) |
| -H | Height in pixels |
| -s | Scale factor (default: 1, use 2-3 for high-res) |
| -c | Config JSON file for advanced theming |
Supported Diagram Types
graph TD / graph LRsequenceDiagramclassDiagramstateDiagram-v2erDiagramganttpiemindmaptimelinegitGraphquadrantChartblock-betaWorkflow
1. Determine the best diagram type for what the user wants
2. Write the .mmd file to /tmp/mermaid-
3. Render: mmdc -i /tmp/mermaid-
4. Show the image to the user via Read tool
5. Clean up temp files if not needed
Example: Architecture Diagram
graph TD
A[Client] -->|HTTPS| B[API Gateway]
B --> C[Auth Service]
B --> D[App Server]
D --> E[(PostgreSQL)]
D --> F[(Redis Cache)]
Example: Sequence Diagram
sequenceDiagram
participant U as User
participant A as API
participant DB as Database
U->>A: POST /login
A->>DB: Validate credentials
DB-->>A: User record
A-->>U: JWT token
Tips
graph LR for left-to-right flow, graph TD for top-down-t dark -b transparent-s 2 or -s 3 for sharp images on retina displayspty: false when calling mmdcTheming
For custom colors, create a config JSON:
{
"theme": "base",
"themeVariables": {
"primaryColor": "#f59e0b",
"primaryTextColor": "#1a1a1a",
"primaryBorderColor": "#d97706",
"lineColor": "#6b7280",
"secondaryColor": "#10b981",
"tertiaryColor": "#3b82f6"
}
}
Then: mmdc -i input.mmd -o output.png -c config.json
βοΈ Configuration
| Flag | Description |
|---|---|
| -i | Input .mmd file |
| -o | Output file (.png, .svg, .pdf) |
| -t | Theme: default, dark, forest, neutral |
| -b | Background color (transparent, hex) |
| -w | Width in pixels (default: 800) |
| -H | Height in pixels |
| -s | Scale factor (default: 1, use 2-3 for high-res) |
| -c | Config JSON file for advanced theming |
Supported Diagram Types
graph TD / graph LRsequenceDiagramclassDiagramstateDiagram-v2erDiagramganttpiemindmaptimelinegitGraphquadrantChartblock-betaWorkflow
1. Determine the best diagram type for what the user wants
2. Write the .mmd file to /tmp/mermaid-
3. Render: mmdc -i /tmp/mermaid-
4. Show the image to the user via Read tool
5. Clean up temp files if not needed
Example: Architecture Diagram
graph TD
A[Client] -->|HTTPS| B[API Gateway]
B --> C[Auth Service]
B --> D[App Server]
D --> E[(PostgreSQL)]
D --> F[(Redis Cache)]
Example: Sequence Diagram
sequenceDiagram
participant U as User
participant A as API
participant DB as Database
U->>A: POST /login
A->>DB: Validate credentials
DB-->>A: User record
A-->>U: JWT token
Tips
graph LR for left-to-right flow, graph TD for top-down-t dark -b transparent-s 2 or -s 3 for sharp images on retina displayspty: false when calling mmdcTheming
For custom colors, create a config JSON:
{
"theme": "base",
"themeVariables": {
"primaryColor": "#f59e0b",
"primaryTextColor": "#1a1a1a",
"primaryBorderColor": "#d97706",
"lineColor": "#6b7280",
"secondaryColor": "#10b981",
"tertiaryColor": "#3b82f6"
}
}
Then: mmdc -i input.mmd -o output.png -c config.json
π Tips & Best Practices
graph LR for left-to-right flow, graph TD for top-down-t dark -b transparent-s 2 or -s 3 for sharp images on retina displayspty: false when calling mmdcTheming
For custom colors, create a config JSON:
{
"theme": "base",
"themeVariables": {
"primaryColor": "#f59e0b",
"primaryTextColor": "#1a1a1a",
"primaryBorderColor": "#d97706",
"lineColor": "#6b7280",
"secondaryColor": "#10b981",
"tertiaryColor": "#3b82f6"
}
}
Then: mmdc -i input.mmd -o output.png -c config.json