Langage de diagrammes D2

VérifiéSûr

D2 est un langage de diagramme textuel. Écrivez des fichiers .d2 et générez des SVG/PNG via l'interface en ligne de commande ou le playground.

Spar Skills Guide Bot
DocumentationIntermédiaire
22/07/2026
Claude CodeCursorWindsurfCopilotCodex
#d2#diagramming#text-to-diagram#architecture-diagrams#sequence-diagrams

Recommandé pour

Synthèse automatique

Référence de syntaxe du langage D2 pour écrire des fichiers .d2 (architecture, séquences, tables SQL, grilles) rendus ensuite en SVG/PNG via la CLI d2 ou le playground.

Points forts

  • Tableau de référence compact couvrant formes, connexions, conteneurs, styles, icônes et direction
  • Couvre des cas variés : sql_table, sequence_diagram, grilles, layers, scenarios et steps
  • Montre les mécanismes de factorisation : classes, variables, imports et globs
  • Rappelle les deux modes de rendu (CLI d2 ou play.d2lang.com)

Limites

  • C'est un aide-mémoire, pas un tutoriel : la section sur les commentaires est tronquée
  • Ne détaille ni l'installation de la CLI ni les options d'export
  • Les fonctionnalités avancées (layers, scenarios, steps) sont seulement mentionnées, sans exemple complet
Quand l'utiliser

Pour rédiger rapidement et sans erreur de syntaxe un fichier .d2 d'architecture, de séquence ou de modèle de données.

Quand l'éviter

À éviter si vous cherchez un guide pas à pas d'installation de la CLI ou des types de diagrammes que D2 ne prend pas en charge.

Analyse de sécurité

Sûr
Score qualité88/100

This skill is a documentation/reference for the D2 diagramming language. It declares no tools, contains no executable commands, scripts, network calls, secret handling, or destructive instructions, and only describes syntax and CLI/playground rendering conceptually.

Aucun point d'attention détecté

Comment cette analyse est faite

Exemples

Architecture diagram
Write a D2 file for our AWS architecture: an API gateway calling two Lambda services, each with its own Postgres database, plus a shared S3 bucket. Use nested containers and give the databases a cylinder shape.
Sequence diagram
Create a D2 sequence diagram for an OAuth login flow between the browser, the auth service and the user database.
SQL data model
Generate a D2 data model using sql_table shapes for users, orders and order_items, marking primary and foreign keys, with direction right.

name: d2 description: "D2 diagramming language reference for architecture diagrams, sequence diagrams, grid layouts, SQL tables, and class diagrams. Produces .d2 files rendered via CLI or playground."

D2 Diagramming Language

D2 is a text-to-diagram language. Write .d2 files and render them to SVG/PNG via the d2 CLI or https://play.d2lang.com.


When to Use

  • Creating architecture or system diagrams for plans and documentation
  • Drawing sequence diagrams for API or workflow interactions
  • Building data model diagrams with SQL table shapes
  • Laying out grid-based comparison or dashboard diagrams
  • Visualizing deployment topologies, state machines, or flowcharts

Quick Reference

| Concept | Syntax | |---------|--------| | Shape | name or name: Label | | Connection | a -> b or a -> b: label | | Reverse / bidirectional | a <- b / a <-> b | | Line (no arrow) | a -- b | | Container | parent: { child1; child2 } | | Dot nesting | parent.child.grandchild | | Set shape type | name.shape: oval | | Style | name.style.fill: "#ff0000" | | Icon | name.icon: https://url/icon.svg | | Tooltip | name.tooltip: hover text | | Link | name.link: https://example.com | | Class | classes: { c: { style: {...} } } then name.class: c | | Variable | vars: { k: v } then ${k} | | Direction | direction: right | | Comment | # single line comment | | SQL table | name.shape: sql_table then col: type {constraint: pk} | | Sequence diagram | name.shape: sequence_diagram | | Grid | name.grid-rows: 3 or name.grid-columns: 3 | | Layers | layers: { name: { ... } } | | Scenarios | scenarios: { name: { ... } } (inherits parent) | | Steps | steps: { 1: { ... } 2: { ... } } (each inherits previous) | | Import | a: @file or ...@file (spread) | | Glob | *.style.fill: red / **.style.fill: red | | Null (delete) | x: null / (a -> b)[0]: null |


Core Syntax

Shapes

Any identifier becomes a shape. The default shape is rectangle.

server
database: My Database
api: API Gateway {
  shape: hexagon
}

All shape types: rectangle, square, page, parallelogram, document, cylinder, queue, package, step, callout, stored_data, person, diamond, oval, circle, hexagon, cloud, text, code, class, sql_table, image, sequence_diagram, c4-person.

Connections

a -> b: request
b -> a: response
a <-> b: bidirectional
a -- b: line (no arrowhead)

# Multiple connections between same shapes are indexed
a -> b: first   # (a -> b)[0]
a -> b: second  # (a -> b)[1]

Connection References

Style existing connections by referencing them:

a -> b: request
(a -> b)[0].style.stroke: red
(a -> b)[0].style.stroke-dash: 5

Arrowheads

a -> b: {
  source-arrowhead: 1 {
    shape: diamond
  }
  target-arrowhead: * {
    shape: cf-many
  }
}

Arrowhead shapes: triangle (default), arrow, diamond, circle, cf-one, cf-many, cf-one-required, cf-many-required.

Containers (Nesting)

cloud: AWS {
  vpc: VPC {
    subnet: Private Subnet {
      ec2: Web Server
      db: Database {
        shape: cylinder
      }
    }
  }
}

# Dot notation shorthand
cloud.vpc.subnet.ec2 -> cloud.vpc.subnet.db: query

Labels and Text

# Markdown labels
explanation: |md
  # Architecture Overview
  This system uses **microservices**.
|

# Code blocks
snippet: |go
  func main() {
    fmt.Println("hello")
  }
|

# LaTeX
formula: |latex
  \\frac{n!}{k!(n-k)!}
|

Direction

Controls layout flow. Values: up, down (default), left, right.

direction: right
a -> b -> c

Null (Deletion)

Remove shapes, connections, or attributes:

x: {style.fill: red}
x.style.fill: null    # remove fill
x: null                # remove shape entirely
(a -> b)[0]: null      # remove connection

Comments

# This is a comment
server  # Inline comment

"""
This is a block comment
spanning multiple lines
"""

Positions (near)

Position items at fixed points around the diagram:

title: Architecture Overview {
  shape: text
  near: top-center
  style.font-size: 28
}

legend: {
  near: bottom-right
}

Values: top-left, top-center, top-right, center-left, center-right, bottom-left, bottom-center, bottom-right.

Label/icon positioning (additional values):

node: {
  label.near: outside-top-center
  icon: https://icons.terrastruct.com/aws/Compute/Amazon-EC2.svg
  icon.near: outside-left-center
}

Extra values for label/icon: outside-top-left, outside-top-center, outside-top-right, outside-left-center, outside-right-center, outside-bottom-left, outside-bottom-center, outside-bottom-right.


Dimensions

node: {
  width: 200
  height: 100
}

Cannot be set on containers (they resize to fit children).


Configuration via Vars

vars: {
  d2-config: {
    theme-id: 4
    dark-theme-id: 200
    pad: 50
    center: true
    sketch: true
    layout-engine: elk
  }
}

Layout engines: dagre (default, free), elk (free, more features), tala (premium).


Resource Files

For detailed guidance, read these on-demand:


Input / Output

This skill defines no input parameters or structured output.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/d2-diagramming-language-mrwak8xo' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/d2-diagramming-language-mrwak8xo/download' --output '.skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md.part' && mv '.skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md.part' '.skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Extrait original : Quick Reference
ConceptSyntax
Shapename or name: Label
Connectiona -> b or a -> b: label
Reverse / bidirectionala <- b / a <-> b
Line (no arrow)a -- b
Containerparent: { child1; child2 }
Dot nestingparent.child.grandchild
Set shape typename.shape: oval
Stylename.style.fill: "#ff0000"
Iconname.icon: https://url/icon.svg
Tooltipname.tooltip: hover text
Linkname.link: https://example.com
Classclasses: { c: { style: {...} } } then name.class: c
Variablevars: { k: v } then ${k}
Directiondirection: right
Comment# single line comment
SQL tablename.shape: sql_table then col: type {constraint: pk}
Sequence diagramname.shape: sequence_diagram
Gridname.grid-rows: 3 or name.grid-columns: 3
Layerslayers: { name: { ... } }
Scenariosscenarios: { name: { ... } } (inherits parent)
Stepssteps: { 1: { ... } 2: { ... } } (each inherits previous)
Importa: @file or ...@file (spread)
Glob*.style.fill: red / **.style.fill: red
Null (delete)x: null / (a -> b)[0]: null

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md' && test -s '.skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/d2' && cp -R '.skill-downloads/d2-diagramming-language-mrwak8xo' '.claude/skills/d2'

Cursor
test -f '.skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md' && test -s '.skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/d2' && cp -R '.skill-downloads/d2-diagramming-language-mrwak8xo' '.cursor/skills/d2'

Codex
test -f '.skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md' && test -s '.skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/d2' && cp -R '.skill-downloads/d2-diagramming-language-mrwak8xo' '.agents/skills/d2'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/d2-diagramming-language-mrwak8xo'

openskills read 'd2-diagramming-language-mrwak8xo'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/d2-diagramming-language-mrwak8xo/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires