Version anglaise :
SKILL.en.md
diagram — diagrammes & graphiques
Compétence légère, deux scripts : scripts/mmd2png.py (Mermaid → PNG, local par défaut via mmdc ; distant uniquement sur choix explicite) et scripts/chart.py (graphiques de données → PNG, matplotlib via uv ou Python déjà installé). La source se trouve à côté de la sortie, sans écraser les fichiers existants.
Table de routage selon le besoin
| Besoin | Méthode |
|---|---|
| Flowchart / séquence / classe / état / ER / Gantt / architecture système | Mermaid → scripts/mmd2png.py (par défaut utilise uniquement mmdc en local) |
| Graphiques en barres / circulaires / lignes à partir de données réelles | scripts/chart.py (matplotlib ; uv peut nécessiter une connexion réseau si le paquet n'est pas en cache) |
Diagramme intégré dans un rapport .report.docx | PNG +  dans .report.md, export en docx via la compétence paper et la recette doc |
| Diagramme hors de portée de Mermaid/matplotlib (3D, graphiques très personnalisés) | [N/A] — informer clairement l'utilisateur des limites, ne pas inventer de solution |
Règles
- Sortie à côté de la source :
<nom_source>.diagram.png(image) +<nom_source>.diagram.mmd(source Mermaid, modifiable). N'écrase pas le fichier source. - Mermaid : écrire dans
.mmd, rendu avecpython3 scripts/mmd2png.py '<f>.mmd' '<f>.diagram.png'; les labels du diagramme sont dans la langue de l'utilisateur. - Les données des graphiques doivent être des mesures ou des termes issus de la source (étiquettes
[fact]/[observed]) ; ne pas inventer de valeurs. - Local d'abord, pas d'envoi silencieux de la source : par défaut
mmd2png.pyutilise uniquementmmdc; si le CLI/le navigateur manque ou s'il y a une erreur, l'exécution s'arrête et la raison est donnée, sans appel réseau. Installernpm i -g @mermaid-js/mermaid-cliet Chrome/Chromium. Ce n'est que si l'utilisateur/l'agent choisit explicitement queMMD2PNG_BACKEND=remote(Kroki puis mermaid.ink),krokiouinkest utilisé.chart.pyest traité en local ;uv run --with matplotlibpeut nécessiter un réseau pour récupérer le paquet s'il n'est pas installé/en cache ; donc hors ligne, utiliser Python avec matplotlib déjà installé ou un cache préparé. - Vérifier avant de livrer :
mmd2png.pyvérifie automatiquement le magic number PNG et la taille ≥ 1 Ko ; les images JPEG provenant de sources distantes sont converties en vrai PNG avec ImageMagick (si le convertisseur manque → enregistrer<f>.jpg+ avertissement, ne pas faire passer pour un.png) ; lors de l'intégration dans un rapport → vérifier à nouveau avecpdfinfo+pdftotextaprès conversion DOCX→PDF (image visible, pas de page cassée). - Dimensions : chaque diagramme contient une idée, police suffisamment lisible ; si le diagramme est trop large → le diviser en parties plutôt que de laisser l'éditeur réduire l'affichage.
- Langue de l'interface — répondre dans la même langue que l'utilisateur.
scripts
scripts/mmd2png.py— Mermaid → PNG (local par défaut ; distant optionnel viaMMD2PNG_BACKEND) :python3 scripts/mmd2png.py '<f>.mmd' '<f>.diagram.png' [--scale 2] [--size 1600] [--theme forest]scripts/chart.py— données CSV (2 colonnes : étiquette, valeur) → PNG :uv run --with matplotlib python3 scripts/chart.py '<f>.csv' '<f>.diagram.png' <bar|pie|line>
