Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

architecture-diagram · cocoon-ai — Claude Code skill: HTML+SVG diagrams

Generates architecture diagrams for systems, cloud infrastructure, microservices, and network topology as self-contained HTML files with a dark theme.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add Cocoon-AI/architecture-diagram-generator --skill architecture-diagram -a claude-code
Open on GitHub

What architecture-diagram does

Creates technical architecture diagrams as HTML files with embedded SVG graphics and CSS. Each diagram is a single file that opens in a browser. Inside: dark background (#020617), grid, components with semantic color palette (Frontend — cyan, Backend — emerald, Database — violet, AWS/Cloud — amber, Security — rose), JetBrains Mono font, and built-in export toolbar.

The export toolbar hides behind a ⋯ button and reveals three actions: copy PNG to clipboard (2x scale), download PNG, and export PDF via jspdf. Capture is done by [email protected] with Subresource Integrity. Diagrams follow placement rules: minimum 40px vertical gap between components, legends outside cluster and security group boundaries.

Requires two CDN scripts with SRI hashes (html2canvas and jspdf); export won't work without them. Clipboard API needs a secure context (https, localhost, or file). If something is clipped — increase the SVG viewBox.

What it helps with

  • document microservices architecture with message buses
  • visualize AWS infrastructure topology with VPC and security groups
  • draw data flow diagrams between frontend, API, and database
  • build security diagrams with OAuth and trust boundaries
  • export system diagrams to PNG or PDF for presentations

Example prompts for the agent

  • Create an architecture diagram for a microservices app: React frontend, three Node.js backends, Kafka between them, PostgreSQL and Redis
  • Draw an AWS infrastructure diagram with VPC, two subnets, ECS Fargate, RDS, and ALB
  • Build a security diagram for a web app: user → OAuth2 provider → API Gateway → internal services

How to install architecture-diagram

1Skills CLI (Vercel)

npx skills add Cocoon-AI/architecture-diagram-generator --skill architecture-diagram -a claude-code

2Manually: put the files in place

~/.claude/skills/architecture-diagram/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/architecture-diagram/

Other versions of architecture-diagram

Similar

gpt-taste nexu-io Enforces strict frontend design rules: prevents multi-line hero titles, fixes empty bento grid cells, and adds advanced GSAP scroll physics. Claude Code CX Codex Cursor +1 1,800installs redesign-existing-projects nexu-io Audits an existing interface and updates a website or app without changing its working product structure. Use it when the UI feels generic or lacks visual hierarchy. Claude Code CX Codex Cursor +1 1,800installs od-contribute nexu-io This skill guides contributions to OpenDesign, from submitting a skill or design system to translating docs, fixing text, or reporting a bug. Claude Code CX Codex Cursor +1 1,800installs ui-ux-designer sickn33 This skill supports interface design, user flows, and design systems with research and accessibility checks. Use it for redesigns, prototypes, and interaction reviews. Claude Code CX Codex Cursor +1 3,100installs expo-design-system expo Builds and audits a design system in Expo apps by centralizing design tokens, structuring reusable components, and eliminating hardcoded styles. Claude Code CX Codex Cursor +1 16,500installs image-to-video prime-skills Routes still image animation tasks to the best RunComfy catalog model. Helps turn static pictures into videos without guessing model settings. Claude Code CX Codex Cursor +1 437,600installs frontend-design official anthropics This skill guides intentional visual design for new interfaces and redesigns. Use it when a generic generated UI is not enough. Claude Code Claude.ai 1,025,790installs grill-me Matt Pocock grill-me interviews you about a plan or design to expose gaps and sharpen decisions. Use it before implementation starts. Claude Code 1,424,476installs

Questions about architecture-diagram

How to install architecture-diagram in Claude Code?

Run npx skills add Cocoon-AI/architecture-diagram-generator --skill architecture-diagram -a claude-code. The skill will land in ~/.claude/skills/architecture-diagram/SKILL.md.

What does architecture-diagram do?

Generates architecture diagrams for systems, cloud infrastructure, microservices, network topology, and security flows as self-contained HTML files with embedded SVG graphics, a dark theme, and an export toolbar for PNG/PDF.

What export formats does architecture-diagram support?

Three formats: copy PNG to clipboard (2x scale), download PNG, and export PDF. All three use html2canvas for capture; PDF embeds the PNG via jspdf.

Source text

SKILL.md · MIT
---
name: architecture-diagram
description: Create polished dark-themed architecture diagrams as self-contained HTML+SVG files. Use when the user asks for system, infrastructure, cloud, security, or network topology diagrams.
---

# Architecture Diagram Skill

Create professional technical architecture diagrams as self-contained HTML files with inline SVG graphics and CSS styling.

> **Version 1.1** · MIT License · Authored by [Cocoon AI](mailto:[email protected])

## Design System

### Color Palette

Use these semantic colors for component types:

| Component Type | Fill (rgba) | Stroke |
|---------------|-------------|--------|
| Frontend | `rgba(8, 51, 68, 0.4)` | `#22d3ee` (cyan-400) |
| Backend | `rgba(6, 78, 59, 0.4)` | `#34d399` (emerald-400) |
| Database | `rgba(76, 29, 149, 0.4)` | `#a78bfa` (violet-400) |
| AWS/Cloud | `rgba(120, 53, 15, 0.3)` | `#fbbf24` (amber-400) |
| Security | `rgba(136, 19, 55, 0.4)` | `#fb7185` (rose-400) |
| Message Bus | `rgba(251, 146, 60, 0.3)` | `#fb923c` (orange-400) |
| External/Generic | `rgba(30, 41, 59, 0.5)` | `#94a3b8` (slate-400) |

### Typography

Use JetBrains Mono for all text (monospace, technical aesthetic):
```html
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet">
```

Font sizes: 12px for component names, 9px for sublabels, 8px for annotations, 7px for tiny labels.

### Visual Elements

**Background:** `#020617` (slate-950) with subtle grid pattern:
```svg
<pattern id="grid" width="40" height="40" patternUnits="userSpaceOnUse">
  <path d="M 40 0 L 0 0 0 40" fill="none" stroke="#1e293b" stroke-width="0.5"/>
</pattern>
```

**Component boxes:** Rounded rectangles (`rx="6"`) with 1.5px stroke, semi-transparent fills.

**Security groups:** Dashed stroke (`stroke-dasharray="4,4"`), transparent fill, rose color.

**Region boundaries:** Larger dashed stroke (`stroke-dasharray="8,4"`), amber color, `rx="12"`.

**Arrows:** Use SVG marker for arrowheads:
```svg
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
  <polygon points="0 0, 10 3.5, 0 7" fill="#64748b" />
</marker>
```

**Arrow z-order:** Draw connection arrows early in the SVG (after the background grid) so they render behind component boxes. SVG elements are painted in document order, so arrows drawn first will appear behind shapes drawn later.

**Masking arrows behind transparent fills:** Since component boxes use semi-transparent fills (`rgba(..., 0.4)`), arrows behind them will show through. To fully mask arrows, draw an opaque background rect (e.g., `fill="#0f172a"`) at the same position before drawing the semi-transparent styled rect on top:
```svg
<!-- Opaque background to mask arrows -->
<rect x="X" y="Y" width="W" height="H" rx="6" fill="#0f172a"/>
<!-- Styled component on top -->
<rect x="X" y="Y" width="W" height="H" rx="6" fill="rgba(76, 29, 149, 0.4)" stroke="#a78bfa" stroke-width="1.5"/>
```

**Auth/security flows:** Dashed lines in rose color (`#fb7185`).

**Message buses / Event buses:** Small connector elements between services. Use orange color (`#fb923c` stroke, `rgba(251, 146, 60, 0.3)` fill):
```svg
<rect x="X" y="Y" width="120" height="20" rx="4" fill="rgba(251, 146, 60, 0.3)" stroke="#fb923c" stroke-width="1"/>
<text x="CENTER_X" y="Y+14" fill="#fb923c" font-size="7" text-anchor="middle">Kafka / RabbitMQ</text>
```

### Spacing Rules

**CRITICAL:** When stacking components vertically, ensure proper spacing to avoid overlaps:

- **Standard component height:** 60px for services, 80-120px for larger components
- **Minimum vertical gap between components:** 40px
- **Inline connectors (message buses):** Place IN the gap between components, not overlapping

**Example vertical layout:**
```
Component A: y=70,  height=60  → ends at y=130
Gap:         y=130 to y=170   → 40px gap, place bus at y=140 (20px tall)
Component B: y=170, height=60  → ends at y=230
```

**Wrong:** Placing a message bus at y=160 when Component B starts at y=170 (causes overlap)
**Right:** Placing a message bus at y=140, centered in the 40px gap (y=130 to y=170)

### Legend Placement

**CRITICAL:** Place legends OUTSIDE all boundary boxes (region boundaries, cluster boundaries, security groups).

- Calculate where all boundaries end (y position + height)
- Place legend at least 20px below the lowest boundary
- Expand SVG viewBox height if needed to accommodate

**Example:**
```
Kubernetes Cluster: y=30, height=460 → ends at y=490
Legend should start at: y=510 or below
SVG viewBox height: at least 560 to fit legend
```

**Wrong:** Legend at y=470 inside a cluster boundary that ends at y=490
**Right:** Legend at y=510, below the cluster boundary, with viewBox height extended

### Layout Structure

1. **Header** - Title with pulsing dot indicator, subtitle, and export toolbar
2. **Main SVG diagram** - Contained in rounded border card
3. **Summary cards** - Grid of 3 cards below diagram with key details
4. **Footer** - Minimal metadata line

### Export Toolbar (built-in)

Every diagram ships with a single unobtrusive `⋯` toggle in the header. Click it to reveal three buttons — 📋 Copy (high-DPI PNG to clipboard, scale: 2), 🖼️ PNG (high-DPI PNG download), 📄 PDF (PNG embedded in a one-page PDF via jsPDF). The toolbar collapses back to the icon by default so it doesn't clutter the diagram. All three formats use the same html2canvas capture (with the toolbar excluded and 32px padding around the content), so PDF preserves the dark theme without going through the browser's print dialog.

When generating a new diagram, keep these intact in the template:
- The two CDN scripts in `<head>` (pinned versions, with Subresource Integrity hashes and `crossorigin="anonymous"`):
  - `https://cdn.jsdelivr.net/npm/[email protected]/dist/html2canvas.min.js` — `integrity="sha384-ZZ1pncU3bQe8y31yfZdMFdSpttDoPmOZg2wguVK9almUodir1PghgT0eY7Mrty8H"`
  - `https://cdn.jsdelivr.net/npm/[email protected]/dist/jspdf.umd.min.js` — `integrity="sha384-en/ztfPSRkGfME4KIm05joYXynqzUgbsG5nMrj/xEFAHXkeZfO3yMK8QQ+mP7p1/"`
  - SRI ensures generated diagrams are tamper-resistant against CDN compromise. Do not modify the hashes; if the version is bumped, the new hash must be computed fresh.
- `id="report-container"` on the outermost `.container` div (this is what gets captured)
- `.toolbar` markup with `.toolbar-actions` (collapsed by default) and `.toolbar-toggle` (the `⋯` button)
- `.toolbar` CSS + `@media print { .toolbar { display: none !important; } }`
- `copyAsImage()`, `downloadPNG()`, and `downloadPDF()` script before `</body>`, all using `getBoundingClientRect()` + `html2canvas(document.body, { x, y, width, height, ignoreElements })` to capture a precise rect with breathing room and no toolbar

Caveats: clipboard API needs a user gesture and a secure context (https/file/localhost). SVG `<foreignObject>` renders inconsistently in html2canvas — stick to plain `<svg>` shapes and `<text>`. Bump `scale: 2` to `3` or `4` for higher-res output.

### Component Box Pattern

```svg
<rect x="X" y="Y" width="W" height="H" rx="6" fill="FILL_COLOR" stroke="STROKE_COLOR" stroke-width="1.5"/>
<text x="CENTER_X" y="Y+20" fill="white" font-size="11" font-weight="600" text-anchor="middle">LABEL</text>
<text x="CENTER_X" y="Y+36" fill="#94a3b8" font-size="9" text-anchor="middle">sublabel</text>
```

### Info Card Pattern

```html
<div class="card">
  <div class="card-header">
    <div class="card-dot COLOR"></div>
    <h3>Title</h3>
  </div>
  <ul>
    <li>• Item one</li>
    <li>• Item two</li>
  </ul>
</div>
```

## Template

Copy and customize the template at `resources/template.html`. Key customization points:

1. Update the `<title>` and header text
2. Modify SVG viewBox dimensions if needed (default: `1000 x 680`)
3. Add/remove/reposition component boxes
4. Draw connection arrows between components
5. Update the three summary cards
6. Update footer metadata

## Output

Always produce a single self-contained `.html` file with:
- Embedded CSS (no external stylesheets except Google Fonts)
- Inline SVG (no external images)
- No JavaScript required (pure CSS animations)

The file should render correctly when opened directly in any modern browser. The export toolbar uses two CDN scripts (html2canvas and jsPDF) — no other JavaScript dependencies.

© Cocoon-AI · MIT · Cocoon-AI/architecture-diagram-generator

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor