D2 Diagram Workflow Setup
Use this workflow when a diagram should be versioned as text, rendered cleanly in GitHub via an image embed, and optionally polished for platform.brainforge.ai.
What This Adds
The repo includes a root script at scripts/render-d2-diagrams.mjs with package scripts:
npm run diagrams:render -- <path-or-dir>
npm run diagrams:preview -- <path-or-dir>
npm run diagrams:publish -- <path-or-dir>Install
Install the required CLI:
brew install d2For PNG preview renders used in visual inspection:
brew install librsvgVerify:
which d2
which rsvg-convertPreview bitmaps are local inspection artifacts and should not be committed. The repo ignores *.render.png.
Repo Convention
Use three artifact levels when needed:
topic.d2— editable sourcetopic.generated.svg— direct D2 CLI outputtopic.svg— optional polished/published SVG when Brainforge branding or manual layout refinement is needed
For quick internal diagrams, the generated SVG is often enough.
For polished external or long-lived diagrams, keep the generated SVG as the raw baseline and treat the published SVG as the branded artifact.
Commands
Render generated SVGs:
npm run diagrams:render -- knowledge/engineering/diagram-examples/system-flow.d2Render generated SVGs and PNG previews for visual inspection:
npm run diagrams:preview -- knowledge/engineering/diagram-examples/system-flow.d2Publish directly to topic.svg:
npm run diagrams:publish -- knowledge/engineering/diagram-examples/system-flow.d2Render every D2 file in the repo:
npm run diagrams:render -- --allReview Loop
For important diagrams:
- Render the D2 file to
topic.generated.svg - Generate a PNG preview with
npm run diagrams:preview -- ... - Visually inspect the bitmap for spacing, label collisions, and balance
- If needed, create or refine
topic.svgas the branded published version
Branding Guidance
Follow the Brainforge diagram rule and brand sources:
.cursor/rules/brainforge-diagram-standards.mdcknowledge/standards/03-knowledge/brand-style-guide.mdapps/platform/src/lib/analytics/decks/themes/brainforge.tsapps/marketing-site/src/styles/tokens.css
Example
See:
knowledge/engineering/diagram-examples/system-flow.d2knowledge/engineering/diagram-examples/system-flow.generated.svgknowledge/engineering/diagram-examples/system-flow-d2.svgknowledge/engineering/diagram-templates/