From d2
Generates D2 diagrams from text descriptions by classifying type (sequence, architecture, ER, class) and planning structure with nodes, groups, edges.
How this skill is triggered — by the user, by Claude, or both
Slash command
/d2:d2-diagramThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
User request: "$ARGUMENTS"
User request: "$ARGUMENTS"
Generate a well-composed D2 diagram from the user's description.
Resolve plugin path and read config:
PLUGIN_DIR=$(find "$HOME/.claude/plugins/cache" -type d -name "d2" -path "*/skills/d2" 2>/dev/null | head -1)
[ -z "$PLUGIN_DIR" ] && PLUGIN_DIR=$(find "$HOME" -maxdepth 8 -type d -name "d2" -path "*/skills/d2" 2>/dev/null | head -1)
bash "$PLUGIN_DIR/scripts/ensure-deps.sh"
Read .claude/d2.json if it exists (theme_id, layout, sketch, output_directory, auto_validate, auto_render). If it does not exist, display a one-time nudge:
First time using the d2 plugin? Run
/d2-configto pick a theme. Using defaults for now.
Determine diagram type from the description:
| Intent | Type |
|---|---|
| API calls, request/response, message passing | Sequence |
| System components, microservices, infrastructure, pipelines, workflows | Architecture |
| Database tables, schema, foreign keys, entities | ER |
| Class hierarchy, OOP, interfaces, data models | Class |
If ambiguous between 2 types, ask one clarifying question. If clear, proceed.
Before writing any D2, build this plan internally. Apply the policies from $PLUGIN_DIR/SKILL.md.
Determine:
Visibility rule: If the budget check passes and there is no ambiguity in level or grouping, proceed directly to Step 4. If split is required OR the abstraction level or grouping is ambiguous, present a summary to the user:
I'm planning to generate:
- Type: {type} at {abstraction_level} level
- Grouping: by {criterion}
- Direction: {direction}
- {N} nodes in {M} groups
- Split: {overview + N detail diagrams | single diagram}
Proceed, or want to adjust?
Read the specialist for the classified type:
$PLUGIN_DIR/specialists/d2-sequence.md$PLUGIN_DIR/specialists/d2-architecture.md$PLUGIN_DIR/specialists/d2-er.md$PLUGIN_DIR/specialists/d2-class.mdUse the specialist's compositional patterns and D2 syntax conventions. The structural plan from Step 3 governs the structure — the specialist provides type-specific syntax.
Write the diagram following:
Order in the .d2 file:
vars block (theme, engine, sketch from config)direction declarationclasses block (if >4 nodes of same type)Non-negotiable conventions:
api_gw, user_svc, orders_dbapi_gw: "API Gateway" — emojis allowed in labels onlyvars block — direction: right for flows, direction: down for hierarchies. If unsure, use direction: right. Never omit.Before delivering, run the 10-point repair checklist from $PLUGIN_DIR/SKILL.md:
Fix any violations silently. Do not ask the user — just fix them.
d2 validate {output_file}
Fix syntax errors using $PLUGIN_DIR/references/guides/troubleshooting.md.
mkdir -p {output_directory}
Filename: {type}-{short-description}-{YYYYMMDD}.d2
Render if auto_render=true or user asks:
d2 {output_file} {output_directory}/{basename}.svg
Output:
{d2 code block}
**What this shows:** {1-2 sentences describing the diagram}
**Saved to:** {filename}
**Elements:** {N} nodes, {M} connections
**Layout:** {engine}, direction {direction}
Want to adjust? I can change the detail level, scope, grouping, or type.
If split was required, list all generated files.
If the user asks to "diagram the flow" of a file or script:
npx claudepluginhub diegomarino/claude-toolshed --plugin d2Generate architecture diagrams, flowcharts, decision trees, workflows, sequence flows, ERDs from declarative D2 text with automatic layouts, themes, and styling.
Generates D2 diagrams from textual descriptions for system architectures, flowcharts, network topologies, data flows, and component relationships.