---
name: technical-svg-diagrams
description: Generate clean, minimal technical SVG diagrams in a consistent Cloudflare-inspired style. Use when creating architecture diagrams, flow diagrams, or component diagrams for blog posts and documentation.
---
Generate technical SVG diagrams with consistent styling for blog posts and documentation. All diagrams use a unified visual language: grid backgrounds, monospace fonts, muted colors with semantic accents, and clean geometric shapes.
1. Identify diagram type needed (architecture, flow, or component)
2. Read `references/svg-patterns.md` for templates and color palette
3. Generate SVG using the established patterns
4. Save to target directory with descriptive filename
## Color Palette
| Purpose | Color | Hex |
|---------|-------|-----|
| Background | Light gray | #fafafa |
| Grid lines | Subtle gray | #e5e5e5 |
| Primary text | Dark gray | #333 |
| Secondary text | Medium gray | #666 |
| Muted text | Light gray | #999 |
| Borders/arrows | Gray | #ccc |
| Success/positive | Green | #27ae60 |
| Error/negative | Red | #e74c3c |
| Primary accent | Blue | #3498db |
| Warning/sandbox | Orange | #f39c12 |
| Process step | Purple | #9b59b6 |
## Typography
- **Font family:** `monospace` for all text
- **Title:** 14px bold, #333
- **Subtitle/tag:** 12px, #888, in brackets `[ LIKE_THIS ]`
- **Labels:** 10-11px, color matches element
- **Notes:** 7-8px, #999
## Common Elements
**Grid background:**
```xml
```
**Arrow marker:**
```xml
```
**Node (circle with inner dot):**
```xml
```
**Box container:**
```xml
```
**Dashed container (sandbox/isolation):**
```xml
```
**Label box:**
```xml
LABEL_NAME
```
## Architecture Diagrams
Horizontal left-to-right flow showing system components.
**Use for:** Before/after comparisons, system overviews, data flow
**Structure:**
- Title + tag at top left
- Components flow left to right
- Arrows connect components
- Bottom note summarizes key point
**Dimensions:** 800x350 to 800x400
## Flow Diagrams
Vertical top-to-bottom showing process steps.
**Use for:** Execution flows, request lifecycles, step-by-step processes
**Structure:**
- Title + tag at top
- Dashed vertical guide line
- Steps connected by arrows with polygon heads
- Decision diamonds for branching
- Ellipses for start/end states
**Dimensions:** 600x700 (adjust height for steps)
## Component Diagrams
Focused view of a single component's internals.
**Use for:** Showing internal structure, nested elements, detailed breakdowns
**Structure:**
- Outer container box
- Inner elements with semantic colors
- Labels above or below containers
## Creating a Diagram
1. **Determine type and dimensions**
- Architecture: 800x350-400, horizontal
- Flow: 600x700+, vertical
- Component: varies by content
2. **Set up SVG structure**
```xml
```
3. **Add components using patterns from references/svg-patterns.md**
4. **Connect with arrows**
- Solid lines for primary flow
- Dashed lines for secondary/return flow
- Use opacity="0.5" for response arrows
5. **Add labels**
- Component names in SCREAMING_SNAKE_CASE
- Action labels in lowercase_snake_case
- Use text-anchor="middle" for centered text
6. **Save with descriptive filename**
- `diagram-before.svg`, `diagram-after.svg`
- `diagram-flow.svg`, `diagram-architecture.svg`
Diagram is complete when:
- [ ] Uses consistent color palette
- [ ] All text is monospace
- [ ] Grid background applied
- [ ] Title with bracketed tag present
- [ ] Components properly connected with arrows
- [ ] Labels are clear and properly positioned
- [ ] Bottom summary note included
- [ ] SVG is valid and renders correctly
## Convert SVG to WebP
After creating the SVG, convert to WebP for universal compatibility.
**Using uv (cross-platform, recommended):**
```bash
uvx --from cairosvg cairosvg diagram.svg -o diagram.png --output-width 1600
uvx --with pillow python -c "from PIL import Image; Image.open('diagram.png').save('diagram.webp', 'WEBP', lossless=True)"
rm diagram.png
```
Note: `lossless=True` is best for diagrams - smaller than lossy AND perfect quality.
**Alternative tools (if available):**
```bash
# ImageMagick
convert -background none -density 150 diagram.svg diagram.webp
# librsvg + cwebp
rsvg-convert -w 1600 diagram.svg -o diagram.png && cwebp diagram.png -o diagram.webp
```
**Platform notes:**
- macOS: `brew install cairo` if cairosvg fails
- Linux: `apt install libcairo2-dev` if needed
- Windows: uv works natively; or use WSL for other tools