Communitygithub.com

diagrammes-lisibles

Créez une page HTML autonome dont le schéma est compris du premier coup d'œil : architecture, flux, séquence, chronologie, arbre, pile de couches, comparaison à barres et quadrant, plus des familles de graphiques rédigés à la main. Combine un moteur de rendu à spécification JSON validée avec un système de conception éditorial et un contrat de compréhension vérifié par machine.

Qu'est-ce que diagrammes-lisibles ?

Cette compétence transforme la création de diagrammes en un processus éditorial rigoureux, garantissant qu'un lecteur humain comprend le schéma dès la première lecture. Elle fusionne un pipeline de spécifications JSON validées (Archify) avec un système de conception éditorial (diagram-design) et ajoute un contrat de compréhension unique : le diagramme doit inclure un titre formulé comme une conclusion, une phrase clé, un chemin de lecture numéroté (2 à 5 arrêts), une légende et une légende descriptive. Un vérificateur automatisé échoue la page si l'un de ces éléments manque ou ne respecte pas les règles (taille de police minimale, contraste ≥4.5:1, connecteurs orthogonaux, budget d'accentuation ≤2 nœuds focaux). La compétence supporte neuf types de diagrammes rendus par le moteur (architecture, flux, état, séquence, chronologie, arbre, couches, barres, quadrant) et permet la création manuelle de graphiques SVG pour plus de 40 autres familles (lignes, nuages de points, Sankey, radar, heatmap, Gantt, Venn, entonnoir, parcours…). L'interaction est intégrée via CSS uniquement (au survol, les nœuds se mettent en évidence, les arêtes s'épaississent), sans JavaScript, pour respecter les règles d'accessibilité et de fichier unique. La compétence peut également importer et extraire du contenu depuis Mermaid, draw.io et Excalidraw, en signalant fidèlement ce qui a été fusionné, réduit ou supprimé.

Compatible avec✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/bingomu/readable-diagrams/tree/main/skills/readable-diagrams

Demander à votre IA préférée

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

Documentation

Diagrammes Lisibles

Une page. Une question. Un schéma que le lecteur comprend du premier coup d'œil.

Cette compétence fusionne deux compétences amont et ajoute la couche manquante :

CoucheOrigineCe qu'elle apporte
Pipeline de spécifications validéesArchifyJSON intermédiaire → rendu déterministe → contrôles machine
Système de conception éditorialdiagram-designTokens papier/encre/accent, rampe typographique, connecteurs orthogonaux, retenue éditoriale
Contrat de compréhensioncette compétenceTitre en forme de conclusion, phrase clé, chemin de lecture numéroté, légende, légende descriptive — et un vérificateur qui fait échouer la page lorsqu'ils sont absents

Aucune des deux compétences parentes ne valide qu'un humain peut lire le résultat. C'est tout l'objet de cette compétence.


0. Le contrat — répondez à quatre questions avant de dessiner

  1. Qui le lit ? executive / mixed / engineer — cela détermine le vocabulaire, pas seulement le ton.
  2. Que doit-il savoir après 10 secondes ? Une phrase. Elle devient la phrase clé.
  3. Où les yeux commencent-ils, et dans quel ordre se déplacent-ils ? 2 à 5 arrêts. Ils deviennent le chemin numéroté.
  4. Que pourraient-ils mal comprendre si le schéma était paresseux ? C'est le travail de la légende, et la raison pour laquelle le schéma vaut la peine d'être dessiné.

Si une réponse est inconnue et que l'utilisateur est joignable, posez une question — sinon, indiquez votre hypothèse dans le pied de page de la légende. Si un paragraphe ou un tableau de trois lignes l'enseignerait mieux, ne dessinez pas.


1. Pipeline

Tous les chemins sont relatifs au dossier de cette compétence — le répertoire qui contient ce SKILL.md. Claude Code, Codex, Cursor et DSH signalent tous ce dossier comme le répertoire de base de la compétence ; un plugin DSH l'indique explicitement à la fin de ce fichier. Dans un checkout de dépôt, il s'agit de skills/readable-diagrams/.

# 1. écrire une spécification (voir references/spec-schema.md)
# 2. rendre
python3 scripts/render.py spec.json -o page.html --json

# 3. exécuter les deux contrôles ; un code de sortie non nul n'est jamais un succès
python3 scripts/self_check.py page.html
python3 scripts/comprehension_check.py page.html

self_check.py valide l'hygiène SVG (contrat d'accessibilité, sécurité du fichier unique, contenu à l'intérieur du viewBox). comprehension_check.py valide la lisibilité (titre/phrase clé/légende descriptive/légende/chemin de lecture, budget d'accentuation, budget de nœuds, seuils typographiques, contraste, connecteurs orthogonaux). Les deux doivent réussir avant la livraison.

Les échecs sont des preuves ordinaires, pas un jugement : lisez le message, réparez la spécification ou la page, réexécutez. Ne corrigez jamais manuellement le HTML généré — régénérez à partir de la spécification pour que la page reste reproductible.


2. Choisir le type

Si le lecteur doit voir…TypeMoteur
Composants et ce qui se connecte à quoiarchitecture✅ spec
Étapes, branches, une décisionflow✅ spec
États et transitionsstate✅ spec
Messages entre parties, dans le tempssequence✅ spec
Événements sur une horlogetimeline✅ spec
Contenance / décompositiontree✅ spec
Bandes d'abstraction, une pilelayers✅ spec
Grandeurs par catégoriesbar✅ spec
Positionnement sur deux axes / prioritéquadrant✅ spec
Lignes, nuages de points, aires, Sankey, radar, heatmap, Gantt, Venn, entonnoir, parcours…rédigé à la main✍️ references/hand-authoring.md

Le catalogue complet de 40+ types, avec le motif sémantique qui devrait guider le choix, se trouve dans references/type-router.md. Lisez-le lorsque le type n'est pas évident.

Règle d'ambiguïté : choisissez l'axe dominant, pas deux mises en page. Si deux types conviennent tous les deux, dessinez celui dont la grammaire correspond à la question du lecteur, et répartissez le reste en une paire vue d'ensemble + détail.


3. Écrire la spécification, pas le HTML

La spécification est l'objet lisible ; le HTML est un produit de construction. Spécification minimale viable :

{
  "type": "architecture",
  "meta": {
    "title": "一次下单请求如何穿过网关到达数据库",
    "eyebrow": "ARCHITECTURE · 架构",
    "takeaway": "写路径只有一条;风控与通知是旁路,不阻塞下单。",
    "caption": "从左往右是请求方向。实线同步,虚线异步;编号是建议阅读顺序。",
    "audience": "mixed",
    "size": "fit",
    "reading_path": ["client", "gateway", "orders", "pg"],
    "source": "示意结构,非实测"
  },
  "zones": [{"id": "edge", "label": "EDGE"}],
  "nodes": [
    {"id": "client", "label": "客户端", "sublabel": "web · app", "kind": "input", "zone": "edge"},
    {"id": "gateway", "label": "API 网关", "sublabel": ":443", "kind": "backend", "zone": "edge"},
    {"id": "orders", "label": "订单服务", "kind": "focal"},
    {"id": "pg", "label": "订单库", "sublabel": "PostgreSQL", "kind": "store"}
  ],
  "edges": [
    {"from": "client", "to": "gateway", "label": "HTTPS", "variant": "accent"},
    {"from": "gateway", "to": "orders", "label": "POST /orders", "variant": "accent"},
    {"from": "orders", "to": "pg", "label": "写入", "variant": "accent"}
  ]
}

Liste complète des champs, formes par type, contrôles de mise en page (col, row, zones, couloirs) et exemples travaillés : references/spec-schema.md.

Tailles : fit (par défaut — la page suit le contenu), doc-inline (960×600), doc-wide (1280×720), slide-16x9, slide-4x3, social-og, social-square, print-a4-landscape, print-a3-landscape. Utilisez un préréglage fixe uniquement lorsque la figure atterrit quelque part de fixe (un diaporama, une feuille imprimée) ; sinon fit maintient la police à une taille lisible.

Thèmes : light (par défaut) ou dark.


4. Les règles de compréhension

Le vérificateur en applique la plupart. Les autres relèvent du jugement de l'auteur.

  1. Le titre énonce la conclusion, pas la catégorie. « 一次下单请求如何穿过网关到达数据库 », pas « 订单系统架构图 ». ≤60 caractères.
  2. Une phrase clé. Ce avec quoi le lecteur doit repartir. S'il en faut deux, c'est qu'il y a deux diagrammes.
  3. La légende descriptive explique comment lire. Direction, unités, ce qui est illustratif, ce qui a été omis.
  4. 2 à 5 arrêts numérotés. Le badge sur la figure et la liste d'étapes ci-dessous doivent correspondre.
  5. Un chemin focal. 1 à 2 éléments d'accent. Un troisième accent annule le signal.
  6. Neuf nœuds est le maximum pour les types structurels. Au-delà : diviser en vue d'ensemble + détail ; ne réduisez jamais la police pour faire rentrer.
  7. Nommez chaque connexion à moins que la mise en page ne la rende indubitable ; les arêtes non étiquetées en dessous de 60 % sont un avertissement.
  8. Légende uniquement lorsqu'il y a quelque chose à décoder — et alors elle couvre chaque type utilisé, rien de plus.
  9. Seuils typographiques : noms de nœuds ≥12 (CJK jamais en dessous de 12), sous-étiquettes ≥9, étiquettes de flèches ≥8. Les préréglages de présentation mettent à l'échelle toute la rampe, pas seulement le titre.
  10. Contraste ≥4.5:1 pour chaque token de texte sur son arrière-plan réel, dans les deux thèmes.
  11. Accessible par défaut : `<svg role=

Skills associés