Generate Mermaid diagrams from user requirements. Supports flowcharts, sequence diagrams, class diagrams, ER diagrams, Gantt charts, and 18 more diagram types.
npx skills add https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep --skill mermaid-diagram
Generate high-quality Mermaid diagram code based on user requirements, with file output and verification.
figures/ — Output directory for all generated files# Create output directory
mkdir -p figures
Parse the input: $ARGUMENTS
Select the appropriate diagram type based on the use case. Use your built-in knowledge of Mermaid syntax, or fetch up-to-date docs via the context7 MCP server if needed.
| Type | Use Cases |
| ---- | --------- |
| Flowchart | Processes, decisions, steps |
| Sequence Diagram | Interactions, messaging, API calls |
| Class Diagram | Class structure, inheritance, associations |
| State Diagram | State machines, state transitions |
| ER Diagram | Database design, entity relationships |
| Gantt Chart | Project planning, timelines |
| Pie Chart | Proportions, distributions |
| Mindmap | Hierarchical structures, knowledge graphs |
| Timeline | Historical events, milestones |
| Git Graph | Branches, merges, versions |
| Quadrant Chart | Four-quadrant analysis |
| Requirement Diagram | Requirements traceability |
| C4 Diagram | System architecture (C4 model) |
| Sankey Diagram | Flow, conversions |
| XY Chart | Line charts, bar charts |
| Block Diagram | System components, modules |
| Packet Diagram | Network protocols, data structures |
| Kanban | Task management, workflows |
| Architecture Diagram | System architecture |
| Radar Chart | Multi-dimensional comparison |
| Treemap | Hierarchical data visualization |
| User Journey | User experience flows |
| ZenUML | Sequence diagrams (code style) |
Generate the Mermaid code following the reference specification, then save TWO files:
figures/<diagram-name>.mmd — Raw Mermaid sourceThe .mmd file contains ONLY the raw Mermaid code (no markdown fences). Example:
flowchart TD
A[Start] --> B{Condition}
B -->|Yes| C[Execute]
B -->|No| D[End]
C --> D
figures/<diagram-name>.md — Markdown with embedded MermaidThe .md file wraps the same code in a mermaid code block for preview rendering, plus a title and description. Example:
# Diagram Title
Brief description of what this diagram shows.
```mermaid
flowchart TD
A[Start] --> B{Condition}
B -->|Yes| C[Execute]
B -->|No| D[End]
C --> D
```
Naming convention: Use a descriptive kebab-case name derived from the user's request (e.g., auth-flow, system-architecture, database-er).
Claude MUST verify the generated Mermaid code by running the Mermaid CLI (mmdc).
# Check if mermaid-cli is available
if command -v mmdc &> /dev/null; then
# Render to PNG to verify syntax is correct
mmdc -i figures/<diagram-name>.mmd -o figures/<diagram-name>.png -b transparent
echo "✅ Syntax valid — PNG rendered to figures/<diagram-name>.png"
else
# Try npx as fallback
npx -y @mermaid-js/mermaid-cli@latest -i figures/<diagram-name>.mmd -o figures/<diagram-name>.png -b transparent
echo "✅ Syntax valid — PNG rendered to figures/<diagram-name>.png"
fi
If the verification fails:
.mmd and .md filesAfter successful rendering, Claude MUST read the generated PNG and perform a STRICT review:
## Claude's STRICT Review of <diagram-name>
### What I See
[Describe the rendered diagram in DETAIL - every block, every arrow, every label]
### Files Generated
- `figures/<diagram-name>.mmd` — Raw Mermaid source
- `figures/<diagram-name>.md` — Markdown with embedded diagram
- `figures/<diagram-name>.png` — Rendered PNG (if mmdc available)
### ═══════════════════════════════════════════════════════════════
### STRICT VERIFICATION CHECKLIST (ALL must pass for score ≥ 9)
### ═══════════════════════════════════════════════════════════════
#### A. File Correctness
- [ ] `.mmd` file contains valid Mermaid syntax (no markdown fences)
- [ ] `.md` file has the mermaid code wrapped in ```mermaid``` fences
- [ ] `.mmd` and `.md` contain IDENTICAL Mermaid code
- [ ] Diagram renders without errors (via mmdc)
#### B. Arrow Correctness Verification (CRITICAL - any failure = score ≤ 6)
Check EACH arrow:
- [ ] Arrow 1: [Source] → [Target] — Does it point to the CORRECT target?
- [ ] Arrow 2: [Source] → [Target] — Does it point to the CORRECT target?
- [ ] ... (check ALL arrows)
#### C. Block Content Verification (any failure = score ≤ 7)
Check EACH block/node:
- [ ] Block 1 "[Name]": Has correct label? Content correct?
- [ ] Block 2 "[Name]": Has correct label? Content correct?
- [ ] ... (check ALL blocks)
#### D. Completeness
- [ ] All components from user requirements are present
- [ ] All connections/arrows are correct
- [ ] Node labels are meaningful and match requirements
#### E. Visual Quality
- [ ] Layout is clean and readable
- [ ] Color scheme is professional (not rainbow)
- [ ] Text is readable at normal zoom
- [ ] Proper spacing (not cramped, not sparse)
- [ ] Data flow is traceable in 5 seconds
### ═══════════════════════════════════════════════════════════════
### Issues Found (BE SPECIFIC)
1. [Issue 1]: [EXACTLY what is wrong] → [How to fix]
2. [Issue 2]: [EXACTLY what is wrong] → [How to fix]
### Score: X/10
### Score Breakdown Guide:
- **10**: Perfect. No issues. Publication-ready.
- **9**: Excellent. Minor issues that don't affect understanding.
- **8**: Good but has noticeable issues (layout, styling).
- **7**: Usable but has clear problems (wrong arrows, missing labels).
- **6**: Has arrow direction errors or missing major components.
- **1-5**: Major issues. Unacceptable.
### Verdict
[ ] ACCEPT (score ≥ 9 AND all critical checks pass)
[ ] FIX (score < 9 OR any critical check fails — list EXACT fixes needed)
If FIX: apply corrections to both .mmd and .md files, re-render, and re-verify. Loop until ACCEPT or MAX_ITERATIONS reached.
When accepted, present to user:
✅ Mermaid diagram generated successfully!
Files:
figures/<diagram-name>.mmd — Raw Mermaid source (use with mmdc, editors, CI)
figures/<diagram-name>.md — Markdown preview (renders on GitHub, VS Code, etc.)
figures/<diagram-name>.png — Rendered image (if mmdc was available)
To re-render manually:
mmdc -i figures/<diagram-name>.mmd -o figures/<diagram-name>.png
When generating architecture-beta diagrams, apply these layout techniques for complex diagrams:
Think of the diagram as an invisible grid. Use junction nodes as virtual anchor points on that grid to precisely control where each component is placed. This is especially useful when a direct edge between two services produces unexpected positioning.
Instead of connecting services directly:
lb:R --> L:scim
lb:R --> L:webapi
Route through junctions to control vertical/horizontal placement:
junction j_lb_r
lb:R -- L:j_lb_r
junction j_scim_l
j_lb_r:T -- B:j_scim_l
j_scim_l:R --> L:scim
junction j_webapi_l
j_lb_r:B -- T:j_webapi_l
j_webapi_l:R --> L:webapi
Place junctions on all four sides of components to anchor them logically on the grid.
For services that have no logical connection to other nodes (e.g. a deployment tool, a monitoring agent), use a junction combined with the {group} modifier to position them without adding a semantically incorrect edge:
junction j_acd_t
j_algolia_proc_b{group}:B -- T:j_acd_t
j_acd_t:B -- T:acd
This anchors acd below its intended neighbor without implying a real relationship.
When the diagram is intended for academic papers, apply these style standards:
Mermaid supports rendering mathematical expressions via KaTeX (v10.9.0+). When the diagram content involves math (formulas, equations, Greek letters, subscripts/superscripts, fractions, matrices, operators, etc.), use KaTeX notation instead of plain-text approximations.
Math rendering with $$...$$ is supported in:
flowchart / graph) — in node labels and edge labels$$ delimiters inside quoted strings: A["$$x^2$$"] -->|"$$\sqrt{x+3}$$"| B("$$\frac{1}{2}$$")
["$$...$$"] or ("$$...$$"): scaledDot["$$\text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$"]
$$ only around the math portion: layer1["Linear Layer $$W_1 x + b_1$$"]
\text{} for non-math text inside a $$ block: node["$$\text{Attention}(Q, K, V)$$"]
| Concept | KaTeX Syntax | Renders As |
| ------- | ------------ | ---------- |
| Subscript | $$W_Q$$ | W_Q |
| Superscript | $$x^2$$ | x² |
| Fraction | $$\frac{QK^T}{\sqrt{d_k}}$$ | QK^T / sqrt(d_k) |
| Greek letters | $$\alpha, \beta, \gamma$$ | α, β, γ |
| Square root | $$\sqrt{d_k}$$ | √d_k |
| Summation | $$\sum_{i=1}^{n} x_i$$ | Σx_i |
| Matrix | $$\begin{bmatrix} a & b \\ c & d \end{bmatrix}$$ | 2x2 matrix |
| Softmax | $$\text{softmax}(z_i)$$ | softmax(z_i) |
| Norm | $$\|\|x\|\|_2$$ | ‖x‖₂ |
| Hat/tilde | $$\hat{y}, \tilde{x}$$ | ŷ, x̃ |
flowchart TD
Q["$$Q \in \mathbb{R}^{n \times d_k}$$"]
K["$$K \in \mathbb{R}^{n \times d_k}$$"]
V["$$V \in \mathbb{R}^{n \times d_v}$$"]
scores["$$\frac{QK^T}{\sqrt{d_k}}$$"]
softmax["$$\text{softmax}(\cdot)$$"]
output["$$\text{Attention}(Q,K,V)$$"]
Q --> scores
K --> scores
scores --> softmax
softmax --> weighted["$$\alpha V$$"]
V --> weighted
weighted --> output
<br/> for line breaks) when the diagram is for general audiences or when math would add visual clutter without improving clarity$$ delimiters must be inside quoted strings — unquoted $$ will break parsing\frac, \sqrt, etc.) work normally in Mermaid strings\\ (newline in KaTeX) or simplifymmdc — some KaTeX expressions may not render in all environmentsGenerated Mermaid code MUST:
A, B, C — use authServer, userDB, etc.)<br/> for line breaks inside node labels — never use \n, which renders as literal textfigures/
├── <diagram-name>.mmd # Raw Mermaid source (no markdown fences)
├── <diagram-name>.md # Markdown with embedded mermaid block
└── <diagram-name>.png # Rendered PNG (if mmdc available)
figures/ directory — Never just output code in chat.mmd and .md files — They must contain identical Mermaid code10. FIX errors before accepting — Do not deliver broken diagrams
11. Use descriptive file names — kebab-case derived from the diagram content
User requirements: $ARGUMENTS
Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas
Use this skill any time a spreadsheet file is the primary input or output. This means any task where the user wants to: open, read, edit, or fix an existing .xlsx, .xlsm, .csv, or .tsv file (e.g., adding columns, computing formulas, formatting, charting, cleaning messy data); create a new spreadsheet from scratch or from other data sources; or convert between tabular file formats. Trigger especially when the user references a spreadsheet file by name or path — even casually (like \"the xlsx in my downloads\") — and wants something done to it or produced from it. Also trigger for cleaning or restructuring messy tabular data files (malformed rows, misplaced headers, junk data) into proper spreadsheets. The deliverable must be a spreadsheet file. Do NOT trigger when the primary deliverable is a Word document, HTML report, standalone Python script, database pipeline, or Google Sheets API integration, even if tabular data is involved.
Picks random winners from lists, spreadsheets, or Google Sheets for giveaways, raffles, and contests. Ensures fair, unbiased selection with transparency.
Query openFDA API for drugs, devices, adverse events, recalls, regulatory submissions (510k, PMA), substance identification (UNII), for FDA regulatory data analysis and safety research.
MATLAB and GNU Octave numerical computing for matrix operations, data analysis, visualization, and scientific computing. Use when writing MATLAB/Octave scripts for linear algebra, signal processing, image processing, differential equations, optimization, statistics, or creating scientific visualizations. Also use when the user needs help with MATLAB syntax, functions, or wants to convert between MATLAB and Python code. Scripts can be executed with MATLAB or the open-source GNU Octave interpreter.
UMAP dimensionality reduction. Fast nonlinear manifold learning for 2D/3D visualization, clustering preprocessing (HDBSCAN), supervised/parametric UMAP, for high-dimensional data.
Creating interactive data visualisations using d3.js. This skill should be used when creating custom charts, graphs, network diagrams, geographic visualisations, or any complex SVG-based data visualisation that requires fine-grained control over visual elements, transitions, or interactions. Use this for bespoke visualisations beyond standard charting libraries, whether in React, Vue, Svelte, vanilla JavaScript, or any other environment.
Access AlphaFold 200M+ AI-predicted protein structures. Retrieve structures by UniProt ID, download PDB/mmCIF files, analyze confidence metrics (pLDDT, PAE), for drug discovery and structural biology.
Take wanshuiyin/mermaid-diagram from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.