--- name: flowfile-svg-diagrams description: How to author, wire, and verify the hand-drawn brand SVG diagrams on the Flowfile docs site — the exact file contract (viewBox, role + aria-label, defs→style→content), the shipped palette and typography ladders with exact hex values, the reusable component library (node chips, preview tables, arrow markers, decision diamonds, storage substrates, greyed insets), the concept-vs-technical register split and the one warm exception, the dark-mode technique against the two page canvases, the labeled-placeholder pattern for screenshots, and the redraw lessons the maintainer has already enforced. Use when creating or editing any SVG under docs/assets/images/, when a docs page needs a new concept or architecture diagram, when replacing or adding an IMAGE-PLACEHOLDER, when a diagram reads badly in dark mode, or when asked to draw, redraw, or fix any docs illustration. --- # Flowfile docs SVG diagrams — authoring, wiring, verification ## When NOT to use this skill - **Screenshots, gifs, raster captures** — never create or edit those (`flowfile-docs-review` §1.11); ship a labeled placeholder (§8) and track the capture in `DOCS_IMAGE_TODO.md`. - Page prose, alt-text register rules, and fact-checking doctrine → `flowfile-docs-review` (this skill owns the image file; that one owns the page around it). - Site build mechanics beyond the §9 verification recipe → `flowfile-docs-and-writing`. ## 0. What these are Hand-authored, fully self-contained SVGs — no external refs (an SVG loaded via `![]()` cannot fetch anything), no icon fonts, no rasters, no drop shadows. Directories: | Directory | Register | Examples | |---|---|---| | `docs/assets/images/concepts/` | concept (persona / what-is pages) | `flow-assembly-line`, `analyst-loop`, `catalog-ecosystem-loop` | | `docs/assets/images/architecture/` + `guides/catalog/` | technical (for-developers pages) | `process-map`, `access-resolution`, `trigger-cascade` | | `docs/assets/images/nodes/` | app node glyphs (source material, don't restyle) | `filter.svg`, `input_data.svg`, one per node type | | `docs/assets/images/guides/sales_dashboard/` | labeled placeholders awaiting screenshots | `dashboard_overview.svg` | Healthy size is **5–17 KB**. The one 82 KB outlier (`concepts/positioning-spectrum.svg`) carries a ~44 KB base64 PNG of the logo in a 60×64 slot — a known anti-pattern, not a license. That file (and `recipe-to-flow`) also predates the house root-element pattern; **new files follow §2, not those two.** ## 1. Design doctrine — decide before drawing - **Color hierarchy is the message.** In the concept register, brand identity is carried by the **single gradient hero** and the cyan accent — supporting cards stay white with grey strokes even when they depict Flowfile-owned things; grey-vs-brand contrast is reserved for the argument (the old painful way vs the Flowfile way). In the technical register, Flowfile boxes take `#1D76D6` strokes and neighbors/bypasses go grey. - **One cyan path carries the eye** — the hero edge, the refresh loop, the publish arrow. A symmetric fan of same-meaning spokes counts as *one* path and may be all-cyan (`catalog-fan-out`); when the diagram also has a distinct action edge, that edge takes the cyan and the fan stays grey (`connection-store`, the rotate-credential arrow). Never two competing accents. - **Contrast of complexity sells the argument.** The "before/painful/many copies" side: small, muted, tangled. The Flowfile side: clean, gradient, single. Left→right reading. - **Label budget**: concept diagrams ship at **25–55 words** of visible text; technical diagrams run **~60–160** (`process-map` is the ceiling at ~160). Per element: 1–3-word bold title, ≤4-word grey subtitle, 1–3-word arrow labels. Fake data in preview tables is **dash lines, never words** (§5). - **Restraint.** Resist the fifth icon, the extra source logo, the second legend row. Every redraw in the history (§10) was a *removal*. - **Pick a composition pattern** from the shipped catalog rather than inventing one: | Pattern | Use when | Shipped example | |---|---|---| | Left-vs-right contrast | before/after, bad/good of the same job | `export-vs-publish`, `sheet-vs-flow`, `vlookup-to-join` | | Hub-and-spoke fan-out | one producer, N consumers — the spokes *are* the message | `catalog-fan-out`, `system-boundary` (undirected ring) | | Center hub with mirrored wings | one shared object referenced from two audience sides, plus one action accent | `connection-store` | | Loop (cycle with a return arrow) | a self-sustaining cycle (refresh, publish→consume→refresh) | `catalog-ecosystem-loop`, `analyst-loop` | | Layered bands / left→right pipeline | staged movement through processes or stations | `sync-architecture`, `process-map`, `trigger-cascade` | | Twin panels + shared center object | two equal representations of one thing | `code-canvas-duality` | | Stacked dashed panels (stack vs state) | runtime processes vs persistent volumes | `team-deployment-architecture` | | Vertical layers (router → services → storage) | what-calls-what above what-is-stored | `architecture-overview` | ## 2. The file contract Root element, exactly this shape — nothing more: ```xml ``` - **W:** 880–980 (typically 940) for concept diagrams; 940–1340 for technical (wider = denser). **H:** whatever the content needs (shipped range 330–900). **Never** set `width`, `height`, or `preserveAspectRatio`; no ``/``. - **`aria-label`** is one long declarative sentence that *argues the diagram* — entities, relationships, takeaway — mirroring the markdown alt text (§9). Not a description of shapes. - **Order:** `` (gradients, markers) → `