Turn rough, unstructured notes into finished diagrams — for Mermaid, draw.io and Lucidchart — then export them to SVG/PNG/JPG and bundle everything into one PDF.
Feed it a .docx, .pdf, .xlsx, .csv, .txt, .pptx, or just paste some bullet points. Say which diagram you want. You get back the source files, editable diagrams, rendered images, and an honest list of what the notes didn't cover.
meeting notes ─┐
spreadsheet ─┼─► extract ─► inventory ─► diagram ─┬─► mermaid/ .mmd
pasted bullets ─┘ ├─► drawio/ .drawio
├─► lucidchart/ import bundle
├─► images/ .svg .png .jpg
└─► diagrams.pdf
Class · Sequence · Flowchart · ERD · C4 (context/container/component) · State · Git graph · Gantt · Pie & bar
- An extraction step before any syntax is written. Notes are restated as a structured inventory first, so every node traces back to something you actually wrote. Nothing gets invented because the domain implies it.
- Assumptions are surfaced, not buried. Inferred cardinality, direction and ordering come back as a short list you can correct in one line.
- A real linter.
lint_mermaid.pycatches the errors that render as a blank box rather than a message: reserved words used as node ids, unclosedaltblocks, invalid ERD cardinality, gantt dependencies pointing at nonexistent tasks, git merges into the current branch, node ids differing only by case. - Native draw.io output. Real, editable mxGraph shapes with automatic layered layout — not a picture pasted into a canvas.
- Honest Lucidchart support. Lucidchart has no open authoring format, so the skill builds both of its real import routes and tells you which one your diagram type needs.
Requires a Pro, Max, Team or Enterprise plan with code execution enabled.
- Download
dist/notes-to-diagram.skill. - In Claude, open Settings → Capabilities → Skills (on Team/Enterprise: Customize → Skills).
- Upload skill and select the file.
- Make sure the toggle is on.
Then just ask: "Turn these notes into a flowchart."
/plugin marketplace add conceptwebworld26/notes-to-diagram
/plugin install notes-to-diagram@notes-to-diagram-marketplace
git clone https://github.com/conceptwebworld26/notes-to-diagram.git
mkdir -p ~/.claude/skills
cp -r notes-to-diagram/skills/notes-to-diagram ~/.claude/skills/Restart Claude Code. For a single project instead, copy into .claude/skills/ in the project root and commit it.
curl https://api.anthropic.com/v1/skills \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-F "file=@dist/notes-to-diagram.skill"Then pass the returned skill_id in the container parameter alongside the code execution tool. Note that custom skills are visible to the whole workspace, and API containers have no network access, so image and PDF export won't work there — see below.
Extraction, linting, .mmd, .drawio and the Lucidchart bundle are pure Python and work anywhere.
Image and PDF export additionally need mermaid-cli and a Chrome/Chromium binary. The skill bootstraps these itself on first use (scripts/ensure_renderer.py) and caches the result, so a blocked network costs one attempt rather than one per run.
| Environment | Rendering | Notes |
|---|---|---|
| Claude Code (local machine) | Usually yes | Bootstrap installs what's missing |
| Claude apps | Depends on container network settings | Falls back cleanly if blocked |
| Claude API | No | Sandboxed container, no network or runtime installs |
If rendering isn't available you still get every source file, and .mmd renders natively in GitHub, GitLab, VS Code, Notion, Obsidian and at mermaid.live. To enable it manually:
npm install -g @mermaid-js/mermaid-cli
npx puppeteer browsers install chrome
# or a system browser:
sudo apt-get install -y chromium
export PUPPETEER_EXECUTABLE_PATH=$(which chromium)Check status without installing:
python3 skills/notes-to-diagram/scripts/ensure_renderer.py --statusThey're standalone — useful outside Claude too.
cd skills/notes-to-diagram
# pull text out of anything
python3 scripts/extract_points.py notes.docx
python3 scripts/extract_points.py data.xlsx --list-sheets
# catch silent syntax breakers
python3 scripts/lint_mermaid.py diagram.mmd --strict
# graph model JSON -> editable draw.io
python3 scripts/build_drawio.py graph.json -o out/drawio/flow.drawio
# Lucidchart import bundle, with a compatibility check
python3 scripts/build_lucid.py out/mermaid/flow.mmd \
--drawio out/drawio/flow.drawio --outdir out/lucidchart
# images + combined pdf
python3 scripts/render_export.py out/mermaid \
--formats svg,png,jpg --outdir out/images --pdf out/diagrams.pdf.claude-plugin/
marketplace.json Claude Code marketplace catalog
plugin.json plugin manifest
skills/notes-to-diagram/
SKILL.md the workflow Claude follows
references/ extraction playbooks, syntax, platforms, input handling
scripts/ extraction, linting, generation, rendering
evals/evals.json test prompts
dist/
notes-to-diagram.skill packaged, for Claude apps and the API
The reference files are worth reading even if you never run the skill — references/extraction-playbooks.md documents which phrases in messy notes signal which diagram elements, per diagram type.
- Sequence, Gantt, git graph and pie charts don't convert faithfully to draw.io. There's no honest node-and-edge form for a lifeline or a time axis. The skill says so and points at draw.io's own Arrange → Insert → Advanced → Mermaid instead of shipping a flattened diagram.
- Lucidchart's Mermaid panel covers a subset of types (no git graph, pie or xychart) and needs a paid plan.
build_lucid.pydetects this and routes you to the draw.io import instead. - Scanned PDFs yield no text. The skill detects this and tells you to rasterize and read the pages visually.
- Diagrams past ~20 nodes stop communicating. The skill prefers splitting by concern over shrinking.
Issues and PRs welcome. If you're adding a diagram type, it needs three things: a playbook section in references/extraction-playbooks.md (signal phrases, defaults, worked example), a syntax section in references/syntax-reference.md, and linter coverage in scripts/lint_mermaid.py.
MIT — see LICENSE.