.agents/skills/fireworks-tech-graph/references/svg-layout-best-practices.md
cx ± offset where offset = 0 for single arrow, ±30px for multiplecy ± offsetM x1,y1 L x2,y2 Q cx,cy x3,y3<!-- Bad: diagonal arrow crosses component -->
<path d="M 200,100 L 600,400"/>
<!-- Good: orthogonal routing around component -->
<path d="M 200,100 L 200,250 L 600,250 L 600,400"/>
<!-- Good: curved with safe control point -->
<path d="M 200,100 Q 400,200 600,400"/>
<!-- Control point (400,200) is 50px+ away from any component -->
Before finalizing SVG, check:
<!-- Render order (top to bot back to front): -->
1. Background rect
2. Grouping coners (dashed rects)
3. Arrow paths
4. Arrow label background rects
5. Components (boxes, cylinders, etc.)
6. Component text
7. Arrow label text
8. Legend
<feDropShadow dx="0" dy="2" stdDeviation="6" flood-color="#00000008"/>Before exporting PNG, verify:
rsvg-convert| Anti-Pattern | Fix |
|---|---|
| Arrow crosses component | Use orthogonal routingase control point distancelabel overlaps component |
| Components too close | Increase spacing to 80px minimum |
| Arrow connects to corner | Move connection point to edge midpoint offset |
| No z-index planning | Follow render order: arrows -> components -> text |