graphviz.generate_legend
SkillDev toolsGenerate a Graphviz legend template for causal knowledge graphs with node types and edge styles
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the graphviz.generate_legend skill
What this skill tells your AI
The instructions your AI receives, as published by causify-ai/helpers in .claude/skills/graphviz.generate_legend/SKILL.md and read by ahel’s review.
Template Nodes
digraph WindTurbineCKG {
rankdir=LR;
splines=true;
nodesep=0.8;
ranksep=1.2;
bgcolor="white";
subgraph cluster_legend {
label="Legend: Node Types";
fontsize=11;
fontname="Helvetica";
color=gray70;
style="rounded,dashed";
bgcolor="white";
// Put every legend node on the SAME rank (same vertical alignment)
{ rank=same;
leg_exog; leg_op; leg_latent; leg_obs; leg_health; leg_out;
}
leg_exog [label="Exogenous /\nEnvironmental", shape=ellipse, style=filled, fontcolor=black, color=royalblue4, fillcolor=lightsteelblue1];
leg_op [label="Operational /\nMechanism", shape=box, style="rounded,filled,solid", fontcolor=black, color=darkgreen, fillcolor=palegreen1];
leg_latent [label="Latent /\nHidden State", shape=box, style="filled,dashed", fontcolor=gray40, color=gray40, fillcolor=gray90];
leg_obs [label="Observable\nSignal", shape=ellipse, style=filled, fontcolor=black, color=darkgreen, fillcolor=palegreen1];
leg_health [label="Health\nIndicator", shape=ellipse, style=filled, fontcolor=black, color=gray40, fillcolor=gray90];
leg_out [label="Outcome /\nTarget", shape=box, penwidth=2, style=filled, fontcolor=black, color=darkorange3, fillcolor=moccasin];
// Keep left-to-right ordering without changing ranks
leg_exog -> leg_op [style=invis, weight=10];
leg_op -> leg_latent [style=invis, weight=10];
leg_latent -> leg_obs [style=invis, weight=10];
leg_obs -> leg_health [style=invis, weight=10];
leg_health -> leg_out [style=invis, weight=10];
}
}
Edge Legend
digraph legend {
graph [rankdir=TB, nodesep=0.5, ranksep=0.7];
node [shape=point, width=0, height=0, margin=0];
edge [dir=forward];
// Row 1: Direct causation
{
rank=same;
a1 [label="", style=invis];
b1 [label="", style=invis];
t1 [shape=plaintext, style=solid, label="Direct causation", fontsize=16, fontname="Arial"];
a1 -> b1 [style=solid, color=black, penwidth=3, arrowsize=1.2, minlen=3];
b1 -> t1 [style=invis, minlen=1];
}
// Row 2: Uncertain/hypothesized causation
{
rank=same;
a2 [label="", style=invis];
b2 [label="", style=invis];
t2 [shape=plaintext, style=solid, label="Uncertain / hypothesized causation", fontsize=16, fontname="Arial"];
a2 -> b2 [style=dotted, color=black, penwidth=2, arrowsize=1.0, minlen=3];
b2 -> t2 [style=invis, minlen=1];
}
// Row 3: Correlation/association
{
rank=same;
a3 [label="", style=invis];
b3 [label="", style=invis];
t3 [shape=plaintext, style=solid, label="Correlation / association (non-causal)", fontsize=16, fontname="Arial"];
a3 -> b3 [style=dotted, color=gray50, penwidth=2, arrowhead=none, minlen=3];
b3 -> t3 [style=invis, minlen=1];
}
// Row 4: Positive effect
{
rank=same;
a4 [label="", style=invis];
b4 [label="", style=invis];
t4 [shape=plaintext, style=solid, label="Positive effect (+ / ++ / +++)", fontsize=16, fontname="Arial"];
a4 -> b4 [style=solid, color="#228B22", penwidth=3, arrowsize=1.2, minlen=3];
b4 -> t4 [style=invis, minlen=1];
}
// Row 5: Negative effect
{
rank=same;
a5 [label="", style=invis];
b5 [label="", style=invis];
t5 [shape=plaintext, style=solid, label="Negative effect (- / -- / ---)", fontsize=16, fontname="Arial"];
a5 -> b5 [style=solid, color="#DC143C", penwidth=3, arrowsize=1.2, minlen=3];
b5 -> t5 [style=invis, minlen=1];
}
// Row 6: Strength encoding - using <-> instead of Unicode
{
rank=same;
a6 [label="", style=invis];
b6 [label="", style=invis];
t6 [shape=plaintext, style=solid, label="Strength encoding (weak <-> strong)", fontsize=16, fontname="Arial"];
a6 -> b6 [style=solid, color="#228B22", penwidth=3, arrowsize=1.2, minlen=3];
b6 -> t6 [style=invis, minlen=1];
}
// Force vertical ordering and left alignment
a1 -> a2 -> a3 -> a4 -> a5 -> a6 [style=invis];
b1 -> b2 -> b3 -> b4 -> b5 -> b6 [style=invis];
}
Signals
- GitHub stars
- 145
- Forks
- 159
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
graphviz-generate-legend- Source
- github.com/causify-ai/helpers