Communitygithub.com

xiaopixuan/drawio-diagram-skill

Codex draw.io / diagrams.net Skill zum Erstellen editierbarer Diagramme: Flussdiagramme, Architekturdiagramme, Berichtsflussdiagramme, Systemarchitekturdiagramme.

Was ist drawio-diagram-skill?

Dieses Skill ermöglicht es KI-Agenten (wie Codex, Claude Code, Cursor), professionelle, editierbare Diagramme im `.drawio`-Format zu erstellen und lokal als PNG, SVG, PDF oder JPG zu exportieren – unter Verwendung der nativen draw.io Desktop-CLI. Es unterstützt die Erstellung von Flussdiagrammen, Architekturdiagrammen, UML, ERD und sogar strukturierten Berichtsdiagrammen mit mehreren Ebenen. Der exportierte PNG/SVG/PDF kann das vollständige Diagramm-XML einbetten, sodass es später bearbeitbar bleibt. Das Skill enthält außerdem zahlreiche gebündelte Hilfsskripte und Referenzen für spezielle Aufgaben wie Teamarbeit, Infrastrukturvisualisierung, C4-Modelle und mehr – basierend auf dem Inhalt der `SKILL.md`-Datei.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add xiaopixuan/drawio-diagram-skill

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Draw.io Diagram Skill

Übersicht

Erzeuge .drawio-XML-Dateien und exportiere sie lokal mit der nativen draw.io Desktop-CLI in PNG, SVG, PDF und JPG.

Unterstützte Formate: PNG, SVG, PDF, JPG – keine Browser-Automatisierung erforderlich.

Exports in PNG, SVG und PDF unterstützen --embed-diagram (-e) – die exportierte Datei enthält das vollständige Diagramm-XML, sodass ein Öffnen in draw.io das editierbare Diagramm wiederherstellt. Verwende Doppelerweiterungen (name.drawio.png), um eingebettetes XML zu signalisieren.

Installationshinweise zum Teilen

Wenn du dieses Skill mit einem anderen Benutzer teilst, gib den gesamten Ordner drawio-diagram-skill/ weiter, nicht nur SKILL.md, da referenzierte scripts/, references/, Styles und gebündelte Helfer Teil des Workflows sind.

Dieses Skill benötigt draw.io Desktop für den lokalen PNG/SVG/PDF-Export. Die diagrams.net-Web-App allein reicht für den lokalen CLI-Export nicht aus.

Empfohlene Installation:

brew install --cask drawio
drawio --version

Falls Homebrew oder die Befehlszeilen-Downloads langsam sind, lade draw.io Desktop manuell von GitHub Releases herunter:

https://github.com/jgraph/drawio-desktop/releases

Wähle das Installationsprogramm für dein Betriebssystem:

  • macOS: .dmg
  • Windows: .exe
  • Linux: .deb oder .rpm (Snap wenn möglich vermeiden)

Überprüfe nach der Installation die CLI:

drawio --version

Auf macOS, falls drawio nicht im PATH ist, versuche:

/Applications/draw.io.app/Contents/MacOS/draw.io --version

Graphviz ist optional und nur für einige Auto-Layout-Workflows erforderlich:

brew install graphviz

Falls die draw.io CLI nicht verfügbar ist oder in einer Sandbox-Umgebung abstürzt, kann dieses Skill weiterhin .drawio-XML und diagrams.net-Bearbeitungslinks erstellen, aber der lokale Bild/PDF-Export muss möglicherweise außerhalb der Sandbox durchgeführt werden.

Fehlender draw.io-Benutzerhinweis

Wenn Abhängigkeitsprüfungen zeigen, dass draw.io Desktop nicht installiert ist oder der Befehl drawio / draw.io nicht gefunden werden kann, sage nicht nur „Export nicht verfügbar“. Sage dem Benutzer deutlich:

Du hast derzeit draw.io Desktop nicht installiert oder die Umgebung findet den Befehl drawio nicht. Ich kann deinem Agenten einen Installationsbefehl senden, um es zu installieren, oder du kannst es manuell installieren.

Biete dann diese Optionen an:

  • Agent-Installationsbefehl: brew install --cask drawio auf macOS.
  • Manuelle Installation: Lade draw.io Desktop von https://github.com/jgraph/drawio-desktop/releases herunter und installiere dann die .dmg, .exe, .deb oder .rpm für das Betriebssystem des Benutzers.
  • Fortfahren ohne Export: Erzeuge die .drawio-XML und einen diagrams.net-Bearbeitungslink und lasse den Benutzer nach der Installation von draw.io PNG/SVG/PDF exportieren.

Erwartete Ausgabe

Gib den gespeicherten .drawio-Quellpfad und jeden exportierten Artefaktpfad zurück. Wenn der Export nicht verfügbar ist, gib den .drawio-XML-Pfad plus den verwendeten spezifischen Fallback zurück. Füge für benutzerorientierte Überprüfungen einen kurzen Hinweis zum Diagrammtyp, zu den wichtigsten Layout-Entscheidungen und zu etwaigen Export- oder Validierungseinschränkungen hinzu.

Wann verwenden / wann NICHT verwenden

Verwende dieses Skill für: ausgefeilte, präzise Diagramme (Architektur, Netzwerk, strenges UML, ERD), alles, was solide, undurchsichtige Füllungen, 10.000+ Stock/Markenformen, Swimlanes oder benutzerdefinierte Geometrie benötigt und als editierbares PNG/SVG/PDF exportiert wird.

Verwende es NICHT – leite anderweitig weiter – für:

  • Einen lässigen handgezeichneten/Whiteboard-Look → excalidraw oder tldraw.
  • Diagramme-als-Code, die in Git leben / in Markdown gerendert werden → mermaid (allgemein) oder plantuml (UML).
  • Freihändiges Infinite-Canvas-Skizzieren oder Freihandstriche → tldraw.

Berichtsdiagramme / Führungsdiagramme

Verwende diesen Modus, wenn der Benutzer nach 汇报型流程架构图, 方案图, 管理闭环图, 领导汇报图 oder einem beliebigen Diagramm fragt, das Organisation/Rollen/Mechanismen erklärt und nicht einen wörtlichen System- oder Datenfluss.

Regeln:

  • Behandle das Diagramm als eine gegliederte Erzählung, nicht als einfaches Flussdiagramm.
  • Plane vor dem Zeichnen 2-4 horizontale Bänder, z. B. Zusammenfassung, Rollenfluss, gemeinsame Grundlage und Mechanismen.
  • Verwende innerhalb jedes Bands einheitliche Kartengrößen; richte die x/y-Positionen der Karten aus und halte die Abstände konsistent.
  • Trenne Kartentitel, Beschreibung, Aufzählungspunkte und Aufzählungstext in ausgerichtete Zellen, anstatt sie in einen großen Absatz zu packen.
  • Halte vor dem Platzieren der Karten explizite Pfeilkorridore zwischen Zeilen und Spalten frei.
  • Führe zeilenübergreifende Pfeile durch das leere Band zwischen den Zeilen, mit Wegpunkten, die Linien von Beschriftungen und Karteninhalten fernhalten.
  • Validiere vor dem Export die visuelle Hierarchie: Seitentitel > Abschnittstitel > Kartentitel > Textkörper > Aufzählung.
  • Bevorzuge zurückhaltendes Berichtsstyling: saubere Füllungen, klare Abschnittsmarkierungen, große lesbare Schrift und keine dekorative Unordnung.

Mitgelieferte Ressourcen

Wenn der Workflow auf eine dieser Ressourcen verweist, lies sie bei Bedarf – keine von ihnen muss zu Beginn im Kontext sein.

DateiLies sie, wenn …
references/toolbox.mdDu dir nicht sicher bist, welches gebündelte Skript zu einer Anfrage passt, oder mehrere verketten möchtest – eine Karte aller 31 Skripte, gruppiert nach Anwendungsfall (Autor / Import-Code / Import-IaC / Import-API-Spezifikation / Live-Infrastruktur / Vergleichen / Annotieren / Rückwärtsexport / Dienstprogramme) mit einem Leitfaden „Ich habe X, ich möchte Y → verwende Z“
references/xml-authoring.mdDu kurz davor bist, .drawio-XML von Hand zu schreiben (Workflow-Schritt 3) – Dateigerüst, Form-/Kantenzellen, Container, Verbindungsverteilung, Palette, Abstands-/Rasterregeln. Nicht erforderlich, wenn ein gebündelter Generator das XML schreibt
references/mermaid-authoring.mdDas Diagramm ist ein Standardtyp ohne benutzerdefinierte Styling-/Symbolanforderungen (Flussdiagramm, Zustand, Gantt, Mindmap, Zeitstrahl, Reise, Torte, …) und die CLI ist ≥ v30 – autorisiere es als Mermaid-Text und lasse die CLI in natives .drawio konvertieren (nur Struktur, Layout frei). Dokumentiert auch den ELK --layout-Durchlauf der CLI für XML
references/diagram-types.mdDer Benutzer nennt einen bestimmten Diagrammtyp (ERD, UML-Klasse, Sequenz, C4, Architektur, ML/DL, Flussdiagramm, SysML, BPMN, Netzwerktopologie, Swimlane)
references/shapes.md + scripts/shapesearch.pyDas Diagramm benötigt eine bestimmte Form – ein Cloud-Symbol (AWS/Azure/GCP), Cisco/Kubernetes/Netzwerk-Symbol, UML/BPMN/ER/Elektro-/R&I-Flussbild-Element – oder jedes Mal, wenn du sonst einen style=-String erraten würdest. shapesearch.py "<Schlüsselwörter>" gibt den exakten offiziellen Stil für über 10.000 Formen zurück
scripts/aiicons.pyDas Diagramm beinhaltet eine KI/LLM-Marke (OpenAI, Claude, Gemini, Mistral, Llama, HuggingFace, Ollama, LangChain, …) – aiicons.py "<Marke>" gibt einen draw.io image-Stil für das Markenlogo zurück (Lobe-Icons via CDN; --embed für Inline). draw.io hat keine eingebauten KI-Logos. Siehe references/shapes.md → „KI / LLM Markenlogos“
references/style-presets.mdDer Benutzer bittet darum, ein Stil-Preset zu lernen / zu speichern / aufzulisten / als Standard festzulegen / zu löschen, oder du hast ein aktives Preset aufgelöst und benötigst die Anwendungsregeln
references/style-extraction.mdDu befindest dich im Lernvorgang und benötigst die Extraktionsprozedur (aus style-presets.md aufgerufen)
references/troubleshooting.mdEin Export fehlschlägt, die Vision ein PNG ablehnt oder eine Darstellung falsch aussieht
scripts/repair_png.pyNach jedem -e PNG-Export – behebt draw.ios abgeschnittenen IEND-Chunk (Issue #8)
scripts/encode_drawio_url.pyDie CLI nicht verfügbar ist und du einen Browser-Fallback-diagrams.net-URL benötigst (--edit für eine bearbeitbare Editor-URL)
references/autolayout.mdDas Diagramm groß oder layoutlastig ist (Abhängigkeits-/Aufrufgraph, Codestruktur, >~15 Knoten) und du möchtest, dass Graphviz Knoten platziert + Kanten führt, anstatt Koordinaten von Hand zu setzen
scripts/pyimports.py · jsimports.py · goimports.py · rustimports.pyDer Benutzer die Struktur eines Python-, JS/TS-, Go- oder Rust-Projekts visualisieren möchte – extrahiert den Importgraphen (transitiv reduziert, optional --group Container, verschachtelt nach Unterpaket) für Autolayout
scripts/pyclasses.pyDer Benutzer eine Python-Klassenhierarchie / ein Klassendiagramm möchte – extrahiert Klassen + Vererbungskanten (nach Modul mit --group geboxt) für Autolayout
scripts/tfimports.py · k8simports.py · composeimports.pyDer Benutzer deklarierte Infrastruktur visualisieren möchte (Terraform .tf, Kubernetes Manifeste, oder docker-compose) – extrahiert den Ressourcen-/Service-Referenzgraphen (offizielle AWS/Azure/GCP/K8s-Icons für tf/k8s; Service-Boxen + Volume-Zylinder für compose) für Autolayout
scripts/tfstate.py · dockerimports.py (+ k8simports.py)Der Benutzer zeichnen möchte, was TATSÄCHLICH läuft / bereitgestellt ist – pipe terraform show -json (bereitgestellter Zustand), docker inspect $(docker ps -q) (Live-Container) oder kubectl get all,ing,cm,secret,pvc -o json (Live-Cluster, via k8simports) und erhalte die tatsächliche Topologie mit denselben offiziellen Icons. Siehe references/live-infra.md
scripts/drawiodiff.pyDer Benutzer zwei Diagramme oder zwei Schnappschüsse vergleichen / differenzieren möchte („was hat sich geändert“, Infrastruktur-Abweichung) – drawiodiff.py alt.drawio neu.drawio -o diff.json gibt einen farbcodierten Graphen aus (hinzugefügt=grün, entfernt=rot, geändert=orange, gleich=grau) für Autolayout. Abgleich nach Zellen-ID (Importer/Live-Snapshot-Ausgabe) oder --by-label (handgezeichnet)
scripts/timelapse.pyDer Benutzer eine Architektur-Zeitraffer / sehen möchte, wie sich die Struktur einer Codebasis über die Git-Historie entwickelt hat – timelapse.py <Verzeichnis> --importer pyimports führt einen Importer bei jedem gesampelten Commit erneut aus und erstellt einen eigenständigen HTML-Player (eingebettete Frames, Play-/Schritt-Steuerung). Am besten für ein Paket mit echten Importkanten (setze <Verzeichnis> auf das Modul-Root)
scripts/explain.pyDer Benutzer ein vorhandenes .drawio beschreiben / dokumentieren / zusammenfassen möchte (umgekehrt zum Generieren) – explain.py diagramm.drawio gibt strukturiertes Markdown aus: Komponenten gruppiert nach Container/Stufe, Beziehungen (A —Label→ B), Seitenabschnitte für mehrseitige/C4. Gut für eine README/PR-Zusammenfassung oder eine reine Textausgabe
scripts/drawio2pptx.pyDer Benutzer eine PowerPoint-Präsentation / Folien aus einem Diagramm möchte – drawio2pptx.py diagram.drawio -o praesentation.pptx platziert jede Seite auf einer eigenen 16:9-Folie (Seitenname als Titel), sodass ein mehrseitiges C4-Modell zu einer präsentationsbereiten Präsentation wird. Benötigt python-pptx (pip install python-pptx) + die draw.io CLI
scripts/drawiohtml.pyDer Benutzer einen teilbaren interaktiven Betrachter für ein Diagramm möchte (schwenken/zoomen/suchen, kein draw.io nötig) – drawiohtml.py diagram.drawio -o viewer.html bettet SVG jeder Seite IN EINEM eigenständigen HTML ein mit Seiten-Registerkarten, Zieh-Schwenken, Rad-Zoom, Knotensuche (Eingabe durchläuft + zentriert Treffer) und funktionierenden Drill-Down-Links (die data:page/id-Links eines C4-Modells wechseln die Registerkarten). Kein Server, keine externen Anfragen – sende die Datei an jeden
scripts/svgflow.pyDer Benutzer ein animiertes / „fließendes“ Diagramm möchte (Datenfluss, bewegte Kanten) – svgflow.py diagram.drawio -o fluss.svg exportiert nach SVG und macht jede Kante zu einer Marschameisen-Animation (Striche wandern entlang der Pfeile). Eigenständige, sich wiederholende .svg, die auf GitHub / jedem Browser gerendert wird; --speed / --dash / --reverse
scripts/drawio2mermaid.pyDer Benutzer ein .drawio in Mermaid-Text konvertieren möchte (Diagramme-als-Code für eine Markdown-Datei, die GitHub rendert) – drawio2mermaid.py diagram.drawio erzeugt ein flowchart (Container → subgraphs, Kantenbeschriftungen bleiben, Zylinder/Rauten-Formen werden zugeordnet); --fenced umschließt es in ```mermaid, mehrseitig → ein Graph pro Seite. Nur strukturell (Styling/Icons bleiben nicht erhalten)
scripts/sqlerd.pyDer Benutzer ein ER-Diagramm aus SQL DDL möchte – parst CREATE TABLE-Anweisungen in Pro-Tabelle-Knoten (Spalten mit PK/FK-Markierungen) und Krähenfuß-FK-Kanten für Autolayout
scripts/ciimports.pyDer Benutzer ein CI-Pipeline-Diagramm möchte (GitHub Actions Workflows oder GitLab CI) – ciimports.py <Repo-Stamm> liest .github/workflows/*.yml + .gitlab-ci.yml und gibt Jobs aus (Runner, Matrix-Größe, wiederverwendbare Workflow-Aufrufe), needs:-Abhängigkeitskanten, Pro-Workflow-Triggerknoten und Stage/Workflow-Container für Autolayout. Benötigt PyYAML
scripts/openapiimports.pyDer Benutzer ein API-Diagramm aus einer OpenAPI-/Swagger-Spezifikation möchte – openapiimports.py spec.yaml ordnet jeden Vorgang einem Knoten zu, eingefärbt nach HTTP-Methode (GET blau, POST grün, PUT/PATCH orange, DELETE rot) plus einem Knoten pro Komponenten-Schema, mit Kanten von Vorgängen zu den Schemata, die sie verwenden, und zwischen verschachtelten Schemata. --group boxt nach Tag, --no-schemas zeigt nur die Endpunkt-Oberfläche; speist Autolayout
scripts/heatmap.pyDer Benutzer ein vorhandenes .drawio nach Daten einfärben möchte (eine Kosten-/Latenz-/Verkehrs-/Fehlerraten-Heatmap) – heatmap.py diagram.drawio -m metrik.csv passt jede Metrik (CSV Schlüssel,Wert oder JSON {Schlüssel:Wert}) an einen Knoten per ID oder Label an und färbt ihn entlang eines Gradienten neu ein (`--palette heat
scripts/seqlayout.pyDer Benutzer ein Sequenzdiagramm möchte – beschreibe Teilnehmer + Nachrichten als JSON und das Skript berechnet die gesamte Lebenslinien-/Aktivierungs-/Pfeilgeometrie deterministisch (keine handplatzierten Koordinaten, kein Graphviz nötig)
scripts/c4.pyDer Benutzer ein C4-Modell möchte (Systemkontext / Container / Komponente) – Ebenen als JSON rein, fertiges mehrseitiges .drawio raus mit offiziellen C4-Formen/Farben und Klick-Drill-Down-Links zwischen den Ebenen
scripts/relabel.pyDer Benutzer eine Sprachvariante oder einen Massentextaustausch eines vorhandenen .drawio möchte (z. B. ein EN-Diagramm, das für ein zweisprachiges README auf Chinesisch umbeschriftet wird) – relabel.py diagram.drawio --extract -o labels.json exportiert jede Beschriftung als Identitäts-JSON-Map; übersetze die Werte (behalte die Schlüssel), dann relabel.py diagram.drawio --map labels.json -o diagram_cn.drawio tauscht sie aus, wobei Layout/Styles/IDs unberührt bleiben
scripts/restyle.pyDer Benutzer ein VORHANDENES .drawio neu thematisieren möchte („mach das dunkel“, „wende meinen Unternehmensstil auf dieses Diagramm an“) – restyle.py diagram.drawio --preset <Name> ordnet jeden Scheitelpunktfüllung/-strich der Voreinstellungspalette nach Farbton zu, wendet Schrift/Extras an (dunkle fontColor, Kantenfarbe, Hintergrund) und lässt Layout, Formen und Kantenführung unberührt. Voreinstellungen lösen auf wie Schritt 0 (Benutzerverzeichnis, dann eingebaute)
scripts/validate.pyDu hast ein .drawio generiert (insbesondere via Autolayout oder für ein großes handplatziertes Diagramm) und möchtest eine schnelle deterministische strukturelle Linting (hängende Kanten, doppelte/reservierte IDs, defekte Eltern, Überschneidungen) vor dem Export – validate.py diagram.drawio --fix repariert einfache Probleme (fehlende Geometrie, ungültige Kantenenden) und meldet nicht behebbare (Überschneidungen, doppelte IDs). --strict gibt einen Fehlercode bei nicht behobenen Problemen aus; wird von Bundles vor dem Export aufgerufen
scripts/pagefromtop.pyDas generierte .drawio hat nach dem Autolayout alle Zellen auf einer Seite und du musst sie auf mehrere Seiten aufteilen (nach Container, vorher festgelegtem Raster oder einer benutzerdefinierten Aufteilung) – scripts/pagefromtop.py partitioniert die Zeichenfläche mit einer Top-Down-Aufteilung (z. B. Knoten → Seite A, Datenbank → Seite B) und erstellt Verknüpfungen zwischen den Seiten

Verwandte Skills