Communitygithub.com

générateur-de-diagrammes

Générer, affiner, valider et rendre des diagrammes à partir de langage naturel, notes, extraits de code, schémas, tableaux ou sources de diagrammes existantes. Utilisable pour les organigrammes, les diagrammes en couloirs, les diagrammes de séquence, les diagrammes d'états, les diagrammes ER, les diagrammes de classes, les diagrammes d'architecture (type C4), les graphes de dépendances, les diagrammes de Gantt, les cartes mentales, les parcours utilisateur, les flux type Sankey, les organigrammes, les graphes de réseau et autres modèles visuels. Prend en charge Mermaid par défaut, Graphviz DOT pour les graphes complexes, PlantUML pour les diagrammes UML d'ingénierie et la sortie SVG lorsque le balisage direct est plus fiable.

Qu'est-ce que générateur-de-diagrammes ?

Ce skill permet de créer, affiner, valider et rendre des diagrammes à partir de diverses entrées textuelles, en privilégiant les sources textuelles modifiables pour faciliter la révision, le versionnage et l'amélioration. Il propose un workflow par défaut qui guide l'identification de l'intention de l'utilisateur, le choix du langage de diagramme le plus adapté (Mermaid, Graphviz DOT, PlantUML ou SVG) via une table de décision, la normalisation des entités et relations, la génération de code de diagramme concis et lisible, et la validation syntaxique. Le skill est conçu pour une large gamme de diagrammes : organigrammes, diagrammes de séquence, diagrammes d'états, diagrammes ER, diagrammes de classes, diagrammes d'architecture (type C4), graphes de dépendances, diagrammes de Gantt, cartes mentales, parcours utilisateur, flux type Sankey, organigrammes, graphes de réseau, etc. Il peut également rendre les diagrammes en fichiers PNG, SVG ou PDF via un script Python autonome, et fournit un mécanisme de bootstrap pour installer les outils de rendu manquants. Ce skill est particulièrement utile pour les développeurs, architectes et ingénieurs qui souhaitant générer rapidement et de manière fiable des diagrammes à intégrer dans la documentation, les rapports ou les présentations.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Générateur de Diagrammes

ACTION REQUISE (à lire et exécuter immédiatement)

  1. MAINTENANT : Confirmer si la tâche actuelle correspond au champ d'application de cette compétence.
  2. MAINTENANT : Lire ../tool-index.md pour vérifier la disponibilité et le chemin réel des outils.
  3. SUIVANT : Si un outil manque, appeler le bootstrap, ne pas deviner le chemin.
  4. AGIR : Entrer dans la première étape du "workflow" et l'exécuter, ne pas rester dans l'état de confirmation.

Objectif

Créer des diagrammes clairs et modifiables à partir d'entrées désordonnées ou structurées. Privilégier d'abord une source de diagramme textuelle afin que le résultat puisse être révisé, versionné et affiné. Ne générer des fichiers que lorsque l'utilisateur demande une image/PDF ou qu'un artefact téléchargeable serait réellement utile.

Workflow par défaut

  1. Identifier l'intention, le public et le matériel source de l'utilisateur.
  2. Choisir la famille de diagrammes et le langage à l'aide du tableau de décision ci-dessous.
  3. Normaliser les entités, relations, étiquettes, états, branches et informations de temps/ordre avant d'écrire le code du diagramme.
  4. Générer un code de diagramme concis et lisible.
  5. Valider la syntaxe mentalement et, lors de la création de fichiers, exécuter scripts/render_diagram.py.
  6. Renvoyer le code source du diagramme ainsi qu'une brève note sur les hypothèses. Lorsque des fichiers sont générés, inclure des liens vers les fichiers de sortie.

Ne pas trop demander de clarifications. Si la demande est sous-spécifiée, faire des hypothèses raisonnables et les étiqueter brièvement.

Tableau de décision du langage de diagramme

Utiliser Mermaid sauf si un autre langage est clairement meilleur.

L'utilisateur veutLangage préféréPourquoi
flux de processus, arbre de décision, couloir simpleMermaid flowchartlisible et facile à coller dans le Markdown
séquence d'interactions système/utilisateurMermaid sequenceDiagram ou PlantUML sequenceMermaid pour la documentation ; PlantUML pour le formalisme UML
cycle de vie, machine à états, transitionsMermaid stateDiagram-v2 ou PlantUML statesyntaxe de transition compacte
schéma de base de données, entités, relationsMermaid erDiagramnotation ER portable
modèle de classes/interfaces/objetsMermaid classDiagram ou PlantUML classMermaid pour la documentation ; PlantUML pour l'UML détaillé
planning de projetMermaid ganttsyntaxe concise pour les chronologies
hiérarchie, idées, notesMermaid mindmapbon défaut pour les cartes d'idées
parcours client/produitMermaid journeynotation de parcours intégrée
historique gitMermaid gitGraphnotation git intégrée
graphe de dépendances, graphe de paquets, grand réseauGraphviz DOTmeilleurs moteurs de disposition pour les graphes denses
architecture avec couches, clusters, limitesMermaid flowchart avec sous-graphes, Graphviz clusters, ou PlantUML style C4choisir en fonction de la fidélité demandée
flux pondéré/relation type SankeyMermaid sankey-beta si pris en charge, sinon SVG ou Graphvizla prise en charge de Mermaid peut varier selon le moteur de rendu
visuel personnalisé où les langages source s'adaptent malSVGcontrôle précis de la disposition et du style

Politique de sortie

  • Fournir toujours une source modifiable sauf si l'utilisateur demande explicitement uniquement une image.
  • Par défaut, fournir un seul diagramme optimal. Proposer des alternatives uniquement si elles sont réellement utiles.
  • Privilégier une syntaxe stable et simple plutôt que des fonctionnalités sophistiquées qui pourraient ne pas s'afficher correctement dans les anciennes versions de Mermaid/PlantUML.
  • Utiliser des étiquettes courtes. Fractionner le texte long dans des notes en dehors du diagramme si nécessaire.
  • Éviter les identifiants de nœuds ambigus. Utiliser des identifiants ASCII et des étiquettes lisibles par un humain.
  • Préserver la terminologie de l'utilisateur, mais normaliser les majuscules à l'intérieur d'un diagramme.
  • Pour les diagrammes techniques, inclure les limites telles que client, service, base de données, file d'attente, API externe et opérateur/utilisateur lorsqu'elles sont implicites.
  • Pour les diagrammes de processus métier, distinguer le chemin heureux, les points de décision, les échecs, les tentatives et les étapes manuelles lorsqu'ils sont présents.
  • Pour les diagrammes créés à partir d'un texte incertain, inclure une section Hypothèses après le code.

Règles de génération Mermaid

Consulter references/diagram-patterns.md pour des modèles compacts.

Règles générales pour Mermaid :

  • Commencer par la directive de diagramme correcte, par exemple flowchart TD, sequenceDiagram, erDiagram, gantt, mindmap, ou journey.
  • Pour les organigrammes, utiliser flowchart TD sauf si l'utilisateur demande de gauche à droite ; utiliser flowchart LR pour l'architecture et les pipelines.
  • Utiliser des sous-graphes pour les couloirs ou les couches d'architecture. Nommer les sous-graphes avec des étiquettes lisibles.
  • Garder les identifiants de nœuds stables et uniquement ASCII, par exemple ingest_service[Service d'Ingestion].
  • Mettre entre guillemets les étiquettes contenant une ponctuation susceptible de dérouter l'analyseur syntaxique.
  • Utiliser des losanges de décision pour les embranchements : decision{Condition ?}.
  • Utiliser des étiquettes de arêtes cohérentes : -- oui -->, -- non -->, -. asynchrone .->, ou == critique ==> uniquement lorsqu'elles sont significatives.
  • Dans les diagrammes de séquence, déclarer les participants avant les messages. Utiliser actor pour les humains et participant pour les systèmes.
  • Utiliser les blocs alt/else/end, opt/end, loop/end, et par/and/end pour les flux conditionnels, optionnels, répétés et parallèles.

Règles de génération Graphviz DOT

Utiliser Graphviz pour les diagrammes de relations grands, denses ou sensibles à la disposition.

  • Préférer digraph G pour les relations dirigées et graph G pour les réseaux non dirigés.
  • Définir des attributs de graphe favorisant la disposition en haut : rankdir=LR, nodesep, ranksep, et splines=true si nécessaire.
  • Utiliser subgraph cluster_nom pour les limites et sous-systèmes.
  • Utiliser des étiquettes simples et une mise en forme sobre.
  • Utiliser des étiquettes d'arêtes uniquement lorsqu'elles ajoutent du sens.
  • Pour de nombreux nœuds, grouper par domaine avec des clusters et éviter les arêtes tous-à-tous qui créent des croisements.

Règles de génération PlantUML

Utiliser PlantUML lorsque l'utilisateur demande de l'UML ou a besoin de notation UML formelle.

  • Encadrer les diagrammes avec @startuml et @enduml.
  • Utiliser les stéréotypes actor, participant, database, queue, collections, ou component si nécessaire.
  • Utiliser package, rectangle, ou node pour les limites d'architecture.
  • Pour les diagrammes de classes, inclure uniquement les champs/méthodes importants sauf si l'utilisateur demande un niveau de détail exhaustif.
  • Pour les diagrammes d'activités, utiliser des marqueurs de début/fin clairs et des étiquettes de branche explicites.

Règles de génération SVG

Utiliser SVG uniquement lorsque les langages de diagramme textuels ne peuvent pas exprimer de manière fiable le visuel demandé.

  • Garder le SVG simple, accessible et modifiable.
  • Inclure <title> et des étiquettes de texte significatives.
  • Privilégier les rectangles, lignes, flèches et groupes plutôt que les chemins complexes.
  • Ne pas intégrer de polices externes ou d'images distantes.

Génération de fichiers

Lorsque l'utilisateur demande un PNG/SVG/PDF, créer un fichier source et exécuter :

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

<RACINE_COMPETENCE> est le chemin réel du répertoire skills/ de ce package, que l'IA doit détecter automatiquement.

Le moteur de rendu est intentionnellement tolérant en matière de dépendances. Il essaie les outils locaux courants et signale des conseils d'installation exploitables si un moteur de rendu est indisponible. Ne pas prétendre qu'une image a été rendue à moins que le script ne se soit terminé avec succès et que le fichier de sortie existe.

Liste de validation

Avant de finaliser :

  • Le type de diagramme correspond à la tâche de l'utilisateur.
  • La source est syntaxiquement plausible pour le langage choisi.
  • Les étiquettes sont suffisamment courtes pour tenir.
  • L'ordre des arêtes et messages reflète fidèlement l'entrée.
  • Les hypothèses sont mentionnées lorsque l'entrée était incomplète.
  • Pour les fichiers générés, la sortie existe et s'ouvre ou a une taille non nulle.

Modèle de réponse courant

Utiliser cette structure pour la plupart des réponses de diagramme :

Voici la version modifiable en [langage] :

```[langage]
[source]

Hypothèses :

  • [uniquement si nécessaire]

Fichier rendu : [lien] [uniquement si généré]


Pour les requêtes d'utilisateur en anglais, répondre en anglais. Pour les requêtes d'utilisateur en français, répondre en français sauf demande contraire.

---

## Bootstrap à la demande

### Capacités d'automatisation

| Outil | Installation automatique | Méthode d'installation | Description |
|------|-----------|---------|------|
| Mermaid CLI (mmdc) | ✓ | npm install -g @mermaid-js/mermaid-cli | Rendre Mermaid en PNG/SVG |
| Graphviz (dot) | ✗ | Installation manuelle | https://graphviz.org/download/ |
| PlantUML | ✗ | Nécessite Java + plantuml.jar | https://plantuml.com/download |
| Python (script de rendu) | ✓ | Déjà inclus dans le bootstrap | Dépend de `scripts/render_diagram.py` |

### Description

Cette compétence produit principalement du code source de diagramme textuel (Mermaid/DOT/PlantUML), et ne nécessite pas nécessairement d'outil de rendu local. Les moteurs de rendu ne sont nécessaires que lorsque l'utilisateur demande explicitement la génération d'un fichier PNG/SVG/PDF.

Si un moteur de rendu n'est pas disponible, `scripts/render_diagram.py` affiche un conseil d'installation plutôt qu'une erreur.

---

## Contexte de routage

**Entrée en amont** : `skills/SKILL.md` (contrôleur principal), `routing.md`
**Condition de déclenchement** : L'utilisateur dit "dessiner", "organigramme", "diagramme d'architecture", "diagramme de chemin d'attaque", "diagramme de séquence", "Mermaid", "Graphviz", "PlantUML"
**Sortie en aval** :
- Les diagrammes générés peuvent être intégrés dans les rapports de `docs-generator/`
- Les diagrammes de chemin d'attaque peuvent accompagner les rapports de pénétration de `pentest-tools/`

**Modules associés de même niveau** : `docs-generator/` (intégration de diagrammes dans les rapports)

## Auto-vérification de l'achèvement de la tâche (MUST réussir avant de prétendre avoir terminé)

- [ ] Ai-je exécuté chaque étape du workflow (pas seulement lu) ?
- [ ] Ai-je utilisé un chemin d'outil réel basé sur `tool-index` ?
- [ ] Ai-je produit des preuves reproductibles (commandes/scripts/captures d'écran/rapports) ?
- [ ] Ai-je complété et renseigné les éléments de la liste de contrôle demandés par RULES ?

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.

Skills associés