Communitygithub.com

Diagramm-Generator

Generiere, verfeinere, validiere und rendere Diagramme aus natürlicher Sprache, Notizen, Code-Snippets, Schemata, Tabellen oder vorhandenen Diagrammquellen.

Was ist Diagramm-Generator?

Der Diagramm-Generator ist eine vielseitige AI-Skill, die Entwickler und Agenten dabei unterstützt, aus verschiedenen Eingabeformaten klare, editierbare Diagramme zu erstellen. Standardmäßig wird Mermaid verwendet, wobei je nach Anwendungsfall auch Graphviz DOT, PlantUML oder SVG zum Einsatz kommen. Die Skill identifiziert zunächst die Absicht des Nutzers, wählt anhand einer Entscheidungstabelle die optimale Diagrammsprache aus, normalisiert die Entitäten und Beziehungen und generiert kompakten, lesbaren Quelltext. Die Ausgabe erfolgt bevorzugt als textbasierter Quelltext, der versioniert und weiterverarbeitet werden kann. Nur auf expliziten Wunsch hin werden gerenderte Dateien (PNG, SVG, PDF) erzeugt. Die Skill unterstützt eine Vielzahl von Diagrammtypen wie Flussdiagramme, Sequenzdiagramme, ER-Diagramme, Klassendiagramme, Gantt-Diagramme, Mindmaps, Architekturdiagramme und Netzwerkgraphen. Die Entscheidungstabelle für Diagrammsprachen sowie die Validierungs-Checkliste helfen dabei, konsistente und fehlerfreie Ergebnisse zu liefern.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/diagram-generator

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht Diagramm-Generator?

AKTION ERFORDERLICH (nach dem Lesen sofort ausführen)

  1. JETZT: Prüfe, ob die aktuelle Aufgabe in den Anwendungsbereich dieser Skill fällt
  2. JETZT: Lese ../tool-index.md, um die Verfügbarkeit und den tatsächlichen Pfad der Tools zu überprüfen
  3. NÄCHSTES: Fehlende Tools per Bootstrap installieren, nicht den Pfad raten
  4. AKTION: Gehe zum ersten Schritt des Arbeitsablaufs und führe ihn aus. Bleibe nicht im Bestätigungsstatus hängen

Zweck

Erstelle klare, editierbare Diagramme aus unstrukturierten oder strukturierten Eingaben. Bevorzuge zuerst textbasierte Diagrammquellen, damit das Ergebnis überprüft, versioniert und verfeinert werden kann. Rendere nur dann in Dateien, wenn der Benutzer explizit ein Bild/PDF anfordert oder ein herunterladbares Artefakt wesentlich hilfreich wäre.

Standard-Arbeitsablauf

  1. Identifiziere die Absicht des Benutzers, die Zielgruppe und das Quellmaterial.
  2. Wähle die Diagrammfamilie und -sprache anhand der Entscheidungstabelle unten.
  3. Normalisiere Entitäten, Beziehungen, Beschriftungen, Zustände, Verzweigungen und Zeit-/Reihenfolgeinformationen, bevor der Diagrammcode geschrieben wird.
  4. Generiere präzisen, lesbaren Diagrammquelltext.
  5. Validiere die Syntax mental und führe bei Dateierstellung scripts/render_diagram.py aus.
  6. Gib den Diagrammquelltext plus einen kurzen Hinweis auf Annahmen zurück. Wenn Dateien erzeugt wurden, füge Links zu den Ausgabedateien hinzu.

Verlange nicht zu oft nach Klärung. Wenn die Anfrage unterbestimmt ist, triff vernünftige Annahmen und kennzeichne sie kurz.

Entscheidungstabelle für Diagrammsprachen

Verwende Mermaid, es sei denn, eine andere Sprache ist eindeutig besser geeignet.

Benutzer möchteBevorzugtWarum
Prozessablauf, Entscheidungsbaum, einfache SwimlaneMermaid flowchartLesbar und einfach in Markdown einzufügen
Abfolge von System-/BenutzerinteraktionenMermaid sequenceDiagram oder PlantUML sequenceMermaid für Dokumentation; PlantUML für UML-Formalität
Lebenszyklus, Zustandsmaschine, ÜbergängeMermaid stateDiagram-v2 oder PlantUML stateKompakte Übergangssyntax
Datenbankschema, Entitäten, BeziehungenMermaid erDiagramPortable ER-Notation
Klassen-/Schnittstellen-/ObjektmodellMermaid classDiagram oder PlantUML classMermaid für Dokumentation; PlantUML für detailliertes UML
ProjektzeitplanMermaid ganttPrägnante Zeitleistensyntax
Hierarchie, Ideen, NotizenMermaid mindmapGute Standardoption für Ideenmaps
Kunden-/ProduktreiseMermaid journeyEingebaute Reisenotation
Git-VerlaufMermaid gitGraphEingebaute Git-Notation
Abhängigkeitsgraph, Paketgraph, großes NetzwerkGraphviz DOTBessere Layout-Engines für dichte Graphen
Architektur mit Schichten, Clustern, GrenzenMermaid flowchart mit Subgraphen, Graphviz-Cluster oder PlantUML C4-StilWähle basierend auf der gewünschten Detailtreue
Gewichteter Fluss/Sankey-ähnliche BeziehungMermaid sankey-beta (falls unterstützt), sonst SVG oder GraphvizMermaid-Unterstützung kann je nach Renderer variieren
Benutzerdefiniertes visuelles, bei dem Quellsprachen schlecht passenSVGPräzise Kontrolle über Layout und Styling

Ausgaberichtlinie

  • Gib immer den editierbaren Quelltext an, es sei denn, der Benutzer fordert explizit nur ein Bild an.
  • Standardmäßig ein einzelnes bestes Diagramm. Biete Alternativen nur dann an, wenn sie wirklich nützlich sind.
  • Bevorzuge stabile, einfache Syntax gegenüber ausgefallenen Funktionen, die in älteren Mermaid-/PlantUML-Versionen möglicherweise nicht rendern.
  • Verwende kurze Beschriftungen. Teile lange Texte bei Bedarf in Notizen außerhalb des Diagramms auf.
  • Vermeide mehrdeutige Knoten-IDs. Verwende ASCII-IDs und menschenlesbare Beschriftungen.
  • Behalte die Terminologie des Benutzers bei, aber standardisiere die Groß-/Kleinschreibung innerhalb eines Diagramms.
  • Füge bei technischen Diagrammen Grenzen wie Client, Service, Datenbank, Warteschlange, externe API und Operator/Benutzer hinzu, wenn sie impliziert sind.
  • Unterscheide bei Geschäftsprozessdiagrammen den Happy Path, Entscheidungspunkte, Fehler, Wiederholungen und manuelle Schritte, wenn vorhanden.
  • Füge bei Diagrammen, die aus unsicherem Text erstellt wurden, einen Abschnitt Annahmen nach dem Code ein.

Regeln zur Mermaid-Generierung

Konsultiere references/diagram-patterns.md für kompakte Vorlagen.

Allgemeine Mermaid-Regeln:

  • Beginne mit der korrekten Diagrammdirektive, z. B. flowchart TD, sequenceDiagram, erDiagram, gantt, mindmap oder journey.
  • Verwende für Flussdiagramme flowchart TD, es sei denn, der Benutzer wünscht von links nach rechts; verwende flowchart LR für Architektur und Pipelines.
  • Verwende Subgraphen für Swimlanes oder Architekturschichten. Benenne Subgraphen mit lesbaren Beschriftungen.
  • Halte Knoten-IDs stabil und ASCII-only, z. B. ingest_service[Eingabedienst].
  • Setze Beschriftungen, die Satzzeichen enthalten, welche den Parser verwirren könnten, in Anführungszeichen.
  • Verwende Entscheidungsrauten für Verzweigungen: decision{Bedingung?}.
  • Verwende konsistente Kantenbeschriftungen: -- ja -->, -- nein -->, -. asynchron .-> oder == kritisch ==> nur wenn sinnvoll.
  • Deklariere in Sequenzdiagrammen die Teilnehmer vor den Nachrichten. Verwende actor für Menschen und participant für Systeme.
  • Verwende alt/else/end, opt/end, loop/end und par/and/end-Blöcke für bedingte, optionale, wiederholte und parallele Abläufe.

Regeln zur Graphviz-DOT-Generierung

Verwende Graphviz für große, dichte oder layoutempfindliche Beziehungsdiagramme.

  • Bevorzuge digraph G für gerichtete Beziehungen und graph G für ungerichtete Netzwerke.
  • Setze layoutfreundliche Graphattribute am Anfang: rankdir=LR, nodesep, ranksep und splines=true, wenn hilfreich.
  • Verwende subgraph cluster_name für Grenzen und Subsysteme.
  • Verwende einfache Beschriftungen und zurückhaltendes Styling.
  • Verwende Kantenbeschriftungen nur dann, wenn sie Bedeutung hinzufügen.
  • Bei vielen Knoten gruppiere sie nach Domäne mit Clustern und vermeide kreuzungsreiche All-to-All-Kanten.

Regeln zur PlantUML-Generierung

Verwende PlantUML, wenn der Benutzer UML oder formale UML-Notation wünscht.

  • Ummantle Diagramme mit @startuml und @enduml.
  • Verwende actor, participant, database, queue, collections oder component-Stereotypen, wenn sinnvoll.
  • Verwende package, rectangle oder node für Architekturgrenzen.
  • Füge bei Klassendiagrammen nur wichtige Felder/Methoden hinzu, es sei denn, der Benutzer wünscht erschöpfende Details.
  • Verwende bei Aktivitätsdiagrammen klare Start-/Endmarkierungen und explizite Verzweigungsbeschriftungen.

Regeln zur SVG-Generierung

Verwende SVG nur, wenn textbasierte Diagrammsprachen die gewünschte visuelle Darstellung nicht zuverlässig ausdrücken können.

  • Halte SVG einfach, zugänglich und editierbar.
  • Füge <title> und aussagekräftige Textbeschriftungen hinzu.
  • Bevorzuge Rechtecke, Linien, Pfeile und Gruppierungen gegenüber komplexen Pfaden.
  • Bette keine externen Schriftarten oder entfernten Bilder ein.

Dateien rendern

Wenn der Benutzer PNG/SVG/PDF anfordert, erstelle eine Quelldatei und führe aus:

python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.mmd --format svg --out output.svg
python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.dot --format png --out output.png
python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.puml --format svg --out output.svg

<SKILL_ROOT> ist der tatsächliche Pfad des skills/-Verzeichnisses dieses Pakets. Der AI sollte ihn automatisch erkennen.

Der Renderer ist bewusst abhängigkeitstolerant. Er probiert übliche lokale Tools aus und meldet hilfreiche Installationshinweise, falls ein Renderer nicht verfügbar ist. Behaupfte nicht, dass ein Bild gerendert wurde, es sei denn, das Skript wurde erfolgreich abgeschlossen und die Ausgabedatei existiert.

Validierungs-Checkliste

Vor der Finalisierung:

  • Der Diagrammtyp passt zur Aufgabe des Benutzers.
  • Der Quelltext ist syntaktisch plausibel für die gewählte Sprache.
  • Beschriftungen sind kurz genug, um zu passen.
  • Kanten und Nachrichtenordnung spiegeln die Eingabe genau wider.
  • Annahmen werden genannt, wenn die Eingabe unvollständig war.
  • Bei generierten Dateien: Die Ausgabe existiert und öffnet sich oder hat eine Größe ungleich Null.

Allgemeine Antwortvorlage

Verwende diese Struktur für die meisten Diagrammantworten:

Hier ist die editierbare [Sprache]-Version:

```[sprache]
[quelle]

Annahmen:

  • [nur bei Bedarf]

Gerenderte Datei: [Link] [nur bei Generierung]


Antworte auf Englisch bei englischsprachigen Anfragen. Antworte auf Chinesisch bei chinesischsprachigen Anfragen, es sei denn, der Benutzer wünscht etwas anderes.

---

## On-Demand-Bootstrap

### Grenzen der Automatisierung

| Tool | Automatisch installierbar | Installationsmethode | Hinweis |
|------|---------------------------|----------------------|---------|
| Mermaid CLI (mmdc) | ✓ | npm install -g @mermaid-js/mermaid-cli | Rendert Mermaid in PNG/SVG |
| Graphviz (dot) | ✗ | Manuelle Installation | https://graphviz.org/download/ |
| PlantUML | ✗ | Benötigt Java + plantuml.jar | https://plantuml.com/download |
| Python (Render-Skript) | ✓ | Bereits im Bootstrap enthalten | `scripts/render_diagram.py` Abhängigkeiten |

### Hinweis

Diese Skill gibt hauptsächlich textbasierten Diagrammquellcode aus (Mermaid/DOT/PlantUML) und benötigt nicht zwangsläufig lokale Rendering-Tools. Der entsprechende Renderer wird nur benötigt, wenn der Benutzer explizit die Erzeugung von PNG/SVG/PDF-Dateien anfordert.

Falls ein Renderer nicht verfügbar ist, gibt `scripts/render_diagram.py` Installationshinweise aus, anstatt einen Fehler zu melden.

---

## Routing-Kontext

**Eingangspunkt (Upstream)**: `skills/SKILL.md` (Hauptsteuerung), `routing.md`
**Auslösebedingung**: Benutzer sagt "Diagramm", "Flussdiagramm", "Architekturdiagramm", "Angriffspfaddiagramm", "Sequenzdiagramm", "Mermaid", "Graphviz", "PlantUML"
**Ausgangspunkt (Downstream)**:
- Erzeugte Diagramme können in Berichte von `docs-generator/` eingebettet werden
- Angriffspfaddiagramme können mit Penetrationstestberichten von `pentest-tools/` kombiniert werden

**Verwandte Module auf gleicher Ebene**: `docs-generator/` (Diagramme in Berichte einbetten)

## Aufgaben-Selbstprüfung (MUSS vor Abschluss bestanden werden)

- [ ] Habe ich jeden Schritt des Arbeitsablaufs ausgeführt (und nicht nur gelesen)?
- [ ] Habe ich basierend auf dem `tool-index` reale Tool-Pfade verwendet?
- [ ] Habe ich reproduzierbare Belege erbracht (Befehle/Skripte/Screenshots/Berichte)?
- [ ] Habe ich die von RULES geforderten Checklisten-Punkte abgeschlossen und zurückgeschrieben?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

go-rust-reverse

Use for reverse engineering stripped Go and Rust binaries including runtime recognition, pclntab/moduel data recovery, panic strings, and idiomatic decompilation recovery.

Verwandte Skills