graphviz.causal_kg_style
Generate a Graphviz DOT causal knowledge graph per causal inference conventions
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-02
- Stars
- ★ 0
- Forks
- 1
01 前言 Front Matter
- model
- opus
- description
- Generate a Graphviz DOT causal knowledge graph per causal inference conventions
03 SKILL.md 正文
You are an expert in causal inference and graphical models
I will give you a description or an image and your task is to produce a Graphviz/DOT representation of that graph that follows the rules below exactly
The resulting graph should allow a knowledgeable reader to
- Distinguish causation from correlation at a glance
- Identify exogenous vs endogenous variables
- Identify latent vs observable variables
- Recognize interventions and counterfactuals
Use color to distinguish variable types consistently
Generate the DOT File
General Graph Rules
- Use Graphviz DOT syntax
- Use a directed graph (
digraph) - Set
rankdir=LRfor left-to-right causal flow - Use both
color(border) andfillcolor+style=filledto encode variable type (do not rely on color alone; keep shape conventions too)
Node Representation Rules
Variable Type Colors (Required)
Use these colors consistently for node borders/fills:
- Exogenous variable: color=#408AB0, fillcolor=#EAF3F8
- Endogenous variable: color=#62D4A4, fillcolor=#EAF9F3
- Target variable: color=#F8D476, fillcolor=#FFF6DA
- Latent (unobservable) variable: color=#183B4A, fillcolor=#E6EEF1
- Intervened variable (do(X)): color=#DE5470, fillcolor=#FBE6EC
- Counterfactual variable: color=#183B4A, fillcolor=#E6EEF1
Exogenous vs Endogenous vs Target
- Exogenous variable (no causal parents)
shape=ellipsepenwidth=2- Must be colored using the exogenous palette above
- Endogenous variable (has at least one causal parent)
shape=box,roundedpenwidth=1(default)- Must be colored using the endogenous palette above
- Target variable (no descendants; under study)
shape=boxpenwidth=2- Must be colored using the target palette above
Observable vs Unobservable (Latent) Variables
- Observable variable
style=filled,solid- Use the appropriate color palette for its type (exogenous/endogenous/target/etc.)
fontcolor=black
- Unobservable / latent variable
style="filled,dashed"- Must use the latent palette above (
color=gray40,fillcolor=gray90,fontcolor=gray40) - Keep the same shape rule based on exogenous/endogenous/target if known;
otherwise default to
shape=ellipse
Special Node Types
- Intervened variable (
do(X))shape=doublecircle- Label must be
do(X) style=filled,solid- Must use the intervened palette above
- Incoming causal edges to
Xmust be omitted
- Counterfactual variable
style="filled,dotted"- Must use the counterfactual palette above
- Label must include counterfactual context (e.g.,
Y | do(X=1))
Edge Representation Rules
Causation
- Direct causal effect
- Solid arrow (
->) style=soliddir=forward- Default
color=blackunless overridden by effect sign/strength
- Solid arrow (
- Uncertain or hypothesized causation
- Dotted arrow (
style=dotted) - Must include
label="?" - Use
color=gray30
- Dotted arrow (
Correlation / Association (Non-causal)
- Correlation without causal claim
- Dashed edge
- No arrowheads (
dir=none) - Use
constraint=false - Label with a statistical symbol
- Use
color=gray50
Effect Attributes (Optional)
- Positive effect
- Default arrowhead
- Label
"+","++","+++" - Use
color=darkgreen
- Negative effect
- Default arrowhead
- Label
"-","--","---" - Use
color=firebrick3
- Effect strength (by symbols in the label)
- Strong:
+++,--- - Weak:
+,-
- Strong:
Confounding and Common Causes
- Represent confounders explicitly
- Use a latent node with dashed gray styling (latent palette)
- Draw causal arrows from the confounder to each affected variable
- Do not use correlation edges to represent confounding
Layout and Structure
- Use subgraphs (clusters) when helpful
- Structural model vs observational associations
- Different time slices or mechanisms
- Ensure correlation edges do not affect node ranking (
constraint=false)
Save the File
- Save the output in a
causal_graph.dotfile
Output Requirements
- Output only valid Graphviz/DOT code without triple backticks
- Do not explain the code in natural language
- Follow all visual and semantic conventions above exactly
Render the Graph
- After the graph description is generated, generate an image with:
> dot -Tpng causal_graph.dot -o causal_graph.png > open causal_graph.png
Read the PNG File
- If an image was specified, read the PNG file
- If the generated PNG image is very different from the input image:
- Find the differences in terms of layout
- Apply changes to
causal_graph.dotto approximate the input image
Verification
- [ ] Confirm
causal_graph.dotis valid Graphviz DOT syntax - [ ] Confirm every node type uses the required color and shape rules
- [ ] Confirm the rendered
causal_graph.pngmatches the input image or description in layout and semantics
04 同仓库更多 Skills
tutorial_in_60_mins.propagate_docker_changes
Sync tutorial and class-project Docker files to match project_template
tutorial_in_60_mins.merge_markdown
Merge the content of a markdown file into a Jupyter notebook
tutorial_in_60_mins.format
Format a directory to follow the "Learn X in 60 Minutes" tutorial conventions
tutorial_in_60_mins.create
Create a tutorial directory for the Learn X in 60 Minutes conventions
todo.reorg_in_progress
Reorganize ai_task_queue.md so in-progress tasks, not-started tasks, and mislabeled topic headers sit under the right H1 stage
todo.reorg_headers
Reorganize ai_task_queue.md .md so every H2 topic matches ALL TOPICS and every H3 task sits under the right topic, keeping its H1 stage