drawing-diagrams
SKILL.md
Mermaid Live Diagram Generator
Generate Mermaid diagrams and open them directly in mermaid.live in the user's browser.
When to Use
- User explicitly asks for a diagram, chart, or visualization
- User asks to visualize architecture, data flow, state machines, sequences, relationships
- When explaining complex systems where a visual would be more effective than prose
- User says "draw", "diagram", "visualize", "chart", "flowchart", "show me"
Workflow
Step 1: Determine Diagram Type
Choose the most appropriate Mermaid diagram type:
| Need | Diagram Type | Keyword |
|---|---|---|
| Process flow, decision trees | Flowchart | flowchart TD or flowchart LR |
| API calls, message passing | Sequence | sequenceDiagram |
| OOP structure, interfaces | Class | classDiagram |
| Database schema, entities | ER | erDiagram |
| State machines, lifecycles | State | stateDiagram-v2 |
| Project timelines | Gantt | gantt |
| Distribution/proportions | Pie | pie |
| Git branch strategy | Git Graph | gitGraph |
| User experience mapping | Journey | journey |
| Prioritization matrix | Quadrant | quadrantChart |
| Data over time | XY Chart | xychart-beta |
| Chronological events | Timeline | timeline |
| Brainstorming | Mindmap | mindmap |
Step 2: Write the Mermaid Code
Write clean, well-structured Mermaid code. Key syntax rules:
Flowchart nodes:
A[Rectangle]A(Rounded)A{Diamond}A((Circle))A[(Database)]- Edges:
-->(arrow),-.->(dotted),==>(thick),~~~(invisible) - Link text:
A -->|label| B - Subgraphs:
subgraph title ... end
Sequence diagrams:
participant Aoractor A- Arrows:
->>(solid+arrow),-->>(dotted+arrow),-x(destroy),-)(async) - Blocks:
loop,alt/else,opt,par/and,critical/option,break - Notes:
Note right of A: text autonumberfor sequence numbers
ER diagrams:
- Relationships:
||--o{(one to many),||--||(one to one),}o--o{(many to many) --(identifying/solid),..(non-identifying/dashed)- Attributes:
ENTITY { type name PK/FK/UK "comment" }
Class diagrams:
- Visibility:
+public,-private,#protected,~package - Relations:
<|--inheritance,*--composition,o--aggregation,-->association <<interface>>,<<abstract>>annotations
State diagrams:
[*]for start/end statesstate "description" as s1<<choice>>,<<fork>>,<<join>>--separator for concurrent states
CRITICAL: Avoid the word end in lowercase inside node labels -- it's a reserved keyword. Use End, END, or wrap in quotes.
Step 3: Encode and Open in Browser
Write the mermaid code to a temp file, then use the bundled encoder script:
# macOS: uses `open`. On Linux, replace `open` with `xdg-open`.
cat <<'MERMAID_EOF' | python3 ~/.claude/skills/drawing-diagrams/mermaid-encode.py | xargs open
<mermaid code here>
MERMAID_EOF
Options:
--theme dark-- use dark theme (options: default, dark, forest, neutral)--view-- open in view-only mode (no editor)--rough-- hand-drawn/sketchy style
Example with options:
cat <<'MERMAID_EOF' | python3 ~/.claude/skills/drawing-diagrams/mermaid-encode.py --theme forest --rough | xargs open
flowchart LR
A[Start] --> B{Decision}
B -->|Yes| C[Do thing]
B -->|No| D[Other thing]
MERMAID_EOF
Step 4: Inform the User
After opening the browser, tell the user:
- What diagram type was chosen and why
- A brief description of what the diagram shows
- That it's open in mermaid.live where they can edit it further
- The mermaid.live URL (so they can share it)
Diagram Design Guidelines
- Readable labels: Use short, descriptive text. No full sentences in nodes.
- Logical flow direction: TD for hierarchies, LR for sequences/timelines.
- Use subgraphs: Group related nodes for clarity in complex diagrams.
- Color with purpose: Use
classDefto highlight important nodes (errors in red, success in green, etc.) - Keep it focused: A diagram should communicate ONE main idea. Split complex systems into multiple diagrams.
Quick Reference: Common Patterns
Architecture Diagram
flowchart TD
subgraph Client
A[Browser] --> B[Mobile App]
end
subgraph API["API Gateway"]
C[Load Balancer]
end
subgraph Services
D[Auth Service]
E[Core Service]
F[Notification Service]
end
Client --> API --> Services
Database Schema
erDiagram
USER ||--o{ ORDER : places
ORDER ||--|{ LINE_ITEM : contains
PRODUCT ||--o{ LINE_ITEM : "ordered in"
API Flow
sequenceDiagram
autonumber
Client->>+API: POST /resource
API->>+DB: INSERT
DB-->>-API: OK
API-->>-Client: 201 Created
Important Notes
- The encoder script uses ONLY Python standard library -- no pip install needed
- Works on macOS (uses
opencommand) -- for Linux, users would needxargs xdg-open - URLs have no expiry -- they're self-contained (the diagram state IS the URL)
- Very large diagrams may exceed URL length limits (~2000 chars for some browsers, ~65K for most modern ones)
- The
--roughflag gives a hand-drawn sketchy look (nice for presentations)
Weekly Installs
1
Repository
lerianstudio/ringGitHub Stars
135
First Seen
6 days ago
Security Audits
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1