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
Pour rédiger rapidement et sans erreur de syntaxe un fichier .d2 d'architecture, de séquence ou de modèle de données.
À é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ûrThis 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 faiteExemples
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.Create a D2 sequence diagram for an OAuth login flow between the browser, the auth service and the user database.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:
- shapes-and-connections.md — Complete shape catalog, connection types, arrowheads
- styling-and-layout.md — All style properties, classes, themes, layout engines
- special-diagrams.md — Sequence diagrams, grid layouts, SQL tables, class diagrams
- composition-and-advanced.md — Vars, globs, imports, layers, scenarios, steps
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 annexesCe 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.mdDepuis 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
| 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 |
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’OpenSkillsopenskills 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 syncMode 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.
Rédaction de docs Supabase
Documentation
Rédigez, éditez et révisez le contenu de la documentation Supabase : guides, tutoriels, références et partiels. Suivez les guides de style et les règles de validation MDX/TOML.
Créer un enregistrement de décision d'architecture
Documentation
Créer un nouveau ADR avec numérotation séquentielle, l'enregistrer dans le graphe AgentDB et le lier aux ADR associés.
Mise à jour de plan avec recherche approfondie
Documentation
Met à jour un document de plan en lançant des sous-agents en parallèle pour analyser un sujet sur tous les passes du compilateur, puis consolide les résultats.