From d2
Routes D2 diagram requests to specialist skills while enforcing global policies on snake_case IDs, directions, abstraction levels, grouping, and visual budgets.
npx claudepluginhub diegomarino/claude-toolshed --plugin d2This skill is limited to using the following tools:
Global rules for all D2 diagram generation. Every specialist and generation flow MUST enforce these. They are not optional.
references/guides/common-mistakes.mdreferences/guides/layout-guide.mdreferences/guides/quick-decision-matrix.mdreferences/guides/styling-guide.mdreferences/guides/troubleshooting.mdscripts/ensure-deps.shscripts/extract_d2.shspecialists/d2-architecture.mdspecialists/d2-class.mdspecialists/d2-er.mdspecialists/d2-sequence.mdGenerates D2 diagrams from text descriptions by classifying type (sequence, architecture, ER, class) and planning structure with nodes, groups, edges.
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.
Global rules for all D2 diagram generation. Every specialist and generation flow MUST enforce these. They are not optional.
api_gw: "API Gateway", NOT "API Gateway" as ID. Emojis go in labels only.direction explicitly — direction: right for flows, direction: down for hierarchies. If unsure, use direction: right. Never omit.Every diagram operates at exactly ONE of these levels:
| Level | Shows | Does NOT show |
|---|---|---|
| Context | Users, external systems, the system as a black box | Internal services, databases, queues |
| Container | Applications, services, databases, message brokers | Internal classes, functions, SQL columns |
| Component | Modules, layers, handlers within a single container | Other containers, infrastructure |
| Deployment | Runtime nodes, pods, VMs, networks, regions | Business logic, data models |
Rule: Do not mix levels. If the user's request implies multiple levels, normalize to the dominant level or generate separate diagrams.
Every diagram uses exactly ONE grouping criterion:
| Criterion | Groups by | Typical use |
|---|---|---|
| Layer | frontend / backend / data / infra | Container diagrams, layered architectures |
| Domain | auth / orders / payments / users | Microservices, bounded contexts |
| Ownership | team-a / team-b / platform | Org-level views |
| Environment | dev / staging / prod | Deployment diagrams |
Rule: Choose one. If the user's description mixes criteria, ask or default to the most prominent one.
Hard limits:
| Metric | Limit | Action if exceeded |
|---|---|---|
| Visible top-level elements | 12 | Simplify or split into overview + details |
| Nodes per group | 7 | Split the group or elevate children |
| Nesting depth | 3 levels | Flatten or extract to separate diagram |
| Outgoing edges from one node | 4 | Introduce hub / gateway / bus |
| Groups with exactly 1 node | 0 | Remove the group wrapper |
| Label length | ~24 chars | Shorten, abbreviate, or move detail to tooltip |
When the budget is exceeded:
| Pattern | Direction |
|---|---|
| Request flow, API integration, pipeline, data flow | direction: right |
| Hierarchy, org chart, tree, dependency graph | direction: down (default) |
| Deployment with environments | One column per environment |
| Sequence diagrams | N/A (fixed layout) |
Rule: Always set direction explicitly. Never rely on the engine default.
| Profile | Engine | Reason |
|---|---|---|
| < 8 nodes, simple flow, pipeline | dagre | Fast (~78ms), clean for simple graphs |
| >= 8 nodes, nested containers, dense graphs | elk | Better spacing (~586ms), handles density |
| Sequence diagrams | dagre | Layout engine is ignored for sequences |
| ER with > 6 tables | elk | Better table spacing |
api_gw, user_svc, orders_dbAPI Gateway, User Service, Orders DBapi_gw: "API Gateway" — not "API Gateway" as both ID and labelDefaults — override if the flow demands otherwise.
Before delivering ANY diagram, verify:
direction explicitly declared? Add it.If the structural plan exceeds the visual budget:
{type}-{scope}-overview-{date}.d2, {type}-{scope}-detail-{subsystem}-{date}.d2Run once before any file reads or script calls:
PLUGIN_DIR=$(find "$HOME/.claude/plugins/cache" -type d -name "d2" -path "*/skills/d2" 2>/dev/null | head -1)
If empty (dev/repo usage):
PLUGIN_DIR=$(find "$HOME" -maxdepth 8 -type d -name "d2" -path "*/skills/d2" 2>/dev/null | head -1)
If still empty: stop — "Plugin not found. Is it installed? Run /plugin install d2@claude-toolshed."
Read .claude/d2.json as a first step. Supported keys:
theme_id (default: 0) — D2 theme IDlayout (default: "dagre") — layout engine: dagre, elk, talasketch (default: false) — hand-drawn styleoutput_directory (default: "./diagrams")auto_validate (default: true)auto_render (default: false)output_format (default: "svg")Every generated .d2 file includes a vars block at the top:
vars: {
d2-config: {
theme-id: 0
layout-engine: dagre
sketch: false
}
}
| Mistake | Fix |
|---|---|
Using Mermaid arrow syntax (-->) | D2 uses -> for directed connections |
| Sequence diagram outside container | Use shape: sequence_diagram at root level |
vars block not at top of file | Must be the first statement |
Layout engine tala not working | Requires separate tala binary: brew install tala |
| PNG rendering fails | Requires Playwright: see troubleshooting.md |
| Entry point | When to use |
|---|---|
/d2-diagram | Generate one diagram from a description |
/d2-convert | Convert a Mermaid diagram to D2 format |
/d2-validate | Batch-check existing .d2 or .md files |
/d2-render | Render an existing .d2 file to SVG or PNG |
/d2-config | Configure defaults and check dependencies |
/d2-architect | Analyze a codebase path and generate a diagram suite |
diagram-architect agent | Claude detects diagram need during active development |
| User wants | Specialist |
|---|---|
| API flow, service-to-service calls, request/response | specialists/d2-sequence.md |
| System design, microservices, infrastructure, CI/CD, workflows | specialists/d2-architecture.md |
| Database schema, SQL tables, entities, relationships | specialists/d2-er.md |
| Class hierarchy, OOP design, data models, interfaces | specialists/d2-class.md |
| Need | Load |
|---|---|
| Syntax errors, rendering failures | references/guides/troubleshooting.md |
| Learning D2, preventing errors | references/guides/common-mistakes.md |
| Themes, layout engines, sketch mode | references/guides/styling-guide.md |
| D2 layout features (grids, padding, direction syntax) | references/guides/layout-guide.md |
| Quick routing from symptom to action | references/guides/quick-decision-matrix.md |