Diagram Design gives your coding agent an eye for diagrams. Ask in plain words for an architecture diagram, a quadrant of projects by impact and effort, or a sequence of an API call with token refresh, and the agent picks one of 50 diagram types, states its plan and writes a single HTML file with inline SVG that you open by double-clicking. The look is deliberately editorial: no drop shadows, no rounded-box clutter, one accent colour.
It can match your brand. Point it at your website once and it pulls your palette and fonts, checks the text contrast, and saves the result as a profile, so every diagram after that fits your site. It can also redraw existing draw.io, Mermaid, Excalidraw or PlantUML files in its style, and export PNG or SVG. Types run from flowcharts, sequences and ERDs to Wardley maps, kanban boards, exploded product views and biology pathway maps.
It works with Claude Code, Codex, GitHub Copilot, Cursor, Factory Droid, Qoder, Pi and other Agent Skills hosts. It is by Cathryn Lavery, MIT-licensed, with about 67,000 stars and 75 contributors since April 2026. Its README is frank that output depends on your model and is not an editable source format.
- Repository: github.com/cathrynlavery/diagram-design
- Licence: MIT (MIT License)
- Language: HTML. Stars: 66.9K. Forks: 4,453. Last push: Nov 12, 2026.
- Scan: safe, Nov 13, 2026, commit f6db0de
Who it is for
Developers documenting systems, product and engineering leads preparing reviews, writers and founders who need clean diagrams for posts and decks, and anyone tired of default Mermaid output. You need a coding agent.
Getting started
1. Install the skill into your agent (Node 18 or later)
npx skills add cathrynlavery/diagram-design2. Or in Claude Code, add the marketplace for updates and slash commands
/plugin marketplace add cathrynlavery/diagram-design3. Then install the plugin
/plugin install diagram-design@diagram-design4. Ask for a diagram
Make me an architecture diagram of my app: frontend, backend, database, Redis cache.Diagrams load their fonts from Google Fonts when opened, which shows Google the viewer's IP address; remove the font link or open them offline to avoid that. PNG export needs Playwright and a headless browser.
Safety scan
We cloned cathrynlavery/diagram-design at commit f6db0de on Nov 13, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.
- No secret hits, no pattern hits and no committed binaries across 763 files and about 134,000 lines, mostly Python scripts and HTML examples.
- 62 advisories, 5 critical and 37 high, all in .github/ci, the lockfiles the maintainers use to run tests. 61 are in the CI copy of Pillow 12.1.1 (the criticals are image-decoding memory bugs) and 1 high is in a CI-pinned Claude Code. The skill's own scripts do not import Pillow; PNG export uses whatever Playwright you install yourself.
- The extra pass for skill repos found only test material. The injection phrases are adversarial fixtures that check imported Mermaid, draw.io, Excalidraw and PlantUML text is treated as plain labels, never instructions. No hidden characters, exfiltration hosts, credential paths, pipe-to-shell or hook files.
- PRIVACY.md says the skill has no server, accounts, analytics or telemetry, and the code matches. The hosts are Google Fonts, GitHub, a plugin schema URL in a build script, logo sources for icons, and test domains such as evil.example.
- Four workflows, no pull_request_target, and both third-party actions are pinned to commits. A security policy, Dependabot, contributing guide and code of conduct are present.
What the scanner counted
| Check | Result |
|---|---|
| Secrets | None found. |
| Suspicious code | None found. |
| Install-time code | None: nothing runs at install beyond the package manager itself. |
| Committed binaries | None. |
| CI workflows | 4 workflows. None use pull_request_target. 0 of 2 third-party actions pinned to a tag rather than a commit. |
| Network hosts | 20 distinct hosts referenced from source; most often example.invalid, fonts.googleapis.com, github.com, evil.example. No URLs to bare IP addresses. |
| Known vulnerabilities | 62 advisories across 15 pinned packages: 5 critical, 37 high, 20 moderate, 0 low. .github/ci/node/package-lock.json: 9 packages, 1 advisories; .github/ci/python/uv.lock: 6 packages, 61 advisories. |
| Project hygiene | Has security policy, automated dependency updates, licence file, contributing guide. Missing CodeQL. |
| OpenSSF Scorecard | Not scored: the project is not in Scorecard's weekly index. |
The raw findings
Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.
Worst known vulnerabilities (24 of 62)
| Advisory | Severity | Package | Summary |
|---|---|---|---|
| GHSA-332p-7hrc-92wf | critical | pillow@12.1.1 | Pillow: Heap buffer overflow in _tiffWriteProc when saving TIFF to BytesIO |
| GHSA-5x8w-8jj5-q52h | critical | pillow@12.1.1 | Pillow: Heap buffer overflow in FlashPix (FPX) JPEG decoding leads to code execution |
| GHSA-8g5g-8vmr-9782 | critical | pillow@12.1.1 | Pillow: Heap buffer overflow in ImagingJpegDecode |
| GHSA-v9pv-5gc8-w2m6 | critical | pillow@12.1.1 | Pillow multi-frame loaders can reuse stale native image storage after mode transitions |
| GHSA-w889-685w-c8fh | critical | pillow@12.1.1 | Pillow: Argument Injection in Ghostscript call, potentially leading into RCE |
| GHSA-5xjx-9qx6-jcrv | high | @anthropic-ai/claude-code@2.1.229 | Claude Code: TOCTOU Race in Edit Tool Allows File Writes Outside the Workspace |
| GHSA-22hg-r758-rrw9 | high | pillow@12.1.1 | Pillow: Infinite loop in MIC n_frames when the embedded TIFF |
| GHSA-27h8-gf7j-v5hc | high | pillow@12.1.1 | Pillow: NULL dereference in ImagingExpand via rank filters on zero-size images |
| GHSA-3j72-p6qg-6xp7 | high | pillow@12.1.1 | Pillow: TarIO negative size field causes infinite CPU-spin loop |
| GHSA-45hq-cxwh-f6vc | high | pillow@12.1.1 | Pillow `BdfFontFile`: `Image.new()` called without `_decompression_bomb_check()` - bomb protection bypass via font loadi… |
| GHSA-58r4-6rv3-gfh8 | high | pillow@12.1.1 | Pillow: Out-of-bounds access in _imagingmorph on a zero-width image |
| GHSA-5x94-69rx-g8h2 | high | pillow@12.1.1 | Pillow: `FontFile.compile()`: `Image.new()` called without `_decompression_bomb_check()` |
| GHSA-5xm2-6676-qcp9 | high | pillow@12.1.1 | Pillow: APNG background disposal allocates full canvas before decompression bomb check |
| GHSA-62p4-gmf7-7g93 | high | pillow@12.1.1 | Pillow: Out-of-bounds read via attacker-controlled row stride on Pillow's mmap path (McIdas AREA files) |
| GHSA-65qm-jvmh-6pqg | high | pillow@12.1.1 | Pillow: GIF seek keeps rejected size after DecompressionBombError, allowing DoS |
| GHSA-6r8x-57c9-28j4 | high | pillow@12.1.1 | Pillow: Heap out-of-bounds write `Image.paste()` / `Image.crop()` via signed coordinate overflow |
| GHSA-78g4-xqwv-q3g8 | high | pillow@12.1.1 | Pillow: Bundled libopenjp2 2.5.4 in all wheels since 11.1.0 carries OSV-2025-219 heap-buffer-overflow write reachable fr… |
| GHSA-7mwm-ghpf-9vrm | high | pillow@12.1.1 | Pillow: Double free in ImagingScaleAffine on calloc failure via Image.transform |
| GHSA-8v84-f9pq-wr9x | high | pillow@12.1.1 | Pillow `PcfFontFile._load_bitmaps()`: `Image.frombytes()` called without `_decompression_bomb_check()` - bomb protection… |
| GHSA-9hw9-ch79-4vh6 | high | pillow@12.1.1 | Pillow: Controlled heap out-of-bounds write in Pillow `ImageCmsTransform.apply()` via output mode mismatch |
| GHSA-9v9v-9qvf-h2hj | high | pillow@12.1.1 | Pillow: Heap over-read in WMF/EMF rendering via 16-bit dimension truncation (Windows builds) |
| GHSA-c6hw-5grf-ff96 | high | pillow@12.1.1 | Pillow: OOB read in TiffDecode.c tile and RGBA paths leaks heap memory into pixels |
| GHSA-cp9v-662q-vvx9 | high | pillow@12.1.1 | Pillow: NULL pointer dereference in Image.merge via an unvalidated band 0 |
| GHSA-f2g6-542v-9j58 | high | pillow@12.1.1 | Pillow: Infinite loop in PdfParser.rewrite_pages on page tree Parent cycle |
By the numbers
| Stars | 66.9K |
|---|---|
| Forks | 4,453 |
| Contributors | 75 |
| Commits | 465 |
| Open issues | 17 |
| Open pull requests | 18 |
| Releases | 0 |
| Latest release | none tagged |
| Licence | MIT |
| Main language | HTML |
| Project age | 7 months |
| Last push | Nov 12, 2026 |
| Tracked files | 763 |
| Lines of code | 133.8K |
| Checkout size | 33 MB |
Lines by language: Python 75.6K, HTML 40.9K, Markdown 14.7K, YAML 1,342, JSON 1,313, TOML 12.
Questions
Is Diagram Design free?
Yes. It is free and MIT-licensed, with no account. Your only cost is your agent's usage.
Can I edit the diagrams afterwards?
You edit by asking the agent for changes. The output is a finished HTML and SVG file rather than an editable source format such as draw.io, and the README says so plainly.
Can it make diagrams match my company's brand?
Yes. Ask it to onboard your website and it reads your colours and fonts, checks contrast and saves a profile you can reuse across projects.
Diagram Design or Archify?
Both are diagram skills on this list. Diagram Design focuses on polished, on-brand static diagrams in many types. Archify makes interactive diagrams you can click through and trace.
This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.
