From d2
Generates D2 diagrams from text descriptions by classifying type (sequence, architecture, ER, class) and planning structure with nodes, groups, edges.
npx claudepluginhub diegomarino/claude-toolshed --plugin d2This skill is limited to using the following tools:
User request: "$ARGUMENTS"
Generate 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.
Share bugs, ideas, or general feedback.
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: