Ask an agent to draw your architecture and it hands you a file. The file opens. The boxes are there. The labels are gone.
That is the specific way diagram work fails for a model that cannot see what it produced. Diagram formats are effectively write-only for a text model: draw.io is XML where a missing root cell renders a blank canvas, and Excalidraw is JSON where a plausible-looking key can be silently discarded. The model has no feedback loop, so it reports success and moves on. The single most useful thing to know before you install anything is that one Excalidraw key — putting label directly on a shape — is documented as the preferred form by one skill below and as a silent, unreported failure by another. Both are right. The good skills are the ones that tell you which situation you are in.
Top picks
| skill | publisher | license | verdict | updated |
|---|---|---|---|---|
| drawio | jgraph | Apache-2.0 | Default draw.io pick | 2026-07-24 |
| drawio-skill | Agents365-ai | MIT | Deepest toolkit, heaviest setup | 2026-07-25 |
| aws-drawio-architecture-diagrams | giuseppe-trisciuoglio | MIT | Best for AWS architecture | 2026-06-22 |
| excalidraw | NousResearch | MIT | Best plain-file Excalidraw | 2026-07-28 |
| excalidraw-diagrams | sammcj | Apache-2.0 | Best on preview vs. file | 2026-07-27 |
| excalidraw | nimbalyst | MIT | Best restraint rules, editor-bound | 2026-07-27 |
| excalidraw | aws-samples | MIT | Compared: opposite label advice | 2026-07-25 |
| excalidraw-skill | yctimlin | MIT | Compared: live-canvas driver | 2026-07-22 |
draw.io: start with the one the draw.io project publishes
jgraph's drawio makes the agent choose an authoring route before it writes anything: Mermaid when the draw.io desktop CLI is present, because the CLI's parser lays the diagram out; hand-written mxGraphModel XML when the CLI is absent or the diagram needs specific shape libraries. For XML it can hand layout to an ELK pass, so the agent only has to get nodes and edges right instead of inventing coordinates. What earns it the default slot is the failure documentation: it names a broken path in current draw.io Desktop — exporting a Mermaid file straight to PNG with embedded XML — and routes around it with a convert-then-export step.
The caveat is real, and it is narrower than it first looks. Mermaid conversion, ELK layout and every image export need the desktop app installed. XML authoring does not, and neither does the browser-URL delivery built from that XML — the URL is compressed with Node's built-in zlib and nothing else. The skill spends a section on why passing that URL through cmd.exe truncates the diagram payload.
The deepest draw.io toolkit, if you can pay its setup cost
Agents365-ai's drawio-skill does the thing the format's blindness demands: it makes the agent look at its own output before you do. Its workflow exports a draft PNG, then has the agent read that PNG with its own vision and fix overlapping shapes, clipped labels and stacked edges before showing anyone. The detail that proves someone ran this in anger: the draft export must skip the embed flag, because an embedded-XML PNG makes vision APIs reject the image outright — and the final embedded export needs a repair pass, because draw.io's CLI truncates that PNG's IEND chunk. It also ships importers that turn Terraform, Kubernetes manifests, OpenAPI specs or SQL DDL into a graph.
Cost: the desktop CLI, a vision-capable model, and a large surface area you will not use most days.
AWS architecture: the one that knows the icons will not render
aws-drawio-architecture-diagrams is narrow on purpose. It builds against the official aws4 shape library, nests containers cloud, then region, then VPC, then subnet, and marks a specific attribute as required on resource-icon shapes, without which the white glyph does not draw at all. That is exactly the class of bug an agent cannot detect: the file opens, the box is the right colour, and the icon is missing.
It is honest about what it is not. There is no auto-routing and no auto-layout here, so coordinates are hand-placed and large diagrams get tedious. Use it when the diagram is a real AWS topology and correctness of the icon set matters more than speed.
Excalidraw by hand: the one that documents the trap
NousResearch's excalidraw has no server, no MCP and no dependency — it writes element JSON into the standard file envelope and you drag the result onto excalidraw.com. Its most valuable paragraph is a warning: putting a label object on a shape is not a real Excalidraw property, and it is ignored without error, leaving blank shapes. The correct form is a two-element pair, the shape listing the text in boundElements and the text pointing back with containerId. It also fixes emission order to array order, since that is the z-order, and sets floors for font and shape sizes.
Worth knowing: moltis-org ships the same document and declares hermes-agent as its origin in front matter.
The one that asks which workflow you are actually in
sammcj's excalidraw-diagrams makes the agent name a workflow before it touches syntax: an inline preview for the conversation, a real file to keep, or — only if you actually asked for both — one of each, built separately, because there is no bridge between them. Never both by default. That framing is what resolves the contradiction above — it states plainly that text does not survive export, because the label shorthand is a preview-time convenience that native files do not carry. It then routes file output to a bundled Python generator rather than hand-written JSON, and gives the binding rule that actually bites: leave at least 60px between connected shapes or bound arrows re-render through the boxes instead of at their edges.
It assumes the Excalidraw MCP for the preview half, and tells the user how to add it if missing.
The one that tells your agent to stop
nimbalyst's excalidraw spends its opening section not on format but on behaviour, and names the failure mode by name: the agent builds a diagram, screenshots it, notices cosmetic imperfections, wipes the canvas and rebuilds — repeatedly, unasked. Its rules are blunt. One pass. One screenshot. Never clear-and-rebuild as a redo. If something is genuinely broken, make a targeted edit to that element instead. Anyone who has watched an agent keep re-centring the same label will recognise the diagnosis.
The catch is that it drives a specific editor's MCP tools, so the instructions only execute inside that product. The judgement, though, transfers to any of these.
Which skill called excalidraw are you actually installing?
Skill names are not namespaced, so the name tells you the topic and nothing else. Under excalidraw alone you can land on a plain JSON writer, a driver for a live canvas server, or a redistribution of another repository's document with a compatibility preamble bolted on top. These are not variations in quality — they are different programs that do different things to your machine.
The check takes a minute. Open the front matter and the first screen of the body, and look for three things. First, an origin or upstream declaration: moltis-org's points at hermes-agent, and graniet's port opens with a mapping of legacy tool names onto its own runtime. Second, the license, in both places — graniet's front matter declares MIT while the repository record says Apache-2.0, and a disagreement like that is something to resolve before you ship anything built with it. Third, what the body actually drives: a file, a CLI, or an MCP server.
The same lesson runs through drawio. jgraph's is published by the draw.io project itself. akillness's says in its own body that it wraps Agents365-ai's skill. GRCEngClub's names an upstream too, and it is jgraph's — the same command-line route, pointed at a compliance audience. Every one of those bodies tells you what it is. The name never does.
Do you need the desktop app, an MCP server, or nothing at all?
This is the first question to answer, because it decides everything else — including that label argument.
Nothing at all. NousResearch's Excalidraw skill and giuseppe-trisciuoglio's AWS one both just write a file — no account, no API key, no rendering library. The one exception is NousResearch's optional upload step, which posts the finished diagram to excalidraw.com for a shareable link and wants the cryptography package to do it. On this path the label shorthand does not exist and you must write the bound-text pair yourself.
An MCP server or embedded canvas. aws-samples' excalidraw calls the label form preferred, and it is right: a tool layer expands it before anything is rendered. yctimlin's excalidraw-skill normalises the same shorthand for you across its CLI and MCP interfaces, then warns against one specific use of it — a label on a large background zone rectangle lands its bound text dead centre, on top of everything you are about to place inside. Same key, three correct and incompatible answers, decided entirely by who renders the file.
The draw.io desktop CLI. Required for Mermaid conversion, ELK layout and any PNG, SVG or PDF export. If your environment cannot install a desktop app, that rules out most of the draw.io side and pushes you to XML plus a browser URL.
Two more things to check before installing. If you have not decided between Mermaid and a drawn format at all, xobotyi's diagramming makes that call explicitly — Mermaid when the diagram lives in markdown and auto-layout is acceptable, Excalidraw when spatial grouping and polish matter — and it is candid that a model cannot reason about coordinates from scratch, so it works from layout templates instead. And check whether the skill draws anything at all: a name ending in -diagram may belong to a content brief rather than a generator. GRCEngClub's data-flow one supplies the compliance vocabulary and conventions for one diagram type, then explicitly hands rendering to a separate draw.io skill. The tell is in the workflow: if the last step passes the job to another skill by name, that other skill is the one that draws, and you need both.
What to install
The blank-label problem is not a modelling problem, and no amount of prompting fixes it. It is a rendering contract the agent cannot observe, so the fix is to install instructions that already know where it breaks.
For draw.io, take jgraph's as your default and add Agents365-ai's when you want the diagram checked before you see it. For AWS topologies specifically, giuseppe-trisciuoglio's icon rules will save you a round trip. For Excalidraw, NousResearch's if you are writing files, sammcj's if you are switching between an inline preview and a saved artifact, nimbalyst's if your agent has a habit of redrawing things nobody asked it to redraw.
Do the identity check before any of them: publisher, front matter, first screen of the body. What you have now avoided is the version of this task where the agent reports a finished diagram, you open it a day later in front of other people, and the boxes are empty.
More skills worth a look
draw-io handles diagram creation and editing through direct XML manipulation of .drawio files, with built-in PNG conversion at 2x resolution and transparent backgrounds. The skill includes layout adjustment via coordinate editing, font configuration for multi-language support, and access to official AWS icons for infrastructure diagrams. Design principles cover clarity, consistency, accessibility, and progressive disclosure across diagram types.
drawio-logical-diagramsBuild logical flow diagrams, system architecture visualizations, BPMN process flows, UML diagrams, and data flow diagrams using draw.io's native XML format. The skill handles generic system representations—flowcharts, decision trees, sequence diagrams, and abstract architectures—without cloud-specific components.
Excalidraw StudioExcalidraw Studio converts natural language into professional diagrams—flowcharts, mind maps, architecture designs, ER models, and more—saved as .excalidraw files ready to open in Excalidraw, VS Code, or Obsidian. Choose from sketch, clean, or mixed visual modes and leverage built-in templates for rapid diagram generation.
excalidraw-diagramThis skill transforms text descriptions into Excalidraw diagrams across three output modes: Obsidian markdown files, standard Excalidraw JSON, and animated variants with playback sequencing. It detects your intent from trigger words, selects an appropriate diagram type, and handles layout, typography, and color styling automatically.
excalidraw-diagramTransform text into Excalidraw diagrams with flexible output options tailored to your workflow. Choose Obsidian format for direct integration, Standard format for web editing, or Animated format with sequenced drawing effects. The skill automatically detects your intent and produces properly formatted diagram files.
excalidraw-generatorexcalidraw-generator transforms diagram descriptions into complete, valid .excalidraw.json files ready to open at excalidraw.com. It handles flowcharts, architecture diagrams, UML diagrams, and mind maps in both professional and hand-drawn styles, with precise layout calculations and proper element positioning.
excalidraw-diagram-generatorTurn natural language into Excalidraw diagrams without drawing manually. Supports flowcharts, mind maps, architecture diagrams, sequence diagrams, ER diagrams, and data flow visualizations. The skill analyzes your description, identifies key elements and relationships, then generates a ready-to-open .excalidraw file.
Excalidraw MermaidExcalidraw Mermaid specializes in authoring Mermaid source code that converts seamlessly into Excalidraw drawings. It prioritizes visual clarity and supported diagram types, ensuring your output pastes once and renders without surprises.
Drawio Diagrams EnhancedBuild flowcharts, swimlanes, BPMN diagrams, UML models, network topologies, org charts, and project management visuals through draw.io's MCP server. The skill generates mxGraphModel XML for instant browser preview and editing, supporting extensive diagram types from basic process flows to complex PERT charts and risk matrices.
Drawio Diagram ForgeTurn descriptions, images, or spreadsheets into professional draw.io diagrams ready for editing and documentation. The skill orchestrates a multi-step workflow to produce native .drawio files with support for Azure and AWS cloud icons, quality gates, and output in SVG or PNG formats alongside the editable source.
mermaid-graph-writerMermaid Graph Writer produces syntactically correct Mermaid diagrams by selecting the right diagram type for your content and applying consistent formatting rules. It handles flowcharts, sequence diagrams, state machines, ER models, timelines, mindmaps, Gantt charts, and other Mermaid-supported formats—but doesn't render them to images.
mermaid-visualizerMermaid Visualizer transforms written content into polished diagrams ready for presentations and docs. It handles process flows, system architectures, comparisons, mindmaps, and sequence diagrams while automatically preventing common syntax errors. Choose your layout, detail level, and style—the skill generates clean, rendering-ready code for Obsidian, GitHub, and other Mermaid platforms.
diagram-designThis guide covers when and how to create effective research diagrams using Excalidraw MCP tools. It provides a structured workflow from planning through grouping, along with specific recommendations for diagram types, layout patterns, color schemes, and element styling to ensure clarity and consistency.
Drawio To PngDrawio To Png transforms draw.io diagram files into high-quality PNG images using command-line tools or headless browser automation. It supports batch conversion, adjustable scale factors, transparent backgrounds, and multi-page diagram export for documentation, presentations, and web publishing.
Exporting To PngConvert various content types—code snippets, Markdown, diagrams, and rendered components—into PNG images. The skill supports multiple rendering approaches including headless browser capture, specialized CLI tools, and format-specific converters for flexibility across different source materials.