skills/flow-graph/SKILL.md
Generate animated GIF/WebM videos of graph visualizations from natural language descriptions
npx skillsauth add asgeirf/agent-skills flow-graphInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate graph visualizations rendered as GIF and WebM video files with animated traffic flowing along edges. You describe a process or graph in natural language, then this skill produces a video of the diagram.
Parse the user's description to identify:
Create a graph-data.json file. Default to static mode — define all nodes and edges upfront. The engine renders the complete graph immediately with animated traffic flowing along edges.
Static mode (default — use this unless asked for build-up animation):
{
"settings": {
"width": 1280, "height": 720,
"background": "#1a1a2e",
"duration": 5000,
"traffic": true
},
"nodes": [
{ "id": "a", "label": "Start", "position": [400, 50] },
{ "id": "b", "label": "Process", "position": [400, 200] },
{ "id": "c", "label": "End", "position": [400, 350] }
],
"edges": [
{ "id": "e1", "source": "a", "target": "b" },
{ "id": "e2", "source": "b", "target": "c" }
]
}
Step mode (advanced — only when user asks for build-up sequences):
{
"settings": {
"width": 1280, "height": 720,
"background": "#1a1a2e",
"animationDuration": 500,
"fitViewOnComplete": true
},
"steps": [
{ "type": "addNode", "node": { "id": "1", "label": "Start", "position": [200, 100] }, "delay": 600 },
{ "type": "addEdge", "edge": { "id": "e1-2", "source": "1", "target": "2", "animated": true }, "delay": 400 },
{ "type": "highlight", "ids": ["1"], "color": "#e94560", "delay": 800 },
{ "type": "fitView", "padding": 0.2, "delay": 500 },
{ "type": "wait", "delay": 1500 }
]
}
Step types: addNode, addEdge, highlight, moveNode, removeNode, removeEdge, updateStyle, fitView, zoom, pan, wait
See references/graph-schema.md for full details on both modes.
Write the graph JSON to a temporary file, e.g. /tmp/my-graph.json.
Install the skill's dependencies if not yet done:
cd <skill-dir> && npm install --prefer-offline --no-audit --no-fund
cd <skill-dir>/assets/flow-template && npm install --prefer-offline --no-audit --no-fund
npx playwright install chromium
Where <skill-dir> is the directory containing this SKILL.md file.
Run the recording script:
node <skill-dir>/scripts/record.mjs /tmp/my-graph.json ./output --format both
This will produce output.webm and output.gif in the current directory.
Top-down flowchart — Increment Y by ~150 per row, center X:
{ "id": "a", "label": "Step 1", "position": [400, 50] }
{ "id": "b", "label": "Step 2", "position": [400, 200] }
Left-to-right pipeline — Increment X by ~200, same Y:
{ "id": "src", "label": "Source", "position": [50, 150] }
{ "id": "dst", "label": "Dest", "position": [250, 150] }
Branching / decision — Fork at the decision node with different X offsets:
{ "id": "decide", "position": [400, 300] }
{ "id": "yes", "position": [250, 450] }
{ "id": "no", "position": [550, 450] }
node record.mjs <graph-data.json> <output-path> [options]
Options:
--format gif|webm|both Output format (default: both)
--width <number> Viewport width override
--height <number> Viewport height override
The script handles everything: copies the template to a temp directory, injects the graph data, starts a Vite dev server, records with Playwright, converts via ffmpeg, and cleans up.
duration to 4000-6000ms for a good looping clip"traffic": false in settings if you want a still diagramlabel to annotate relationshipsdelay: 400-800 for node/edge additions (fast enough to be engaging, slow enough to follow)highlight step after key nodes appear to draw attentionfitView + wait to show the complete graph for 1-2 secondsanimated: true on edges to show data flow directionborderRadius: "50%" for diamond/circle shapesbrew install ffmpegnpx playwright install chromiumdevelopment
Generate interactive graph visualizations in the browser from any data - codebases, infrastructure, relationships, knowledge maps
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.