agentleFS
bushuhuibushuhui/skills/drawio-skill/SKILL.md

drawio-skill

Skill2 starsChanged 5 months agoMITView on GitHub

Use when user requests diagrams, flowcharts, architecture charts, or visualizations. Also use proactively when explaining systems with 3+ components, complex data flows, or relationships that benefit from visual representation. Generates .drawio XML files and exports to PNG/SVG/PDF locally using the native draw.io desktop CLI.

  • Installs packages

17 other projects use a version of this, 10 of them edited.

Adopted by

Most recently taken up by

Used with

Projects with it also use archify, commit and 1 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • HK-hubSkill

    archify

    Create polished, validated architecture, workflow, sequence, data-flow, and lifecycle/state diagrams as explorable standalone HTML with inline SVG, dark/light themes, semantic navigation, optional trace motion, an optional 1200×630 Share Card PNG, and PNG/JPEG/WebP/SVG/WebM export. Accept plain-language requirements or pasted Mermaid flowchart, sequenceDiagram, and stateDiagram input; inspect repository evidence when the diagram must reflect real code. Use when the user asks to visualize system architecture, infrastructure, cloud/security/network topology, technical workflows, approval or CI/CD flows, API call sequences, request lifecycles, data pipelines, ETL/ELT, data lineage, state machines, or to convert/beautify Mermaid. Prefer typed JSON IR renderers and deterministic validation; deliver static output by default, enable motion only when requested, and use optional post-commit opening only for an interactive local handoff.

    Also in 4 projects that use this

  • SentrySkill

    commit

    Create commit messages following Sentry conventions. Use when committing code changes, writing commit messages, or formatting git history. Follows conventional commits with Sentry-specific issue references.

    Also in 3 projects that use this

  • BlockSkill

    frontend-design

    Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.

    Also in 3 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

23 rules. 0 are common, 13 are distinctive, and 10 are very specific to this project.

  • 0

    Common

    Most of the 16 edited versions we read keep these.

  • 13

    Distinctive

    This author's own choices. Worth a look.

  • 10

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before starting the workflow, assess whether the user's request is specific enough.

    line 58
  2. Distinctive:

    After exporting the draft PNG, use the agent's vision capability (e.g., Claude's image input) to read the image and check for these issues …

    line 75
  3. Distinctive:

    After self-check, show the exported image and ask the user for feedback.

    line 91
  4. Distinctive:

    After applying edits, re-export and show the updated image

    line 110
  5. Very specific:

    Safety valve: after 5 iteration rounds, suggest the user open the .drawio file in draw.io desktop for fine-grained adjustments

    line 112
  6. Very specific:

    All shapes have parent="1" (unless inside a container — then use container's id)

    line 144
  7. Very specific:

    All text uses html=1 in style for proper rendering

    line 145
  8. Very specific:

    Multi-line text in labels: use 
 for line breaks inside value attributes (not literal \n).

    line 148
  9. Very specific:

    Add pointerEvents=0; to container styles that should not capture connections between children

    line 192
  10. Very specific:

    CRITICAL: Every edge mxCell must contain a <mxGeometry relative="1" as="geometry" /> child element.

    line 211
  11. Very specific:

    Animated connectors: add flowAnimation=1; to any edge style to show a moving dot animation along the arrow.

    line 235
  12. Very specific:

    Add <Array as="points"> waypoints when an edge must detour around an intermediate shape

    line 238
  13. Distinctive:

    When multiple edges connect to the same shape, assign different entry/exit points to prevent stacking:

    line 243
  14. Distinctive:

    Rule: if a shape has N connections on one side, space them evenly (e.g., 3 connections on bottom → exitX = 0.25, 0.5, 0.75)

    line 254
  15. Very specific:

    Use swimlane cells for logical grouping with visible borders

    line 285
  16. Distinctive:

    Place heavily-connected "hub" nodes centrally so edges radiate outward instead of crossing

    line 286
  17. Distinctive:

    Always center-align a child node under its parent (same center x) to avoid diagonal routing

    line 289
  18. Very specific:

    Event bus pattern: place Kafka/bus nodes in the center of the service row, not below — services on either side can reach it with short …

    line 290
  19. Distinctive:

    Before finalizing coordinates, trace each edge path mentally — if it must cross an unrelated shape, either move the shape or add waypoints

    line 294
  20. Distinctive:

    When an edge must span multiple rows/columns, route it along the outer corridor, not through the middle of the diagram

    line 297
  21. Distinctive:

    When the draw.io desktop CLI is unavailable, generate a browser-editable URL by deflate-compressing and base64-encoding the XML:

    line 335
  22. Distinctive:

    When tools are unavailable, degrade gracefully:

    line 352
  23. Distinctive:

    When the user requests a specific diagram type, apply the matching preset below for shapes, styles, and layout conventions.

    line 395

“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Draw.io Diagrams

Overview

Generate .drawio XML files and export to PNG/SVG/PDF/JPG locally using the native draw.io desktop app CLI.

Supported formats: PNG, SVG, PDF, JPG — no browser automation needed.

PNG, SVG, and PDF exports support --embed-diagram (-e) — the exported file contains the full diagram XML, so opening it in draw.io recovers the editable diagram. Use double extensions (name.drawio.png) to signal embedded XML.

When to Use

Explicit triggers: user says "diagram", "visualize", "flowchart", "draw", "architecture diagram", "process flow", "ER diagram", "UML", "sequence diagram", "class diagram", "neural network", "model architecture"

Proactive triggers:

  • Explaining a system with 3+ interacting components
  • Describing a multi-step process or decision tree
  • Comparing architectures or approaches side by side

Skip when: a simple list or table suffices, or user is in a quick Q&A flow

Prerequisites

The draw.io desktop app must be installed and the CLI accessible:

# macOS (Homebrew — recommended)
brew install --cask drawio
draw.io --version

# macOS (full path if not in PATH)
/Applications/draw.io.app/Contents/MacOS/draw.io --version

# Windows
"C:\Program Files\draw.io\draw.io.exe" --version

# Linux
draw.io --version

Install draw.io desktop if missing:

Workflow

Before starting the workflow, assess whether the user's request is specific enough. If key details are missing, ask 1-3 focused questions:

  • Diagram type — which preset? (ERD, UML, Sequence, Architecture, ML/DL, Flowchart, or general)
  • Output format — PNG (default), SVG, PDF, or JPG?
  • Scope/fidelity — how many components? Any specific technologies or labels?

Skip clarification if the request already specifies these details or is clearly simple (e.g., "draw a flowchart of X").

  1. Check deps — verify draw.io --version succeeds; note platform for correct CLI path
  2. Plan — identify shapes, relationships, layout (LR or TB), group by tier/layer
  3. Generate — write .drawio XML file to disk (output dir same as user's working dir)
  4. Export draft — run CLI to produce PNG for preview
  5. Self-check — use the agent's built-in vision capability to read the exported PNG, catch obvious issues, auto-fix before showing user (requires a vision-enabled model such as Claude Sonnet/Opus)
  6. Review loop — show image to user, collect feedback, apply targeted XML edits, re-export, repeat until approved
  7. Final export — export approved version to all requested formats, report file paths

Step 5: Self-Check

After exporting the draft PNG, use the agent's vision capability (e.g., Claude's image input) to read the image and check for these issues before showing the user. If the agent does not support vision, skip self-check and show the PNG directly:

CheckWhat to look forAuto-fix action
Overlapping shapesTwo or more shapes stacked on top of each otherShift shapes apart by ≥200px
Clipped labelsText cut off at shape boundariesIncrease shape width/height to fit label
Missing connectionsArrows that don't visually connect to shapesVerify source/target ids match existing cells
Off-canvas shapesShapes at negative coordinates or far from the main groupMove to positive coordinates near the cluster
Edge-shape overlapAn edge/arrow visually crosses through an unrelated shapeAdd waypoints (<Array as="points">) to route around the shape, or increase spacing between shapes
Stacked edgesMultiple edges overlap each other on the same pathDistribute entry/exit points across the shape perimeter (use different exitX/entryX values)
  • Max 2 self-check rounds — if issues remain after 2 fixes, show the user anyway
  • Re-export after each fix and re-read the new PNG

Step 6: Review Loop

After self-check, show the exported image and ask the user for feedback.

Targeted edit rules — for each type of feedback, apply the minimal XML change:

User requestXML edit action
Change color of XFind mxCell by value matching X, update fillColor/strokeColor in style
Add a new nodeAppend a new mxCell vertex with next available id, position near related nodes
Remove a nodeDelete the mxCell vertex and any edges with matching source/target
Move shape XUpdate x/y in the mxGeometry of the matching mxCell
Resize shape XUpdate width/height in the mxGeometry of the matching mxCell
Add arrow from A to BAppend a new mxCell edge with source/target matching A and B ids
Change label textUpdate the value attribute of the matching mxCell
Change layout directionFull regeneration — rebuild XML with new orientation

Rules:

  • For single-element changes: edit existing XML in place — preserves layout tuning from prior iterations
  • For layout-wide changes (e.g., swap LR↔TB, "start over"): regenerate full XML
  • Overwrite the same {name}.png each iteration — do not create v1, v2, v3 files
  • After applying edits, re-export and show the updated image
  • Loop continues until user says approved / done / LGTM
  • Safety valve: after 5 iteration rounds, suggest the user open the .drawio file in draw.io desktop for fine-grained adjustments

Step 7: Final Export

Once the user approves:

  • Export to all requested formats (PNG, SVG, PDF, JPG) — default to PNG if not specified
  • Report file paths for both the .drawio source file and exported image(s)
  • Auto-launch: offer to open the .drawio file in draw.io desktop for fine-tuning — open diagram.drawio (macOS), xdg-open (Linux), start (Windows)
  • Confirm files are saved and ready to use

Draw.io XML Structure

File skeleton

<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="drawio" version="26.0.0">
  <diagram name="Page-1">
    <mxGraphModel>
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <!-- user shapes start at id="2" -->
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>

Rules:

  • id="0" and id="1" are required root cells — never omit them
  • User shapes start at id="2" and increment sequentially
  • All shapes have parent="1" (unless inside a container — then use container's id)
  • All text uses html=1 in style for proper rendering
  • Never use -- inside XML comments — it's illegal per XML spec and causes parse errors
  • Escape special characters in attribute values: &amp;, &lt;, &gt;, &quot;
  • Multi-line text in labels: use &#xa; for line breaks inside value attributes (not literal \n). Example: value="Line 1&#xa;Line 2"

Shape types (vertex)

Style keywordUse for
rounded=0plain rectangle (default)
rounded=1rounded rectangle — services, modules
ellipse;circles/ovals — start/end, databases
rhombus;diamond — decision points
shape=mxgraph.aws4.resourceIcon;AWS icons
shape=cylinder3;cylinder — databases
swimlane;group/container with title bar

Required properties

<!-- Rectangle / rounded box -->
<mxCell id="2" value="Label" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
  <mxGeometry x="100" y="100" width="160" height="60" as="geometry" />
</mxCell>

<!-- Cylinder (database) -->
<mxCell id="3" value="DB" style="shape=cylinder3;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;" vertex="1" parent="1">
  <mxGeometry x="350" y="100" width="120" height="80" as="geometry" />
</mxCell>

<!-- Diamond (decision) -->
<mxCell id="4" value="Check?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
  <mxGeometry x="100" y="220" width="160" height="80" as="geometry" />
</mxCell>

Containers and groups

For architecture diagrams with nested elements, use draw.io's parent-child containment — do not just place shapes on top of larger shapes.

TypeStyleWhen to use
Group (invisible)group;pointerEvents=0;No visual border needed, container has no connections
Swimlane (titled)swimlane;startSize=30;Container needs a visible title bar, or container itself has connections
Custom containerAdd container=1;pointerEvents=0; to any shapeAny shape acting as a container without its own connections

Key rules:

  • Add pointerEvents=0; to container styles that should not capture connections between children
  • Children set parent="containerId" and use coordinates relative to the container
<!-- Swimlane container -->
<mxCell id="svc1" value="User Service" style="swimlane;startSize=30;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
  <mxGeometry x="100" y="100" width="300" height="200" as="geometry"/>
</mxCell>
<!-- Child inside container — coordinates relative to parent -->
<mxCell id="api1" value="REST API" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="svc1">
  <mxGeometry x="20" y="40" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="db1" value="Database" style="shape=cylinder3;whiteSpace=wrap;html=1;" vertex="1" parent="svc1">
  <mxGeometry x="160" y="40" width="120" height="60" as="geometry"/>
</mxCell>

Connector (edge)

CRITICAL: Every edge mxCell must contain a <mxGeometry relative="1" as="geometry" /> child element. Self-closing edge cells (<mxCell ... edge="1" ... />) are invalid and will not render. Always use the expanded form.

<!-- Directed arrow — always include rounded, orthogonalLoop, jettySize for clean routing -->
<mxCell id="10" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="2" target="3">
  <mxGeometry relative="1" as="geometry" />
</mxCell>

<!-- Arrow with label + explicit entry/exit points to control direction -->
<mxCell id="11" value="HTTP/REST" 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="2" target="4">
  <mxGeometry relative="1" as="geometry" />
</mxCell>

<!-- Arrow with waypoints — use when edge must route around other shapes -->
<mxCell id="12" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="3" target="5">
  <mxGeometry relative="1" as="geometry">
    <Array as="points">
      <mxPoint x="500" y="50" />
    </Array>
  </mxGeometry>
</mxCell>

Edge style rules:

  • Animated connectors: add flowAnimation=1; to any edge style to show a moving dot animation along the arrow. Works in SVG export and draw.io desktop — ideal for data-flow and pipeline diagrams. Example: style="edgeStyle=orthogonalEdgeStyle;flowAnimation=1;rounded=1;..."
  • Always include rounded=1;orthogonalLoop=1;jettySize=auto — these enable smart routing that avoids overlaps
  • Pin exitX/exitY/entryX/entryY on every edge when a node has 2+ connections — distributes lines across the shape perimeter
  • Add <Array as="points"> waypoints when an edge must detour around an intermediate shape
  • Leave room for arrowheads: the final straight segment between the last bend and the target shape must be ≥20px long. If too short, the arrowhead overlaps the bend and looks broken. Fix by increasing node spacing or adding explicit waypoints

Distributing connections on a shape

When multiple edges connect to the same shape, assign different entry/exit points to prevent stacking:

PositionexitX/entryXexitY/entryYUse when
Top center0.50connecting to node above
Top-left0.2502nd connection from top
Top-right0.7503rd connection from top
Right center10.5connecting to node on right
Bottom center0.51connecting to node below
Left center00.5connecting to node on left

Rule: if a shape has N connections on one side, space them evenly (e.g., 3 connections on bottom → exitX = 0.25, 0.5, 0.75)

Color palette (fillColor / strokeColor)

Color namefillColorstrokeColorUse for
Blue#dae8fc#6c8ebfservices, clients
Green#d5e8d4#82b366success, databases
Yellow#fff2cc#d6b656queues, decisions
Orange#ffe6cc#d79b00gateways, APIs
Red/Pink#f8cecc#b85450errors, alerts
Grey#f5f5f5#666666external/neutral
Purple#e1d5e7#9673a6security, auth

Layout tips

Spacing — scale with complexity:

Diagram complexityNodesHorizontal gapVertical gap
Simple≤5200px150px
Medium6–10280px200px
Complex>10350px250px

Routing corridors: between shape rows/columns, leave an extra ~80px empty corridor where edges can route without crossing shapes. Never place a shape in a gap that edges need to traverse.

Grid alignment: snap all x, y, width, height values to multiples of 10 — this ensures shapes align cleanly on draw.io's default grid and makes manual editing easier.

General rules:

  • Plan a grid before assigning x/y coordinates — sketch node positions on paper/mentally first
  • Group related nodes in the same horizontal or vertical band
  • Use swimlane cells for logical grouping with visible borders
  • Place heavily-connected "hub" nodes centrally so edges radiate outward instead of crossing
  • To force straight vertical connections, pin entry/exit points explicitly on edges: exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0
  • Always center-align a child node under its parent (same center x) to avoid diagonal routing
  • Event bus pattern: place Kafka/bus nodes in the center of the service row, not below — services on either side can reach it with short horizontal arrows (exitX=1 left side, exitX=0 right side), eliminating all line crossings
  • Horizontal connections (exitX=1 or exitX=0) never cross vertical nodes in the same row; use them for peer-to-peer and publish connections

Avoiding edge-shape overlap:

  • Before finalizing coordinates, trace each edge path mentally — if it must cross an unrelated shape, either move the shape or add waypoints
  • For tree/hierarchical layouts: assign nodes to layers (rows), connect only between adjacent layers to minimize crossings
  • For star/hub layouts: place the hub center, satellites around it — edges stay short and radial
  • When an edge must span multiple rows/columns, route it along the outer corridor, not through the middle of the diagram

Export

Commands

# macOS — Homebrew (draw.io in PATH)
draw.io -x -f png -e -s 2 -o diagram.drawio.png input.drawio

# macOS — full path (if not in PATH)
/Applications/draw.io.app/Contents/MacOS/draw.io -x -f png -e -s 2 -o diagram.drawio.png input.drawio

# Windows
"C:\Program Files\draw.io\draw.io.exe" -x -f png -e -s 2 -o diagram.drawio.png input.drawio

# Linux (headless — requires xvfb-run)
xvfb-run -a draw.io -x -f png -e -s 2 -o diagram.drawio.png input.drawio

# SVG export
draw.io -x -f svg -o diagram.svg input.drawio

# PDF export
draw.io -x -f pdf -o diagram.pdf input.drawio

Key flags:

  • -x — export mode (required)
  • -f — format: png, svg, pdf, jpg
  • -e — embed diagram XML in output (PNG, SVG, PDF only) — exported file remains editable in draw.io
  • -s — scale: 1, 2, 3 (2 recommended for PNG)
  • -o — output file path (use .drawio.png double extension when embedding)
  • -b — border width around diagram (default: 0, recommend 10)
  • -t — transparent background (PNG only)
  • --page-index 0 — export specific page (default: all)

Browser fallback (no CLI needed)

When the draw.io desktop CLI is unavailable, generate a browser-editable URL by deflate-compressing and base64-encoding the XML:

# Encode .drawio XML into a diagrams.net URL
python3 -c "
import zlib, base64, urllib.parse, sys
xml = open(sys.argv[1]).read()
compressed = zlib.compress(xml.encode('utf-8'), 9)
encoded = base64.urlsafe_b64encode(compressed).decode('utf-8')
print('https://viewer.diagrams.net/?tags=%7B%7D&lightbox=1&edit=_blank#R' + urllib.parse.quote(encoded, safe=''))
" input.drawio

This produces a client-side URL that opens the diagram in the browser for viewing and editing. No data is uploaded to any server — the entire diagram XML is encoded in the URL fragment (after #), which is never sent to the server. Useful when the user cannot install the desktop app.

Fallback chain

When tools are unavailable, degrade gracefully:

ScenarioBehavior
draw.io CLI missing, Python availableUse browser fallback (diagrams.net URL)
draw.io CLI missing, Python missingGenerate .drawio XML only; instruct user to open in draw.io desktop or diagrams.net manually
Vision unavailable for self-checkSkip self-check (step 5); proceed directly to showing user the exported PNG
Export fails (Chromium/display issues)On Linux, retry with xvfb-run -a; if still failing, deliver .drawio XML and suggest manual export

Checking if draw.io is in PATH

# Try short command first
if command -v draw.io &>/dev/null; then
  DRAWIO="draw.io"
elif [ -f "/Applications/draw.io.app/Contents/MacOS/draw.io" ]; then
  DRAWIO="/Applications/draw.io.app/Contents/MacOS/draw.io"
else
  echo "draw.io not found — install from https://github.com/jgraph/drawio-desktop/releases"
fi

Common Mistakes

MistakeFix
Missing id="0" and id="1" root cellsAlways include both at the top of <root>
Shapes not connectedsource and target on edge must match existing shape id values
Export command not found on macOSTry full path /Applications/draw.io.app/Contents/MacOS/draw.io
Linux: blank/error output headlesslyPrefix command with xvfb-run -a
PDF export failsEnsure Chromium is available (draw.io bundles it on desktop)
Background color wrong in CLI exportKnown CLI bug; add --transparent flag or set background via style
Overlapping shapesScale spacing with complexity (200–350px); leave routing corridors
Edges crossing through shapesAdd waypoints, distribute entry/exit points, or increase spacing
Special characters in valueUse XML entities: &amp; &lt; &gt; &quot;
Iteration loop never endsAfter 5 rounds, suggest user open .drawio in draw.io desktop for fine-tuning
Self-closing edge mxCellAlways use expanded form with <mxGeometry> child — self-closing edges won't render
-- inside XML commentsIllegal per XML spec — use single hyphens or rephrase
Arrowhead overlaps bendFinal edge segment before target must be ≥20px — increase spacing or add waypoints
Literal \n in label textUse &#xa; for line breaks in value attributes

Diagram Type Presets

When the user requests a specific diagram type, apply the matching preset below for shapes, styles, and layout conventions.

ERD (Entity-Relationship Diagram)

ElementStyleNotes
Tableshape=table;startSize=30;container=1;collapsible=1;childLayout=tableLayout;fixedRows=1;rowLines=0;fontStyle=1;strokeColor=#6c8ebf;fillColor=#dae8fc;Each table is a container
Row (column)shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;fillColor=none;collapsible=0;dropTarget=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=12;Child of table, parent=tableId
PK columnBold text: fontStyle=1 on the rowMark with PK prefix or key icon
FK relationshipDashed edge: dashed=1;endArrow=ERmandOne;startArrow=ERmandOne;Use ER notation arrows
LayoutTB, tables spaced 300px apartGroup related tables vertically

UML Class Diagram

ElementStyleNotes
Class boxswimlane;fontStyle=1;align=center;startSize=26;html=1;3-section: title / attributes / methods
Separatorline;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=10;rotatable=0;labelPosition=left;points=[];portConstraint=eastwest;Between sections
InheritanceendArrow=block;endFill=0;Hollow triangle arrow
ImplementationendArrow=block;endFill=0;dashed=1;Dashed + hollow triangle
CompositionendArrow=diamondThin;endFill=1;Filled diamond
AggregationendArrow=diamondThin;endFill=0;Hollow diamond
LayoutTB, classes 250px apartInterfaces above implementations

Sequence Diagram

ElementStyleNotes
Actor/Objectshape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;Lifeline with dashed vertical line
Sync messagehtml=1;verticalAlign=bottom;endArrow=block;Solid line, filled arrowhead
Async messagehtml=1;verticalAlign=bottom;endArrow=open;dashed=1;Dashed line, open arrowhead
Return messagehtml=1;verticalAlign=bottom;endArrow=open;dashed=1;strokeColor=#999999;Grey dashed
Activation boxshape=umlFrame;whiteSpace=wrap; on the lifelineNarrow rectangle on lifeline
LayoutLR, lifelines spaced 200px apartTime flows top to bottom

Architecture Diagram

ElementStyleNotes
Layer/tierswimlane;startSize=30;Containers for grouping: Client / API / Service / Data
Servicerounded=1;whiteSpace=wrap;html=1; + tier colorUse color palette by tier
Databaseshape=cylinder3;whiteSpace=wrap;html=1;Green palette
Queue/Busrounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;Yellow — place centrally for hub pattern
Gateway/LBshape=mxgraph.aws4.resourceIcon; or rounded=1; with orangeOrange palette
Externalrounded=1;dashed=1;fillColor=#f5f5f5;strokeColor=#666666;Dashed border for external systems
LayoutTB or LR by tier count; ≥4 tiers → TBHub nodes centered

ML / Deep Learning Model Diagram

For neural network architecture diagrams — ideal for papers targeting NeurIPS, ICML, ICLR.

ElementStyleNotes
Layer blockrounded=1;whiteSpace=wrap;html=1; + type colorMain building block
Input/OutputfillColor=#d5e8d4;strokeColor=#82b366;Green
Conv / PoolingfillColor=#dae8fc;strokeColor=#6c8ebf;Blue
Attention / TransformerfillColor=#e1d5e7;strokeColor=#9673a6;Purple
RNN / LSTM / GRUfillColor=#fff2cc;strokeColor=#d6b656;Yellow
FC / LinearfillColor=#ffe6cc;strokeColor=#d79b00;Orange
Loss / ActivationfillColor=#f8cecc;strokeColor=#b85450;Red/Pink
Skip connectiondashed=1;endArrow=block;curved=1;Dashed curved arrow
Tensor shape labelAdd shape annotation as secondary label: value="Conv2D&#xa;(B, 64, 32, 32)"Use &#xa; for multi-line
LayoutTB (data flows top→bottom), layers 150px apartGroup encoder/decoder as swimlanes

Tensor shape convention: annotate each layer with input/output tensor dimensions in (B, C, H, W) or (B, T, D) format. Place dimensions as the second line of the label using &#xa;.

Flowchart (enhanced)

ElementStyleNotes
Start/Endellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;Green oval
Processrounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;Blue rectangle
Decisionrhombus;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;Yellow diamond
I/Oshape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;Orange parallelogram
Subprocessrounded=0;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6; + double borderPurple
Yes/No labelsvalue="Yes" / value="No" on decision edgesAlways label decision branches
LayoutTB, 200px vertical gapDecisions branch LR, merge back to center

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.