Skip to content
Automation
Skill

/causal-inference

Production-grade Bayesian causal inference with PyMC, CausalPy, and DoWhy. Enforces DAG-first thinking, mandatory user checkpoints for assumptions, design-specific refutation, and defensible reporting with causal language guardrails. Trigger on: causal inference, causal effect

From plugin
auto-empirical-research-skills
3.3k200 skills146 agents
Install
$ npx -y skills add brycewang-stanford/Auto-Empirical-Research-Skills --skill causal-inference --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/causal-inference

Context preview

The summary Claude sees to decide when to auto-load this skill.

Production-grade Bayesian causal inference with PyMC, CausalPy, and DoWhy. Enforces DAG-first thinking, mandatory user checkpoints for assumptions, design-specific refutation, and defensible reporting with causal language guardrails. Trigger on: causal inference, causal effect

SKILL.md

causal-inference.SKILL.md
name: causal-inference
description: >
  Production-grade Bayesian causal inference with PyMC, CausalPy, and DoWhy. Enforces DAG-first
  thinking, mandatory user checkpoints for assumptions, design-specific refutation, and defensible
  reporting with causal language guardrails. Trigger on: causal inference, causal effect estimation,
  treatment effects, counterfactuals, difference-in-differences (DiD), synthetic control, regression
  discontinuity (RDD), interrupted time series (ITS), instrumental variables (IV), propensity scores,
  DAGs, causal graphs, confounders, backdoor criterion, do-calculus, interventional distributions,
  pm.do(), pm.observe(), CausalPy, DoWhy, mediation analysis, refutation, sensitivity analysis,
  parallel trends, placebo tests, or any question of the form "does X cause Y" or "what is the
  effect of X on Y."
license: MIT
metadata:
  author: "[Alexandre Andorra](https://alexandorra.github.io/)"
  version: "1.0"

Causal Inference

Dependencies

This skill requires the **bayesian-workflow** skill for all PyMC modeling steps (priors, sampling, diagnostics, calibration, reporting).

Detect it:

ls ~/.claude/skills/bayesian-workflow/SKILL.md 2>/dev/null || ls .claude/skills/bayesian-workflow/SKILL.md 2>/dev/null

If not found, install it:

git clone https://github.com/Learning-Bayesian-Statistics/baygent-skills.git /tmp/baygent-skills
cp -r /tmp/baygent-skills/bayesian-workflow ~/.claude/skills/

For all PyMC modeling steps (priors, sampling, diagnostics, calibration, reporting), follow the bayesian-workflow skill.

Workflow overview

Every causal analysis follows this sequence. Steps 1-4 are the thinking phase (no code). Steps 5-8 are the doing phase. Think before you do.

1. **Formulate the causal question** — Propose precise estimand (ATE, ATT, LATE, etc.). ⚠️ ASK USER TO CONFIRM. 2. **Draw the DAG** — Propose causal graph with nodes, edges, and explicit non-edges. ⚠️ ASK USER TO CONFIRM. See [references/dags-and-identification.md](references/dags-and-identification.md) 3. **Identify** — Determine identification strategy (backdoor, front-door, IV, RDD, DiD). ⚠️ ASK USER TO CONFIRM untestable assumptions. See [references/dags-and-identification.md](references/dags-and-identification.md) 4. **Choose design** — Match problem to method using table below. ⚠️ ASK USER TO CONFIRM. See [references/quasi-experiments.md](references/quasi-experiments.md) or [references/structural-models.md](references/structural-models.md) 5. **Estimate** — Build and fit the model. Delegate all PyMC mechanics to bayesian-workflow skill. 6. **Refute** — MANDATORY. Run design-specific robustness checks. See [references/refutation.md](references/refutation.md) 7. **Interpret** — Effect size + decision-relevant HDIs + probability of direction. 8. **Report** — Generate causal analysis report. See [references/reporting.md](references/reporting.md)

Design selection guide

| Design | Use when | Key assumption | Tool | |---|---|---|---| | DiD | Treatment at known time, control group available | Parallel trends | CausalPy | | Staggered DiD | Treatment rolls out at different times | Parallel trends per cohort | CausalPy | | Synthetic Control | Single treated unit, donor pool available | Weighted donors approximate counterfactual | CausalPy | | ITS | Time series, intervention at known time, no control | No confounding event at treatment time | CausalPy | | RDD | Treatment by threshold on running variable | No manipulation at threshold | CausalPy | | IV | Endogenous treatment, valid instrument | Exclusion restriction, relevance | CausalPy | | IPSW | Observational data, treatment modeled | No unmeasured confounders, positivity | CausalPy | | Structural (do/observe) | Full causal theory, model mechanisms | Correct DAG specification | PyMC | | Counterfactual | "What would Y have been if X differed?" | Correct structural model | PyMC |

Critical rules

  • **No estimation without a confirmed DAG.** A causal graph is not optional decoration — it makes

assumptions explicit and determines the adjustment set. If the user resists, explain why the DAG is non-negotiable before proceeding.

  • **No causal claims without refutation.** Every design has failure modes. Run at minimum one

design-specific robustness check (placebo test, sensitivity analysis, falsification test) before reporting results. See [references/refutation.md](references/refutation.md).

  • **State assumptions before results.** Lead with what must be true for the estimate to be causal.

Bury the estimate after the assumptions, not before. This is not optional politeness — it prevents misuse of results.

  • **Adapt HDIs to the decision context.** The bayesian-workflow skill's 94% HDI is a sensible

default; adapt it with explicit explanation when the decision stakes warrant it (e.g., 89% for exploratory, 97% for high-stakes policy). Report multiple intervals when the decision threshold matters.

  • **Downgrade causal language when warranted.** If identification assumptions are unverifiable or

refutation raises flags, soften claims: "consistent with a causal effect" not "causes", "estimated effect" not "true effect". Flag uncertainty loudly in the report.

  • **Ask the user when domain knowledge is needed.** You cannot know whether an instrument is valid,

whether parallel trends holds, or whether a confounder exists without domain expertise. Ask before assuming.

  • **Delegate PyMC mechanics to bayesian-workflow.** This skill handles causal structure and design.

The bayesian-workflow skill handles priors, sampling, diagnostics, calibration, and reporting format. Don't duplicate those rules here.

Common gotchas

These are battle-tested lessons that save hours of debugging:

  • **CausalPy formula syntax uses `C()` for categoricals.** Passing a string column directly without

`C()` will silently produce wrong dummy coding. Always wrap categorical treatment and group variables: `"y ~ C(t

Read more
Ships withauto-empirical-research-skills

📌 文档结构(2026-07-22 起): 本文件是中文默认入口 —— banner + badges + 信任面 + 9 阶段流水线速览 + 76 行合集总表。 每个合集的完整描述、按用途分组、精确数字、验证方法在 docs/CONTENT_ZH.md(扩展正文,总表行内的 → 直接跳转到对应锚点)。 English version: README-en.md · 中文扩展正文:docs/CONTENT_ZH.md · README-zh-CN.md 已弃用(重定向占位) 🌐 语言: English |

Get the whole plugin