All-my-ai-needs fireworks-tech-graph
git clone https://github.com/codingSamss/all-my-ai-needs
T=$(mktemp -d) && git clone --depth=1 https://github.com/codingSamss/all-my-ai-needs "$T" && mkdir -p ~/.claude/skills && cp -r "$T/platforms/codex/skills/fireworks-tech-graph" ~/.claude/skills/codingsamss-all-my-ai-needs-fireworks-tech-graph-698929 && rm -rf "$T"
platforms/codex/skills/fireworks-tech-graph/SKILL.mdFireworks Tech Graph
Generate production-quality SVG technical diagrams exported as PNG via
rsvg-convert.
Routing Rule (with image-gen)
- Use this skill when the request is a technical diagram that needs structured/editable SVG (architecture, sequence, swimlane, ER, state-machine, data flow).
- Use
when the request is artistic, illustrative, photorealistic, or non-structured image generation.image-gen
Install Source
Install this skill from GitHub:
npx skills add yizhiyanhua-ai/fireworks-tech-graph
Public package page:
https://www.npmjs.com/package/@yizhiyanhua-ai/fireworks-tech-graph
Do not pass
@yizhiyanhua-ai/fireworks-tech-graph directly to skills add, because the CLI expects a GitHub or local repository source.
Update command:
npx skills add yizhiyanhua-ai/fireworks-tech-graph --force -g -y
Helper Scripts (Recommended)
Four helper scripts in
scripts/ directory provide stable SVG generation and validation:
1. generate-diagram.sh
- Validate SVG + export PNG
generate-diagram.sh./scripts/generate-diagram.sh -t architecture -s 1 -o ./output/arch.svg
- Validates an existing SVG file
- Exports PNG after validation
- Example:
./scripts/generate-diagram.sh -t architecture -s 1 -o ./output/arch.svg
2. generate-from-template.py
- Create starter SVG from template
generate-from-template.pypython3 ./scripts/generate-from-template.py architecture ./output/arch.svg '{"title":"My Diagram","nodes":[],"arrows":[]}'
- Loads a built-in SVG template
- Renders nodes, arrows, and legend entries from JSON input
- Escapes text content to keep output XML-valid
3. validate-svg.sh
- Validate SVG syntax
validate-svg.sh./scripts/validate-svg.sh <svg-file>
- Checks XML syntax
- Verifies tag balance
- Validates marker references
- Checks attribute completeness
- Validates path data
4. test-all-styles.sh
- Batch test all styles
test-all-styles.sh./scripts/test-all-styles.sh
- Tests multiple diagram sizes
- Validates all generated SVGs
- Generates test report
When to use scripts:
- Use scripts when generating complex SVGs to avoid syntax errors
- Scripts provide automatic validation and error reporting
- Recommended for production diagrams
When to generate SVG directly:
- Simple diagrams with few elements
- Quick prototypes
- When you need full control over SVG structure
Workflow (Always Follow This Order)
- Classify the diagram type (see Diagram Types below)
- Extract structure — identify layers, nodes, edges, flows, and semantic groups from user description
- Plan layout — apply the layout rules for the diagram type
- Load style reference — always load
unless user specifies another; load the matchingreferences/style-1-flat-icon.md
for exact color tokens and SVG patternsreferences/style-N.md - Map nodes to shapes — use Shape Vocabulary below
- Check icon needs — load
for known productsreferences/icons.md - Write SVG with adaptive strategy (see SVG Generation Strategy below)
- Validate: Run
to check syntaxrsvg-convert file.svg -o /dev/null 2>&1 - Export PNG:
rsvg-convert -w 1920 file.svg -o file.png - Report the generated file paths
Diagram Types & Layout Rules
Architecture Diagram
Nodes = services/components. Group into horizontal layers (top→bottom or left→right).
- Typical layers: Client → Gateway/LB → Services → Data/Storage
- Use
dashed containers to group related services in the same layer<rect> - Arrow direction follows data/request flow
- ViewBox:
standard,0 0 960 600
for tall stacks0 0 960 800
Data Flow Diagram
Emphasizes what data moves where. Focus on data transformation.
- Label every arrow with the data type (e.g., "embeddings", "query", "context")
- Use wider arrows (
) for primary data pathsstroke-width: 2.5 - Dashed arrows for control/trigger flows
- Color arrows by data category (not just Agent/RAG — use semantics)
Flowchart / Process Flow
Sequential decision/process steps.
- Top-to-bottom preferred; left-to-right for wide flows
- Diamond shapes for decisions, rounded rects for processes, parallelograms for I/O
- Keep node labels short (≤3 words); put detail in sub-labels
- Align nodes on a grid: x positions snap to 120px intervals, y to 80px
Agent Architecture Diagram
Shows how an AI agent reasons, uses tools, and manages memory. Key conceptual layers to always consider:
- Input layer: User, query, trigger
- Agent core: LLM, reasoning loop, planner
- Memory layer: Short-term (context window), Long-term (vector/graph DB), Episodic
- Tool layer: Tool calls, APIs, search, code execution
- Output layer: Response, action, side-effects Use cyclic arrows (loop arcs) to show iterative reasoning. Separate memory types visually.
Memory Architecture Diagram (Mem0, MemGPT-style)
Specialized agent diagram focused on memory operations.
- Show memory write path and read path separately (different arrow colors)
- Memory tiers: Working Memory → Short-term → Long-term → External Store
- Label memory operations:
,store()
,retrieve()
,forget()consolidate() - Use stacked rects or layered cylinders for storage tiers
Sequence Diagram
Time-ordered message exchanges between participants.
- Participants as vertical lifelines (top labels + vertical dashed lines)
- Messages as horizontal arrows between lifelines, top-to-bottom time order
- Activation boxes (thin filled rects on lifeline) show active processing
- Group with
loop/alt frames with label in top-left corner<rect> - ViewBox height = 80 + (num_messages × 50)
Comparison / Feature Matrix
Side-by-side comparison of approaches, systems, or components.
- Column headers = systems, row headers = attributes
- Row height: 40px; column width: min 120px; header row height: 50px
- Checked cell: tinted background (e.g.
) +#dcfce7
checkmark; unsupported:✓
fill#f9fafb - Alternating row fills (
/#f9fafb
) for readability#ffffff - Max readable columns: 5; beyond that, split into two diagrams
Timeline / Gantt
Horizontal time axis showing durations, phases, and milestones.
- X-axis = time (weeks/months/quarters); Y-axis = items/tasks/phases
- Bars: rounded rects, colored by category, labeled inside or beside
- Milestone markers: diamond or filled circle at specific x position with label above
- ViewBox:
typical; wider for many time periods:0 0 960 4000 0 1200 400
Mind Map / Concept Map
Radial layout from central concept.
- Central node at
cx=480, cy=280 - First-level branches: evenly distributed around center (360/N degrees)
- Second-level branches: branch off first-level at 30-45° offset
- Use curved
with cubic bezier for branches, not straight lines<path>
Class Diagram (UML)
Static structure showing classes, attributes, methods, and relationships.
- Class box: 3-compartment rect (name / attributes / methods), min width 160px
- Top compartment: class name, bold, centered (abstract = italic)
- Middle: attributes with visibility (
public,+
private,-
protected)# - Bottom: method signatures, same visibility notation
- Relationships:
- Inheritance (extends): solid line + hollow triangle arrowhead, child → parent
- Implementation (interface): dashed line + hollow triangle, class → interface
- Association: solid line + open arrowhead, label with multiplicity (1, 0.., 1..)
- Aggregation: solid line + hollow diamond on container side
- Composition: solid line + filled diamond on container side
- Dependency: dashed line + open arrowhead
- Interface:
stereotype above name, or circle/lollipop notation<<interface>> - Enum: compartment rect with
stereotype, values in bottom<<enumeration>> - Layout: parent classes top, children below; interfaces to the left/right of implementors
- ViewBox:
standard;0 0 960 600
for deep hierarchies0 0 960 800
Use Case Diagram (UML)
System functionality from user perspective.
- Actor: stick figure (circle head + body line) placed outside system boundary
- Label below figure, 13-14px
- Primary actors on left, secondary/supporting on right
- Use case: ellipse with label centered inside, min 140×60px
- Keep names verb phrases: "Create Order", "Process Payment"
- System boundary: large rect with dashed border + system name in top-left
- Relationships:
- Include: dashed arrow
from base to included use case<<include>> - Extend: dashed arrow
from extension to base use case<<extend>> - Generalization: solid line + hollow triangle (specialized → general)
- Include: dashed arrow
- Layout: system boundary centered, actors outside, use cases inside
- ViewBox:
standard0 0 960 600
State Machine Diagram (UML)
Lifecycle states and transitions of an entity.
- State: rounded rect with state name, min 120×50px
- Internal activities: small text
,entry/ action
,exit/ actiondo/ activity - Initial state: filled black circle (r=8), one outgoing arrow
- Final state: filled circle (r=8) inside hollow circle (r=12)
- Choice: small hollow diamond, guard labels on outgoing arrows
[condition]
- Internal activities: small text
- Transition: arrow with optional label
event [guard] / action- Guard conditions in square brackets
- Actions after
/
- Composite/nested state: larger rect containing sub-states, with name tab
- Fork/join: thick horizontal or vertical black bar (synchronization)
- Layout: initial state top-left, final state bottom-right, flow top-to-bottom
- ViewBox:
standard0 0 960 600
ER Diagram (Entity-Relationship)
Database schema and data relationships.
- Entity: rect with entity name in header (bold), attributes below
- Primary key attribute: underlined
- Foreign key: italic or marked with (FK)
- Min width: 160px; attribute font-size: 12px
- Relationship: diamond shape on connecting line
- Label inside diamond: "has", "belongs to", "enrolls in"
- Cardinality labels near entity:
,1
,N
,0..1
,0..*1..*
- Weak entity: double-bordered rect with double diamond relationship
- Associative entity: diamond + rect hybrid (rect with diamond inside)
- Line style: solid for identifying relationships, dashed for non-identifying
- Layout: entities in 2-3 rows, relationships between related entities
- ViewBox:
standard; wider0 0 960 600
for many entities0 0 1200 600
Network Topology
Physical or logical network infrastructure.
- Devices: icon-like rects or rounded rects
- Router: circle with cross arrows
- Switch: rect with arrow grid
- Server: stacked rect (rack icon)
- Firewall: brick-pattern rect or shield shape
- Load Balancer: horizontal split rect with arrows
- Cloud: cloud path (overlapping arcs)
- Connections: lines between device centers
- Ethernet/wired: solid line, label bandwidth
- Wireless: dashed line with WiFi symbol
- VPN: dashed line with lock icon
- Subnets/Zones: dashed rect containers with zone label (DMZ, Internal, External)
- Labels: device hostname + IP below, 12-13px
- Layout: tiered top-to-bottom (Internet → Edge → Core → Access → Endpoints)
- ViewBox:
standard0 0 960 600
UML Coverage Map
Full mapping of UML 14 diagram types to supported diagram types:
| UML Diagram | Supported As | Notes |
|---|---|---|
| Class | Class Diagram | Full UML notation |
| Component | Architecture Diagram | Use colored fills per component type |
| Deployment | Architecture Diagram | Add node/instance labels |
| Package | Architecture Diagram | Use dashed grouping containers |
| Composite Structure | Architecture Diagram | Nested rects within components |
| Object | Class Diagram | Instance boxes with underlined name |
| Use Case | Use Case Diagram | Full actor/ellipse/relationship |
| Activity | Flowchart / Process Flow | Add fork/join bars |
| State Machine | State Machine Diagram | Full UML notation |
| Sequence | Sequence Diagram | Add alt/opt/loop frames |
| Communication | — | Approximate with Sequence (swap axes) |
| Timing | Timeline | Adapt time axis |
| Interaction Overview | Flowchart | Combine activity + sequence fragments |
| ER Diagram | ER Diagram | Chen/Crow's foot notation |
Shape Vocabulary
Map semantic concepts to consistent shapes across all diagram types:
| Concept | Shape | Notes |
|---|---|---|
| User / Human | Circle + body path | Stick figure or avatar |
| LLM / Model | Rounded rect with brain/spark icon or gradient fill | Use accent color |
| Agent / Orchestrator | Hexagon or rounded rect with double border | Signals "active controller" |
| Memory (short-term) | Rounded rect, dashed border | Ephemeral = dashed |
| Memory (long-term) | Cylinder (database shape) | Persistent = solid cylinder |
| Vector Store | Cylinder with grid lines inside | Add 3 horizontal lines |
| Graph DB | Circle cluster (3 overlapping circles) | |
| Tool / Function | Gear-like rect or rect with wrench icon | |
| API / Gateway | Hexagon (single border) | |
| Queue / Stream | Horizontal tube (pipe shape) | |
| File / Document | Folded-corner rect | |
| Browser / UI | Rect with 3-dot titlebar | |
| Decision | Diamond | Flowcharts only |
| Process / Step | Rounded rect | Standard box |
| External Service | Rect with cloud icon or dashed border | |
| Data / Artifact | Parallelogram | I/O in flowcharts |
Arrow Semantics
Always assign arrow meaning, not just color:
| Flow Type | Color | Stroke | Dash | Meaning |
|---|---|---|---|---|
| Primary data flow | blue | 2px solid | none | Main request/response path |
| Control / trigger | orange | 1.5px solid | none | One system triggering another |
| Memory read | green | 1.5px solid | none | Retrieval from store |
| Memory write | green | 1.5px | | Write/store operation |
| Async / event | gray | 1.5px | | Non-blocking, event-driven |
| Embedding / transform | purple | 1px solid | none | Data transformation |
| Feedback / loop | purple | 1.5px curved | none | Iterative reasoning loop |
Always include a legend when 2+ arrow types are used.
Layout Rules & Validation
Spacing:
- Same-layer nodes: 80px horizontal, 120px vertical between layers
- Canvas margins: 40px minimum, 60px between node edges
- Snap to 8px grid: horizontal 120px intervals, vertical 120px intervals
Arrow Labels (CRITICAL):
- MUST have background rect:
with 4px horizontal, 2px vertical padding<rect fill="canvas_bg" opacity="0.95"/> - Place mid-arrow, ≤3 words, stagger by 15-20px when multiple arrows converge
- Maintain 10px safety distance from nodes
Arrow Routing:
- Prefer orthogonal (L-shaped) paths to minimize crossings
- Anchor arrows on component edges, not geometric centers
- Route around dense node clusters, use different y-offsets for parallel arrows
- Jump-over arcs (5px radius) for unavoidable crossings
Line Overlap Prevention (CRITICAL - most common bug on Codex): When two arrows must cross each other, ALWAYS use jump-over arcs to prevent visual overlap:
- Crossing horizontal arrows: add a small semicircle arc (radius 5px, stroke same color as arrow, fill none) that "jumps over" the other line
- SVG pattern for jump-over: use a white/matching-background arc on the lower layer, then draw the upper arc on top
- Multiple crossings: stagger arc radii (5px, 7px, 9px) so arcs don't overlap each other
- Never let two arrows' straight-line segments cross without a jump-over arc
Validation Checklist (run before finalizing):
- Arrow-Component Collision: Arrows MUST NOT pass through component interiors (route around with orthogonal paths)
- Text Overflow: All text MUST fit with 8px padding (estimate:
)text.length × 7px ≤ shape_width - 16px - Arrow-Text Alignment: Arrow endpoints MUST connect to shape edges (not floating); all arrow labels MUST have background rects
- Container Discipline: Prefer arrows entering and leaving section containers through open gaps between components, not through inner component bodies
SVG Technical Rules
- ViewBox:
default;0 0 960 600
tall;0 0 960 800
wide0 0 1200 600 - Fonts: embed via
— no external<style>font-family: ...</style>
(breaks rsvg-convert)@import
: arrow markers, gradients, filters, clip paths<defs>- Text: minimum 12px, prefer 13-14px labels, 11px sub-labels, 16-18px titles
- All arrows:
with<marker>
, sizedmarkerEndmarkerWidth="10" markerHeight="7" - Drop shadows:
in<feDropShadow>
, apply sparingly (key nodes only)<filter> - Curved paths: use
cubic bezier for loops/feedback arrowsM x1,y1 C cx1,cy1 cx2,cy2 x2,y2 - Clip content: use
if text might overflow a node box<clipPath>
SVG Generation & Error Prevention
MANDATORY: Python List Method (ALWAYS use this):
python3 << 'EOF' lines = [] lines.append('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 700">') lines.append(' <defs>') # ... each line separately lines.append('</svg>') with open('/path/to/output.svg', 'w') as f: f.write('\n'.join(lines)) print("SVG generated successfully") EOF
Why mandatory: Prevents character truncation, typos, and syntax errors. Each line is independent and easy to verify.
Pre-Tool-Call Checklist (CRITICAL - use EVERY time):
- ✅ Can I write out the COMPLETE command/content right now?
- ✅ Do I have ALL required parameters ready?
- ✅ Have I checked for syntax errors in my prepared content?
If ANY answer is NO: STOP. Do NOT call the tool. Prepare the content first.
Error Recovery Protocol:
- First error: Analyze root cause, apply targeted fix
- Second error: Switch method entirely (Python list → chunked generation)
- Third error: STOP and report to user - do NOT loop endlessly
- Never: Retry the same failing command or call tools with empty parameters
Validation (run after generation):
rsvg-convert file.svg -o /tmp/test.png 2>&1 && echo "✓ Valid" && rm /tmp/test.png
If using
:generate-from-template.py
- Prefer
/source
node ids in arrow JSON so the generator can snap to node edgestarget - Keep
as hints or fallback coordinates, not the main routing primitivex1,y1,x2,y2 - Let the generator choose orthogonal routes; avoid hardcoding center-to-center straight lines unless the path is guaranteed clear
Common Syntax Errors to Avoid:
- ❌
→ ✅yt-anchory="60" text-anchor="middle" - ❌
(missing y) → ✅x="390x="390" y="250" - ❌
→ ✅fill=#ffffill="#ffffff" - ❌
→ ✅marker-end=marker-end="url(#arrow)" - ❌
→ ✅L 29450L 290,220 - ❌ Missing
at end</svg>
Output
- Default:
and./[derived-name].svg
in current directory./[derived-name].png - Custom: user specifies path with
or--output /path/输出到 /path/ - PNG export:
(1920px = 2x retina)rsvg-convert -w 1920 file.svg -o file.png
Styles
| # | Name | Background | Best For |
|---|---|---|---|
| 1 | Flat Icon (default) | White | Blogs, docs, presentations |
| 2 | Dark Terminal | | GitHub, dev articles |
| 3 | Blueprint | | Architecture docs |
| 4 | Notion Clean | White, minimal | Notionnce |
| 5 | Glassmorphism | Dark gradient | Product sites, keynotes |
| 6 | Claude Official | Warm cream | Anthropic-style diagrams |
| 7 | OpenAI Official | Pure white | OpenAI-style diagrams |
Load
references/style-N.md for exact color tokens and SVG patterns.
Style Selection
Default: Style 1 (Flat Icon) for most diagrams. Load
references/style-diagram-matrix.md for detailed style-to-diagram-type recommendations.
These patterns appear frequently — internalize them:
RAG Pipeline: Query → Embed → VectorSearch → Retrieve → Augment → LLM → Response Agentic RAG: adds Agent loop with Tool use between Query and LLM Agentic Search: Query → Planner → [Search Tool / Calculator / Code] → Synthesizer → Response Mem0 / Memory Layer: Input → Memory Manager → [Write: VectorDB + GraphDB] / [Read: Retrieve+Rank] → Context Agent Memory Types: Sensory (raw input) → Working (context window) → Episodic (past interactions) → Semantic (facts) → Procedural (skills) Multi-Agent: Orchestrator → [SubAgent A / SubAgent B / SubAgent C] → Aggregator → Output Tool Call Flow: LLM → Tool Selector → Tool Execution → Result Parser → LLM (loop)