Diagram Design
cathrynlavery/diagram-design
Creates branded diagrams, from architecture, flowchart and sequence to charts and maps, as self-contained HTML with inline SVG, with import from draw.io, Mermaid and Excalidraw.
A skill your agent uses when the user wants to create any diagram: flowchart, architecture, UML (sequence/class), ER, mindmap, network topology, or any visual diagram.
$ npx skills add bruc3van/bruce-drawio --skill bruce-drawio -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bruc3van/bruce-drawio bruce-drawio --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "bruce-drawio" agent skill from https://github.com/bruc3van/bruce-drawio/tree/main into .claude/skills/bruce-drawio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bruce-drawio", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bruc3van/bruce-drawio --skill bruce-drawio -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bruc3van/bruce-drawio bruce-drawio --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "bruce-drawio" agent skill from https://github.com/bruc3van/bruce-drawio/tree/main into .agents/skills/bruce-drawio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bruce-drawio", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bruc3van/bruce-drawio --skill bruce-drawio -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bruc3van/bruce-drawio bruce-drawio --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "bruce-drawio" agent skill from https://github.com/bruc3van/bruce-drawio/tree/main into .cursor/skills/bruce-drawio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bruce-drawio", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bruc3van/bruce-drawio --skill bruce-drawio -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bruc3van/bruce-drawio bruce-drawio --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "bruce-drawio" agent skill from https://github.com/bruc3van/bruce-drawio/tree/main into .gemini/skills/bruce-drawio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bruce-drawio", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install bruc3van/bruce-drawio bruce-drawioInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add bruc3van/bruce-drawio --skill bruce-drawio -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "bruce-drawio" agent skill from https://github.com/bruc3van/bruce-drawio/tree/main into .github/skills/bruce-drawio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bruce-drawio", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bruc3van/bruce-drawio --skill bruce-drawio -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install bruc3van/bruce-drawio bruce-drawio --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "bruce-drawio" agent skill from https://github.com/bruc3van/bruce-drawio/tree/main into .opencode/skills/bruce-drawio/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bruce-drawio", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
bruce-drawioA skill your agent uses when the user wants to create any diagram: flowchart, architecture, UML (sequence/class), ER, mindmap, network topology, or any visual diagram.
Bruce Drawio is an agent skill from bruc3van/bruce-drawio. Use this skill when the user wants to create any diagram: flowchart, architecture, UML (sequence/class), ER, mindmap, network topology, or any visual diagram. Trigger words: "draw", "diagram", "flowchart", "architecture", "UML", "sequence diagram", "mindmap", "ER diagram", "network topology", "visualize", "draw.io", "drawio". Workflow: understand requirements - generate drawio XML directly - validate - CLI export PNG/SVG/PDF, falling back to an app.diagrams.net browser link when draw.io desktop is unavailable.
Its SKILL.md is about 5.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts and reference files (for example `README.md`, `README_EN.md` and `evals/evals.json`).
It sits in Development, covering Diagrams. It works with draw.io. The repository describes itself as: 跨平台的 draw.io (diagrams.net) 图表生成技能,适用于 Claude Code、codex、zcode、workbuddy、OpenClaw 等各类 AI 编程 Agent。Agent 直接生成 drawio XML,校验后通过 CLI 导出图片;没有桌面版时自动降级为 draw.io 官网打开链接。 The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ac561a0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Python and JavaScript), which the agent can run.
Shell commands in SKILL.md call:
pythonnodebrewwingetFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Bruce Drawio loads about 5.8k tokens when it runs, and up to ~21k if it reads all its reference files. Until then it costs about 134 tokens; SKILL.md has 2,833 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from bruc3van/bruce-drawio at commit ac561a0, republished under its MIT licence (© bruc3van). 2,833 words, ~5,815 tokens.
.claude/skills/bruce-drawio/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Each numbered step below has a matching ## Step N section. Follow them in order.
1. Understand requirements -> determine diagram type, elements, relationships
2. Generate XML directly -> write drawio XML; read the matching reference section first
3. Apply layout rules -> coordinates, spacing, sizes, cell order
4. Save + validate (DO NOT SKIP) -> write the .drawio file, run the validator, fix every error
5. CLI export (optional) -> call draw.io desktop CLI to export an image (skip if not installed)
6. Browser link (conditional) -> only when the export failed, or the user asks for it
7. Deliver to user -> image + .drawio file path, kept shortSteps 5 and 6 are two routes to the same goal, not two deliverables to stack up. Export is the default. The browser link is the fallback that needs nothing installed — it guarantees the user can always see the diagram, so it is never a dead end, but it is also a detached copy of the file (Step 6d) and should not be pushed on a user who already has an image.
Determine:
You MUST write the XML directly. Do not call any script to generate it.
| Diagram type | Read before writing |
|---|---|
| Architecture | references/best-practices.md → Architecture Diagram Templates, then references/examples.md → Example 2 |
| Flowchart | references/examples.md → Example 1 |
| Mindmap | references/examples.md → Example 3 |
| ER | references/examples.md → Example 4 |
| UML sequence/class, network, anything else | references/best-practices.md → General Rules, then write from your own knowledge |
references/examples.md holds complete, validated diagrams — copying the structure of the
closest example is faster and more reliable than composing one from scratch. Read only the
sections you need, not the whole file.
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" agent="drawio-skill" version="21.0.0" type="device">
<diagram name="DiagramName" id="diagram-1">
<mxGraphModel dx="1422" dy="762"
grid="1" gridSize="10"
guides="1" tooltips="1" connect="1"
arrows="1" fold="1"
page="1" pageScale="1"
pageWidth="1600" pageHeight="1200"
math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<!-- nodes and edges here -->
</root>
</mxGraphModel>
</diagram>
</mxfile><mxCell id="node-1" value="Label"
style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=14;"
vertex="1" parent="1">
<mxGeometry x="100" y="100" width="160" height="60" as="geometry" />
</mxCell>
 inside value, for example value="API
Gateway"\n inside value; draw.io will render it as backslash + n texthtml=1 on nodes, but still use 
 as the default line-break form for predictable output<mxCell id="edge-1" value=""
style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;"
edge="1" parent="1" source="node-1" target="node-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>draw.io paints cells in document order: whatever comes later in <root> is drawn on top.
Emit cells back-to-front:
1. Background plate (the big gray rectangle, if any)
2. Layer containers (semi-transparent blocks)
3. Sub-group containers
4. Leaf nodes / labels
5. EdgesWriting the background rectangle after the nodes hides the entire diagram behind a gray block — this is the single most destructive ordering mistake, and it renders as a blank image with no error anywhere.
A cell's x/y are relative to its parent. That gives you two valid approaches, and
mixing them is what produces diagrams where everything is shifted off-screen:
| Approach | When | parent | Coordinates |
|---|---|---|---|
| Flat + absolute (default) | Everything except ER/UML tables, including the Layered Block Style — visual nesting comes from the numbers, not the tree | always "1" | absolute canvas coordinates |
| True nesting | Only when the shape genuinely owns its children: swimlane tables (ER, UML class), childLayout=stackLayout rows | the container's ID | relative to the container's top-left, so a child at y="30" sits 30px below the container's top |
Default to flat + absolute. The Layered Block Style puts every leaf node at parent="1"
with absolute coordinates even though it looks nested — see references/examples.md Example 2.
Only ER/UML table rows use true nesting, where a row's x is omitted and y is its offset
inside the swimlane — see Example 4.
whiteSpace=wrap;html=1; on all nodes so long text wraps instead of overflowing| Type | Direction | Primary axis | Spacing (between edges) | Alignment |
|---|---|---|---|---|
| Flowchart | Top-to-bottom | Y increases | 100px vertical | Center x |
| Architecture | Layered block (preferred) | Y increases | 20px between layers | Left label + container rows |
| UML Sequence | Left-to-right participants | X increases | 200px horizontal | Top-aligned |
| UML Class | Grid / top-to-bottom | Y increases | 100px vertical, 80px horizontal | Left-aligned columns |
| ER Diagram | Spread / grid | Both axes | 120px both | Grid-aligned |
| Mindmap | Center-outward radial | Both axes | 150px from center per level | Radial symmetric |
| Network | Hierarchical layers | Y increases | 100px vertical, 120px horizontal | Center each layer |
Before finalizing coordinates, verify:
pageWidth in mxGraphModel; for tall ones increase pageHeightUse this formula to center N items horizontally in a row:
total_width = N * node_width + (N - 1) * gap
start_x = round((pageWidth - total_width) / 2)
item[i].x = start_x + i * (node_width + gap)Round the result to a whole number. Do not then "fix" it to a multiple of 10 by nudging individual items — that breaks the equal-gap invariant, which matters far more than the grid.
For vertical centering in a column, apply the same logic to Y axis.
For rows inside a fixed-width container, also check fill density:
inner_width = container_width - 2 * side_pad
gap = (inner_width - N * item_width) / (N - 1)If gap is much larger than the item width, or side padding is much larger than gap, adjust one of:
For incomplete last rows, center the remaining items instead of left-aligning them and leaving a large blank tail.
| Element | Width | Height |
|---|---|---|
| Standard node | 160 | 60 |
| Decision (rhombus) | 160 | 80 |
| Database (cylinder) | 140 | 80 |
| Actor (UML) | 40 | 60 |
| Start/End (rounded) | 160 | 60 |
| Mindmap center | 180 | 80 |
| Mindmap branch | 140 | 50 |
| Mindmap leaf | 120 | 40 |
| ER table header | 200 | varies |
| Group/container | auto | auto |
Pick one size per role and keep it identical for every node of that role in the diagram. A
start node that is 20px wider than the process nodes below it reads as a mistake, not as
emphasis — use color and fontStyle=1 to emphasize instead.
Write the .drawio file to the user's working directory, then run the validator on it.
python scripts/validate_drawio.py diagram.drawioUse python3 if python is missing. It exits non-zero when it finds errors.
Fix every ERROR and re-run until it exits clean. Do not export or deliver a file that still reports errors — each one is a diagram that renders wrong or not at all. The validator catches what re-reading your own XML reliably misses:
| Reported as | Checks |
|---|---|
| ERROR | malformed XML, duplicate IDs, missing root cells, dangling parent/source/target, missing as="geometry", literal \n in a label, partially overlapping nodes |
| WARN | missing whiteSpace=wrap / html=1, fontSize under 12, fractional coordinates, content past pageWidth/pageHeight |
Treat WARNs as defects too unless you have a specific reason — a "content extends past pageWidth" warning means part of the diagram falls outside the page.
Note what the validator cannot see: it reports partial overlaps only, since full containment is how the Layered Block Style expresses nesting. It says nothing about whether the layout is balanced or the diagram is readable. That is 4b.
Re-read your XML and confirm:
edgeStyle=orthogonalEdgeStyle for clean routing (except mindmaps, which use curved=1)rhombus; database nodes use shape=cylinder3This step needs the draw.io desktop app, and it is the preferred route: it renders an
image the user can see immediately, and the .drawio it reads is the same file the desktop
app edits in place. If the app is not installed, do not stop and do not block on an install —
go to Step 6, which needs nothing but a browser.
Use the syntax of the shell you actually have. On Windows the default shell is usually
PowerShell, where which and ls "/c/..." do not exist and the check fails for the wrong
reason. Stop at the first command that succeeds.
Windows (PowerShell):
(Get-Command draw.io, drawio -ErrorAction SilentlyContinue | Select-Object -First 1).Source
# then the default install locations
"$env:ProgramFiles\draw.io\draw.io.exe", "$env:LOCALAPPDATA\Programs\draw.io\draw.io.exe" |
Where-Object { Test-Path $_ } | Select-Object -First 1macOS / Linux (bash):
which drawio 2>/dev/null || which draw.io 2>/dev/nullIf PATH lookup fails, check the platform default paths:
# macOS
ls /Applications/draw.io.app/Contents/MacOS/draw.io 2>/dev/null
# Linux
ls /usr/bin/drawio 2>/dev/null || ls /snap/bin/drawio 2>/dev/nullWindows (bash/MSYS2), if that is what you are running in:
ls "/c/Program Files/draw.io/draw.io.exe" 2>/dev/null || \
ls "$LOCALAPPDATA/Programs/draw.io/draw.io.exe" 2>/dev/nullDo not stall the task on an install. Go to Step 6 and deliver the diagram through app.diagrams.net, then mention the desktop app as an optional extra for offline editing and image export:
| Platform | Install Command |
|---|---|
| macOS | brew install --cask drawio |
| Windows | winget install JGraph.Draw |
| Linux | snap install drawio |
| All | Download from https://github.com/jgraph/drawio-desktop/releases |
Do NOT auto-install without user confirmation.
Use the detected path (stored as $DRAWIO) to export:
"$DRAWIO" -x -f png --scale 2 --border 20 -o output.png diagram.drawioOn a headless Linux box the Electron app needs a display and a sandbox opt-out:
xvfb-run -a "$DRAWIO" -x -f png --scale 2 --border 20 --no-sandbox -o output.png diagram.drawioDo not trust the exit code. draw.io desktop is a GUI application; when launched from a shell it often returns 0 immediately, before (or without) writing anything. Always confirm the file landed and is non-empty:
ls -l output.png # bashGet-Item output.png | Select-Object Length # PowerShellIf the file is missing or 0 bytes, treat the export as failed: say so, and deliver via the Step 6 browser link instead. Never report an export you did not verify.
When the desktop app is present, the best way to hand off an editable diagram is the local
file itself — "$DRAWIO" diagram.drawio opens it and saves edits back to the same path. Only
reach for the Step 6 link when the desktop app is unavailable or the user explicitly wants
the browser.
| Flag | Purpose |
|---|---|
-x | Export mode (no GUI) |
-f png/svg/pdf | Output format |
-o path | Output file path |
--scale 2 | 2x resolution for crisp PNG |
--border 20 | Add border padding (px) |
--width 1600 | Constrain output width |
-p 0 | Export specific page (0-indexed) |
--crop | Crop to diagram content |
Default to --scale 2 --border 20 for PNG. Reach for --crop when the diagram is much
smaller than the pageWidth/pageHeight you set and the export comes out with wide empty
margins; drop --scale for SVG and PDF, where it does nothing useful.
An app.diagrams.net link opens the finished diagram in the official web editor with no install and no account. It is the fallback that guarantees delivery when Step 5 could not produce an image — but it is not something to attach to every diagram.
| Situation | What to do |
|---|---|
| Step 5 exported successfully | Do not build a link. The user already has an image plus a .drawio their desktop app opens natively. Close with one short line: "需要在线打开/编辑的链接就说一声。" |
| Step 5 was skipped or failed | Build the link — it is now the only way the user can see the diagram |
| The user asks for it | Build it. Triggers: "打开看看", "我想改一下", "在浏览器里打开", "发给同事", "share this", "open it" |
Why not always: the link is a snapshot copy, not a reference to the file (see 6d). Handing one out unprompted invites the user to edit a fork of a diagram they already have locally.
The link format is https://app.diagrams.net/?title=<name>#R<data>, where <data> is
base64(deflateRaw(encodeURIComponent(xml))). draw.io decodes the #R fragment in the
browser — the diagram never leaves the user's machine, and no account or upload is needed.
Run the bundled script on the saved file (paths are relative to this skill's directory):
python scripts/open_in_drawio.py diagram.drawioIf python is missing or is a stub, use python3, then fall back to Node:
node scripts/open_in_drawio.js diagram.drawioBoth print the URL on stdout and share the same flags:
| Flag | Purpose |
|---|---|
| (none) | Print the URL only — the default; use this and let the user click |
--open | Also launch the default browser on that URL |
--html PATH | Write a click-to-open launcher page instead of relying on the terminal |
--title NAME | File name shown in draw.io (defaults to the input file name) |
Only pass --open when the user asked to open it ("打开看看", "open it in the browser").
Launching a browser unprompted is intrusive. Default to printing the link.
The whole diagram travels inside the URL, so big diagrams produce very long links. A link over ~2000 characters can be mangled by terminals and by the OS URL handler:
--open, the script handles this automatically — it writes a temporary launcher page
and opens that instead, so nothing is truncated.--open, if the URL exceeds ~2000 characters, write a launcher next to the diagram
with --html diagram-open.html and tell the user to open that file, or fall back to 6e.The #R link carries a copy of the diagram. draw.io opens it as a new, unsaved file with
no connection to the .drawio on disk. Anything the user changes in the browser lives only
in that browser tab — the local file silently becomes the older version.
Whenever you hand over a link, say so in one line and give the two ways forward:
浏览器里的修改不会同步回本地文件。改完请用 File → Save as → Device 下载并覆盖
diagram.drawio;或者直接告诉我要改什么,我改本地文件再重新导出。
Never present the link as "the editable version" of the local file. It is a detached copy.
If the script cannot run at all (no Python, no Node), tell the user to:
.drawio file onto the page).drawio fileThis route has no fork problem — draw.io keeps working against the file the user picked.
Keep it short. The diagram is the deliverable; everything else is one line each.
When the export succeeded:
.drawio file path, and the format exportedWhen the export was skipped or failed:
.drawio file pathDo not pad the delivery with a recap of the diagram's contents — the user can see it.
ecommerce-order-flow.drawioecommerce-order-flow.pngFor architecture diagrams, use the Layered Block Style — see references/best-practices.md for full templates and layout constants. This is the preferred style: structured block layout with no arrows, horizontal layers, left label column, and optional cross-cutting sidebar.
When the user is not satisfied with the result and asks for modifications:
Check first whether the local file is stale. If you previously handed the user an
app.diagrams.net link, they may have edited that copy in the browser — those changes never
reach the local .drawio (Step 6d). If the user describes the current diagram in a way that
does not match the file you just read, say so and ask them to save their browser version over
the local file before you continue. Do not silently rebuild from the stale version.
If you do hand over a new link, always regenerate it — the old one still encodes the previous version of the diagram.
references/best-practices.md:
references/examples.md — four complete, validated diagrams to copy the structure of:
scripts/:
validate_drawio.py — mechanical checks on a .drawio file (Step 4). Run it every time.open_in_drawio.py / open_in_drawio.js — build the app.diagrams.net #R link for a
.drawio file (Step 6). Identical CLIs; use whichever runtime is available.For diagram types without an example (UML sequence/class, network topology, etc.), read the "General Rules" section and generate the XML from your own knowledge.
© bruc3van, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (scripts, references) in the repository root of bruc3van/bruce-drawio.
Open the folder on GitHubat commit ac561a0
Bruce Drawio next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Bruce Drawio this skillbruc3van/bruce-drawio | 106 | — | ~5.8k | Automated safety check: Pass | MIT | |
| Diagram Designcathrynlavery/diagram-design | 45k | 1 repos | ~7.5k | Automated safety check: Pass | MIT | |
| Draw.io Diagram StudioAgents365-ai/drawio-skill | 10k | — | ~2.4k | Automated safety check: Notes | MIT | |
| Draw.io Diagram ReconstructionHKUSTDial/Supervisor-Skills | 8.5k | — | ~5.4k | Automated safety check: Pass | MIT | |
| Scibox Diagramjihe520/sci-box | 248 | 1 repos | ~983 | Automated safety check: Notes | None | |
| Drawio Diagram BuilderWill-hxw/drawio-diagram-builder | 412 | — | ~5.9k | Automated safety check: Pass | MIT |
cathrynlavery/diagram-design
Creates branded diagrams, from architecture, flowchart and sequence to charts and maps, as self-contained HTML with inline SVG, with import from draw.io, Mermaid and Excalidraw.
Agents365-ai/drawio-skill
Creates and edits editable draw.io diagrams from descriptions, code, infrastructure files, SQL and API schemas, with sync, review, test and export tools.
HKUSTDial/Supervisor-Skills
Rebuilds a reference diagram image as an editable, high-fidelity Draw.io file, mixing native elements, SVG icons and cropped PNGs, with a batch workflow for a folder of images.
jihe520/sci-box
制作与修改可编辑的 draw.io / diagrams.net 示意图(.drawio XML),产出 .drawio + PNG/PDF。三条路径:套用内置模板(五带技术路线图、三栏研究框架图、三栏阶段流程图、横版任务流水线图)、从零手写…
Will-hxw/drawio-diagram-builder
Create, edit, replicate, and iteratively refine editable research and technical diagrams in diagrams.net/draw.io (.drawio XML) from prompts, papers, repositories, screenshots, or existing diagrams.
sparklabx/drawio-ai-kit
A skill your agent uses when the user asks for an Azure architecture diagram — VNet/networking, App Service, AKS, landing zone, multi-region, or any diagram built with Azure service icons.
Works with
Categories
A skill your agent uses when the user wants to create any diagram: flowchart, architecture, UML (sequence/class), ER, mindmap, network topology, or any visual diagram. Bruce Drawio is an agent skill from bruc3van/bruce-drawio. Use this skill when the user wants to create any diagram: flowchart, architecture, UML (sequence/class), ER, mindmap, network topology, or any visual diagram.
Bruce Drawio fits situations like: the user wants to create any diagram: flowchart; UML (sequence/class); network topology; any visual diagram.
Run `npx skills add bruc3van/bruce-drawio --skill bruce-drawio -a claude-code`. Or copy the skill folder (the bruc3van/bruce-drawio repository) into .claude/skills/bruce-drawio in your project. Claude Code loads it when a task matches its description.
Run `npx skills add bruc3van/bruce-drawio --skill bruce-drawio -a codex`. Or copy the skill folder (the bruc3van/bruce-drawio repository) into .agents/skills/bruce-drawio in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bruc3van/bruce-drawio --skill bruce-drawio -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bruce-drawio, .gemini/skills/bruce-drawio, .github/skills/bruce-drawio and .opencode/skills/bruce-drawio in your project.
Going by SKILL.md and its folder, Bruce Drawio needs Python and JavaScript for the scripts in its folder and the command-line tools its instructions call (python, node, brew and winget). Our summary lists: Python 3; Node.js.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Bruce Drawio is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 15k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Bruce Drawio: Diagram Design (cathrynlavery/diagram-design, 45k stars), Draw.io Diagram Studio (Agents365-ai/drawio-skill, 10k stars), Draw.io Diagram Reconstruction (HKUSTDial/Supervisor-Skills, 8.5k stars) and Scibox Diagram (jihe520/sci-box, 248 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
bruc3van (a GitHub user) maintains it in bruc3van/bruce-drawio, which has 106 GitHub stars. The repository was last updated on August 11, 2026.
Source: bruc3van/bruce-drawio on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.