Skip to content

About

Turn rough notes from any file — docx, pdf, xlsx, csv or pasted text — into Mermaid, draw.io and Lucidchart diagrams, then export SVG/PNG/JPG and a combined PDF. A Claude Agent Skill supporting flowcharts, ERDs, sequence, class, C4, state, gantt and git graphs.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

notes-to-diagram

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

Supported diagrams

Class · Sequence · Flowchart · ERD · C4 (context/container/component) · State · Git graph · Gantt · Pie & bar

What makes it more than "ask Claude for a diagram"

  • 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.py catches the errors that render as a blank box rather than a message: reserved words used as node ids, unclosed alt blocks, 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.

Install

Claude apps (web, desktop, mobile)

Requires a Pro, Max, Team or Enterprise plan with code execution enabled.

  1. Download dist/notes-to-diagram.skill.
  2. In Claude, open Settings → Capabilities → Skills (on Team/Enterprise: Customize → Skills).
  3. Upload skill and select the file.
  4. Make sure the toggle is on.

Then just ask: "Turn these notes into a flowchart."

Claude Code — plugin marketplace

/plugin marketplace add conceptwebworld26/notes-to-diagram
/plugin install notes-to-diagram@notes-to-diagram-marketplace

Claude Code — manual

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.

Claude API

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.

Rendering dependencies

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 --status

Using the scripts directly

They'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

Repository layout

.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.

Known limits

  • 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.py detects 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.

Contributing

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.

License

MIT — see LICENSE.

About

Turn rough notes from any file — docx, pdf, xlsx, csv or pasted text — into Mermaid, draw.io and Lucidchart diagrams, then export SVG/PNG/JPG and a combined PDF. A Claude Agent Skill supporting flowcharts, ERDs, sequence, class, C4, state, gantt and git graphs.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages