mermaid-tools — Claude Code skill: Mermaid diagrams to PNG
Pulls Mermaid blocks out of a markdown file and renders each one as a high-resolution PNG. Handy when diagrams from a README need to land in slides or a report.
npx skills add daymade/claude-code-skills --skill mermaid-tools -a claude-codeWhat mermaid-tools does
The skill walks through a markdown file, finds every Mermaid code block, numbers them in order of appearance and writes two files per diagram: an .mmd with the source and a .png with the image. Numbering keeps the document order intact, so names like 01-diagram-name.png tell you where each diagram sat.
Three files ship in scripts/: extract-and-generate.sh drives the whole run, extract_diagrams.py pulls the code blocks out of markdown, and puppeteer-config.json configures Chrome. Sizing adapts to the diagram type — timeline and gantt get a wide, short canvas, architecture diagrams get a large one, sequence and workflow stay horizontal. Override the defaults with MERMAID_WIDTH, MERMAID_HEIGHT and MERMAID_SCALE.
Check three things before the first run: mmdc --version, google-chrome-stable --version and python3 --version. Missing any of them means the render step fails, so install first. Run the script from inside scripts/ — from anywhere else it cannot find its own dependencies.
What it helps with
- extract every Mermaid diagram from a README as image files
- render high-resolution PNGs for slide decks
- keep diagrams numbered in document order
- match canvas size to the diagram type
- regenerate images after editing the markdown
Example prompts for the agent
- extract the Mermaid diagrams from
docs/architecture.mdand render PNGs - generate print-quality images from
README.md - regenerate diagrams from
guide.mdinto thediagramsfolder
How to install mermaid-tools
1Skills CLI (Vercel)
npx skills add daymade/claude-code-skills --skill mermaid-tools -a claude-code2Manually: put the files in place
~/.claude/skills/mermaid-tools/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/mermaid-tools/
1Skills CLI (Vercel)
npx skills add daymade/claude-code-skills --skill mermaid-tools -a codex2Manually: put the files in place
.agents/skills/mermaid-tools/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add daymade/claude-code-skills --skill mermaid-tools -a cursor2Manually: put the files in place
.cursor/skills/mermaid-tools/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install daymade/claude-code-skills mermaid-tools2Manually: put the files in place
.github/skills/mermaid-tools/SKILL.md1Skills CLI (Vercel)
npx skills add daymade/claude-code-skills --skill mermaid-tools -a gemini-cli2Platform CLI
gemini skills install https://github.com/daymade/claude-code-skills --path daymade-docs/mermaid-toolsManually: put the files in place
.devin/skills/mermaid-tools/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add daymade/claude-code-skills --skill mermaid-tools -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about mermaid-tools
How do I install mermaid-tools in Claude?
Run npx skills add daymade/claude-code-skills --skill mermaid-tools -a claude-code. The skill then lives at ~/.claude/skills/mermaid-tools/SKILL.md.
What does mermaid-tools do?
It finds Mermaid blocks in a markdown file, saves each as .mmd and renders a high-resolution PNG next to it. File numbering follows the order of diagrams in the document.
What has to be installed before running it?
mermaid-cli (mmdc), Google Chrome and Python 3. Verify them with mmdc --version, google-chrome-stable --version and python3 --version.
Source text
SKILL.md · MIT
---
name: mermaid-tools
disable-model-invocation: true
description: Extracts Mermaid diagrams from markdown files and generates high-quality PNG images using bundled scripts. Activates when working with Mermaid diagrams, converting diagrams to PNG, extracting diagrams from markdown, or processing markdown files with embedded Mermaid code.
---
# Mermaid Tools
## Overview
This skill enables extraction of Mermaid diagrams from markdown files and generation of high-quality PNG images. The skill bundles all necessary scripts (`extract-and-generate.sh`, `extract_diagrams.py`, and `puppeteer-config.json`) in the `scripts/` directory for portability and reliability.
## Core Workflow
### Standard Diagram Extraction and Generation
Extract Mermaid diagrams from a markdown file and generate PNG images using the bundled `extract-and-generate.sh` script:
```bash
cd "${CLAUDE_SKILL_DIR}/scripts"
./extract-and-generate.sh "<markdown_file>" "<output_directory>"
```
**Parameters:**
- `<markdown_file>`: Path to the markdown file containing Mermaid diagrams
- `<output_directory>`: (Optional) Directory for output files. Defaults to `<markdown_file_directory>/diagrams`
**Example:**
```bash
cd "${CLAUDE_SKILL_DIR}/scripts"
./extract-and-generate.sh "<markdown_file>" "<output_directory>"
```
### What the Script Does
1. **Extracts** all Mermaid code blocks from the markdown file
2. **Numbers** them sequentially (01, 02, 03, etc.) in order of appearance
3. **Generates** `.mmd` files for each diagram
4. **Creates** high-resolution PNG images with smart sizing
5. **Validates** all generated PNG files
### Output Files
For each diagram, the script generates:
- `01-diagram-name.mmd` - Extracted Mermaid code
- `01-diagram-name.png` - High-resolution PNG image
The numbering ensures diagrams maintain their order from the source document.
## Advanced Usage
### Custom Dimensions and Scaling
Override default dimensions using environment variables:
```bash
cd "${CLAUDE_SKILL_DIR}/scripts"
MERMAID_WIDTH=1600 MERMAID_HEIGHT=1200 ./extract-and-generate.sh "<markdown_file>" "<output_directory>"
```
**Available variables:**
- `MERMAID_WIDTH` (default: 1200) - Base width in pixels
- `MERMAID_HEIGHT` (default: 800) - Base height in pixels
- `MERMAID_SCALE` (default: 2) - Scale factor for high-resolution output
### High-Resolution Output for Presentations
```bash
cd "${CLAUDE_SKILL_DIR}/scripts"
MERMAID_WIDTH=2400 MERMAID_HEIGHT=1800 MERMAID_SCALE=4 ./extract-and-generate.sh "<markdown_file>" "<output_directory>"
```
### Print-Quality Output
```bash
cd "${CLAUDE_SKILL_DIR}/scripts"
MERMAID_SCALE=5 ./extract-and-generate.sh "<markdown_file>" "<output_directory>"
```
## Smart Sizing Feature
The script automatically adjusts dimensions based on diagram type (detected from filename):
- **Timeline/Gantt**: 2400×400 (wide and short)
- **Architecture/System/Caching**: 2400×1600 (large and detailed)
- **Monitoring/Workflow/Sequence/API**: 2400×800 (wide for process flows)
- **Default**: 1200×800 (standard size)
Context-aware naming in the extraction process helps trigger appropriate smart sizing.
## Important Principles
### Use Bundled Scripts
**CRITICAL**: Use the bundled `extract-and-generate.sh` script from this skill's `scripts/` directory. All necessary dependencies are bundled together.
### Change to Script Directory
Run the script from its own directory to properly locate dependencies (`extract_diagrams.py` and `puppeteer-config.json`):
```bash
cd "${CLAUDE_SKILL_DIR}/scripts"
./extract-and-generate.sh "<markdown_file>" "<output_directory>"
```
Running the script without changing to the scripts directory first may fail due to missing dependencies.
## Prerequisites Verification
Before running the script, verify dependencies are installed:
1. **mermaid-cli**: `mmdc --version`
2. **Google Chrome**: `google-chrome-stable --version`
3. **Python 3**: `python3 --version`
If any are missing, consult `references/setup_and_troubleshooting.md` for installation instructions.
## Troubleshooting
For detailed troubleshooting guidance, refer to `references/setup_and_troubleshooting.md`, which covers:
- Browser launch failures
- Permission issues
- No diagrams found
- Python extraction failures
- Output quality issues
- Diagram-specific sizing problems
Quick fixes for common issues:
**Permission denied:**
```bash
chmod +x "${CLAUDE_SKILL_DIR}/scripts/extract-and-generate.sh"
```
**Low quality output:**
```bash
MERMAID_SCALE=3 ./extract-and-generate.sh "<markdown_file>" "<output_directory>"
```
**Chrome/Puppeteer errors:**
Verify all WSL2 dependencies are installed (see references for full list).
## Bundled Resources
### scripts/
This skill bundles all necessary scripts for Mermaid diagram generation:
- **extract-and-generate.sh** - Main script that orchestrates extraction and PNG generation
- **extract_diagrams.py** - Python script for extracting Mermaid code blocks from markdown
- **puppeteer-config.json** - Chrome/Puppeteer configuration for WSL2 environment
All scripts must be run from the `scripts/` directory to properly locate dependencies.
### references/setup_and_troubleshooting.md
Comprehensive reference documentation including:
- Complete prerequisite installation instructions
- Detailed environment variable reference
- Extensive troubleshooting guide
- WSL2-specific Chrome dependency setup
- Validation procedures
Load this reference when dealing with setup issues, installation problems, or advanced customization needs.
© daymade · MIT · daymade/claude-code-skills