Render beautiful Mermaid diagrams as SVG or ASCII art using the beautiful-mermaid library. Supports 15+ themes, 5 diagram types (flowchart, sequence, state, class, ER), and ultra-fast rendering.
Use...
Create or render Mermaid diagrams with the bundled Node.js CLI. Use SVG for scalable documentation, PNG for sharing or raster-only consumers, and ASCII or Unicode for terminals and plain text.
Treat the directory containing this file as <skill-root>. Run bundled scripts from that directory, or invoke them with absolute paths. Keep user source and rendered output in the user's requested location; do not copy the renderer into their project.
.mmd file, preserving user terminology and relationships.Do not overwrite an existing source or output file unless the user asked for replacement.
| Need | Diagram type | Starter |
|---|---|---|
| Process, decision tree, architecture | Flowchart | flowchart LR |
| API calls, messages, interactions | Sequence | sequenceDiagram |
| Lifecycle or finite-state machine | State | stateDiagram-v2 |
| Classes, modules, relationships | Class | classDiagram |
| Database entities and cardinality | ER | erDiagram |
| Bars, lines, trends, comparisons | XY chart | xychart-beta |
Read references/DIAGRAM_TYPES.md when authoring non-trivial Mermaid syntax.
| Output | Best for | Notes |
|---|---|---|
| SVG | READMEs, docs, slides, websites | Scalable, themed, supports transparency |
| PNG | Chats, previews, raster-only tools | Set --format png; no external converter required |
| Unicode | Modern terminals and readable text previews | Default ASCII renderer output |
| Plain ASCII | Logs and restricted terminals | Add --use-ascii |
| ANSI-colored text | Interactive terminals | Set --color-mode |
Run these from <skill-root>.
node scripts/themes.mjs
node scripts/render.mjs \
--input diagram.mmd \
--output diagram.svg \
--theme tokyo-night
node scripts/render.mjs \
--input diagram.mmd \
--output diagram.txt \
--format ascii \
--color-mode none
Add --use-ascii when Unicode box-drawing characters are not acceptable.
node scripts/render.mjs \
--input diagram.mmd \
--output diagram.png \
--format png \
--width 1200 \
--theme tokyo-night
node scripts/batch.mjs \
--input-dir ./diagrams \
--output-dir ./rendered \
--format svg \
--theme github-dark \
--workers 4
Use batch rendering for three or more diagrams or when consistent options must be applied to a directory.
tokyo-nightgithub-dark, github-lightzinc-lightdraculanord, nord-lightRead references/THEMES.md or open docs/THEME_GALLERY.md when visual theme choice matters. A named theme can be refined with explicit color flags.
| Option | Purpose |
|---|---|
--theme <name> |
Apply one of the 15 built-in themes |
--bg, --fg |
Set required base colors |
--line, --accent, --muted |
Refine connectors, highlights, and secondary text |
--surface, --border |
Refine node fill and stroke |
--font <name> |
Set the SVG font family |
| Option | Purpose |
|---|---|
--transparent |
Remove the SVG background |
--padding <n> |
Set canvas padding |
--node-spacing <n> |
Set horizontal node spacing |
--layer-spacing <n> |
Set vertical layer spacing |
--component-spacing <n> |
Separate disconnected components |
--interactive |
Enable XY chart hover tooltips |
| Option | Purpose |
|---|---|
--width <n> |
Set output width from 100 to 10000 pixels while preserving aspect ratio |
--transparent |
Preserve a transparent background |
| Option | Purpose |
|---|---|
--use-ascii |
Replace Unicode box drawing with plain ASCII |
--padding-x, --padding-y |
Tune diagram spacing |
--box-border-padding |
Tune padding inside node boxes |
--color-mode <mode> |
none, auto, ansi16, ansi256, truecolor, or html |
Run node scripts/render.mjs --help or node scripts/batch.mjs --help for the authoritative CLI list.
LR for wide flows and TB for narrow documents.assets/example_diagrams/ and consult the diagram reference.After rendering:
<svg; confirm PNG output opens as a valid image; confirm text output contains visible diagram content.Run both npm test and npm run validate when changing this skill, its scripts, templates, or references.
npm install in <skill-root>; the CLI also attempts a first-run install.node scripts/themes.mjs and use an exact listed name.references/DIAGRAM_TYPES.md, reduce to the failing statement, then restore the diagram incrementally.--node-spacing, --layer-spacing, or --component-spacing.--color-mode none.| Resource | Read or use when |
|---|---|
references/DIAGRAM_TYPES.md |
Authoring or debugging Mermaid syntax |
references/THEMES.md |
Comparing themes or defining custom colors |
references/api_reference.md |
Extending scripts or calling beautiful-mermaid directly |
docs/THEME_GALLERY.md |
Choosing a theme visually |
assets/example_diagrams/ |
Starting from a supported diagram template |
scripts/render.mjs |
Rendering one diagram |
scripts/batch.mjs |
Rendering a directory in parallel |
scripts/themes.mjs |
Listing installed themes |