skills$openclaw/beautiful-mermaid
ntlx4.7k

by ntlx

beautiful-mermaid – OpenClaw Skill

beautiful-mermaid is an OpenClaw Skills integration for coding workflows. |

4.7k stars1.4k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namebeautiful-mermaid
description| OpenClaw Skills integration.
ownerntlx
repositoryntlx/beautiful-mermaid
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @ntlx/beautiful-mermaid
last updatedFeb 7, 2026

Maintainer

ntlx

ntlx

Maintains beautiful-mermaid in the OpenClaw Skills directory.

View GitHub profile
File Explorer
2 files
.
_meta.json
284 B
SKILL.md
7.0 KB
SKILL.md

name: beautiful-mermaid description: | Render beautiful Mermaid diagrams as SVGs or ASCII art. Use when user sends Mermaid code blocks (```mermaid ... ```) and wants to visualize them. Supports: Flowcharts, State, Sequence, Class, ER diagrams. Features: Ultra-fast (100+ diagrams <500ms), zero DOM dependencies, 15 built-in themes, Shiki theme compatibility. Perfect for: Telegram messages, terminal output, web interfaces, CLI tools.

Beautiful Mermaid

Render Mermaid diagrams as beautiful SVGs or ASCII art. Ultra-fast, fully themeable, zero DOM dependencies. Built for the AI era.

When to Use

Use this skill when:

  • User sends Mermaid code blocks (```mermaid ... ```)
  • User asks to "render" or "visualize" a diagram
  • User wants terminal/ASCII output for diagrams
  • User needs themed diagrams (15 built-in themes)
  • User wants SVG output for rich UIs

Installation

npm install beautiful-mermaid
# or
bun add beautiful-mermaid
# or
pnpm add beautiful-mermaid

Quick Start

SVG Output (Default)

import { renderMermaid } from 'beautiful-mermaid'

const svg = await renderMermaid(`
  graph TD
    A[Start] --> B{Decision}
    B -->|Yes| C[Action]
    B -->|No| D[End]
`)

ASCII Output (Terminal)

import { renderMermaidAscii } from 'beautiful-mermaid'

const ascii = renderMermaidAscii(`graph LR; A --> B --> C`)

Output:

┌───┐     ┌───┐     ┌───┐
│   │     │   │     │   │
│ A │────►│ B │────►│ C │
│   │     │   │     │   │
└───┘     └───┘     └───┘

Supported Diagrams

TypeSyntaxDescription
Flowchartgraph TD/LR/BT/RLAll directions supported
StatestateDiagram-v2State machine diagrams
SequencesequenceDiagramSequence/interaction diagrams
ClassclassDiagramClass inheritance diagrams
ERerDiagramEntity-relationship diagrams

Flowchart Example

```mermaid graph TD A[Start] --> B{Decision} B -->|Yes| C[Action] B -->|No| D[End] C --> D ```

Sequence Example

```mermaid sequenceDiagram Alice->>Bob: Hello Bob! Bob-->>Alice: Hi Alice! ```

Theming System

Built-in Themes (15)

import { renderMermaid, THEMES } from 'beautiful-mermaid'

// Use a built-in theme
const svg = await renderMermaid(diagram, THEMES['tokyo-night'])

// Available themes:
THEMES['zinc-light']
THEMES['zinc-dark']
THEMES['tokyo-night']
THEMES['tokyo-night-storm']
THEMES['tokyo-night-light']
THEMES['catppuccin-mocha']
THEMES['catppuccin-latte']
THEMES['nord']
THEMES['nord-light']
THEMES['dracula']
THEMES['github-light']
THEMES['github-dark']
THEMES['solarized-light']
THEMES['solarized-dark']
THEMES['one-dark']

Custom Theme (Mono Mode)

// Just two colors - the system derives everything
const svg = await renderMermaid(diagram, {
  bg: '#1a1b26',  // Background
  fg: '#a9b1d6',  // Foreground
})

Enriched Theme

const svg = await renderMermaid(diagram, {
  bg: '#1a1b26',
  fg: '#a9b1d6',
  line: '#3d59a1',    // Edge color
  accent: '#7aa2f7',  // Arrow heads
  muted: '#565f89',   // Secondary text
  surface: '#292e42', // Node fill
  border: '#3d59a1',  // Node stroke
})

Shiki Theme Compatibility

import { renderMermaid, fromShikiTheme } from 'beautiful-mermaid'
import { getHighlighter } from 'shiki'

const highlighter = await getHighlighter({ theme: 'vitesse-dark' })
const colors = fromShikiTheme(highlighter.getTheme('vitesse-dark'))
const svg = await renderMermaid(diagram, colors)

ASCII/Unicode Output

For terminal environments:

import { renderMermaidAscii } from 'beautiful-mermaid'

// Unicode (prettier, default)
const unicode = renderMermaidAscii(`graph LR; A --> B`)

// Pure ASCII (maximum compatibility)
const ascii = renderMermaidAscii(`graph LR; A --> B`, { useAscii: true })

// Custom spacing
renderMermaidAscii(diagram, {
  useAscii: false,
  paddingX: 5,          // Horizontal spacing
  paddingY: 5,          // Vertical spacing
  boxBorderPadding: 1,  // Inner padding
})

API Reference

renderMermaid(text, options?): Promise<string>

Render Mermaid to SVG.

Options:

OptionTypeDefaultDescription
bgstring#FFFFFFBackground color
fgstring#27272AForeground color
linestring?Edge color
accentstring?Arrow heads, highlights
mutedstring?Secondary text
surfacestring?Node fill tint
borderstring?Node stroke
fontstringInterFont family
transparentbooleanfalseTransparent background

renderMermaidAscii(text, options?): string

Render Mermaid to ASCII/Unicode. Synchronous.

Options:

OptionTypeDefaultDescription
useAsciibooleanfalseUse ASCII instead of Unicode
paddingXnumber5Horizontal node spacing
paddingYnumber5Vertical node spacing
boxBorderPaddingnumber1Inner box padding

THEMES: Record<string, DiagramColors>

All 15 built-in themes.

fromShikiTheme(theme): DiagramColors

Extract diagram colors from Shiki theme.

Usage in OpenClaw

Telegram Integration

For Telegram, render as SVG and send as photo:

import { renderMermaid } from 'beautiful-mermaid'

async function sendMermaid(message: string) {
  const blocks = extractMermaidBlocks(message)
  
  for (const block of blocks) {
    const svg = await renderMermaid(block.code, THEMES['tokyo-night'])
    // Send SVG as photo to Telegram
  }
}

Terminal/CLI Output

import { renderMermaidAscii } from 'beautiful-mermaid'

function printDiagram(code: string) {
  const ascii = renderMermaidAscii(code)
  console.log(ascii)
}

Performance

  • 100+ diagrams in under 500ms
  • Zero DOM dependencies - pure TypeScript
  • Ultra-fast - no browser/Puppeteer needed

Comparison to Alternatives

Featurebeautiful-mermaidmmdc
DependenciesZero DOMPuppeteer
Speed<500ms for 100+ diagramsSlower
ASCII output✅ Native❌ No
Themes15 built-in + ShikiCSS
SizeLightweightHeavy

Example Workflow

Input:

Here is the system architecture:

\`\`\`mermaid
graph TD
  User --> LB[Load Balancer]
  LB --> API[API Server]
  API --> DB[(Database)]
  API --> Cache
\`\`\`

And the flow:

\`\`\`mermaid
sequenceDiagram
  participant U as User
  participant A as API
  U->>A: Request
  A-->>U: Response
\`\`\`

Action: Render both diagrams with appropriate theme.

Output: Send two SVG images with captions.

Resources

README.md

No README available.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

FAQ

How do I install beautiful-mermaid?

Run openclaw add @ntlx/beautiful-mermaid in your terminal. This installs beautiful-mermaid into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/ntlx/beautiful-mermaid. Review commits and README documentation before installing.