name: d2lang description: Generate, refactor, debug, and explain D2 diagrams using documented D2 language and CLI behavior. Use when requests mention D2, .d2 files, architecture/flow/ERD/sequence/class diagrams, imports, layers/scenarios/steps composition, D2 layout/style tuning, or D2 render/format/validate/export commands.
D2lang
Goal
Produce valid, readable .d2 that renders correctly with documented D2 syntax/CLI.
Intake Gate
Before writing a new diagram, confirm:
- Diagram type.
- Required entities and relationships.
- Required grouping/containers.
- Output/format/layout constraints (if any).
Clarifying protocol:
- Ask at most 3 high-impact questions.
- Prioritize structure, then relationships, then constraints.
- Proceed with explicit assumptions only for non-safety-critical ambiguity.
- If ambiguity can impact security, auth, data integrity, compliance, or destructive operations, stop and ask for clarification.
Workflow
- Classify diagram and minimum nodes/edges.
- Choose layout strategy (
elkfor dense graphs,dagrefor simple flows unless user specifies otherwise). - Define containers/shapes first, then connections.
- Apply shared styles (
classes/globs) before local overrides. - Use imports/composition only when requested or clearly beneficial.
- Validate and format before finalizing.
D2 Rules (Strict)
- Use documented operators only:
--,->,<-,<->. - Connect by key, not label.
- Quote reserved/special keys when needed.
- Keep paths unambiguous for nested containers.
- Use
nullintentionally for deletions.
CLI
d2 fmt diagram.d2
d2 validate diagram.d2
d2 diagram.d2 diagram.svg
Optional exports: pdf, pptx, gif, txt when requested.
Response Contract
Always:
- Return one complete
.d2file in a fencedd2block (unless user asks partial). - Include
Assumptionswhen details are missing. - Include one short layout rationale.
- Include one recommended render command (and optional validate command).
- Preserve semantics first when refactoring existing diagrams.
Compatibility
- If co-triggered with review-oriented skills, treat review feedback as internal constraints.
- Final user-facing output remains this skill’s
.d2response contract unless user requests a separate review artifact.