Causal Exercises logo

Causal Exercises

Community
RobsonTigre
causal-exercises

Generates practice exercises with simulated data and known ground truth across all causal inference methods. Use when user says "practice", "exercise", "simulate", "learn causal inference", or "test my skills". Not for real data analysis.

Overview

PublisherRobsonTigre
Repositoryeveryday-causal-skills
Skill namecausal-exercises
Stars
83
Forks
10
Bundled files
Instructions only
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by RobsonTigre on GitHub. Read the source before you install it.

Installation

Install the Causal Exercises AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/RobsonTigre/everyday-causal-skills/tree/main/skills/causal-exercises
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/RobsonTigre/everyday-causal-skills.git /tmp/everyday-causal-skills
mkdir -p .claude/skills
cp -r /tmp/everyday-causal-skills/skills/causal-exercises .claude/skills/causal-exercises
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Causal Exercises in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Causal Exercises on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Causal Exercises is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Causal Exercises

Generate realistic causal inference exercises with simulated data. The true effect is known, so practitioners can verify their work.

Before You Begin

  1. Read references/lessons.md — known mistakes. Do not repeat them.
  2. Read references/dgp-library.md — available data-generating processes.
  3. Read references/method-registry.md — method details.
  • Explain the why: When walking through assumptions, recommending methods, or flagging concerns, always explain why it matters — not just what to do. Help the user build intuition, not just follow instructions.

Quality Standards

  • Complete every stage. Do not skip assumption checks or robustness tests.
  • Quality over speed. A thorough analysis with caveats beats a fast one without.
  • When uncertain, say so. Flag limitations rather than presenting weak evidence as strong.
  • Realism over simplicity: Every scenario must read like a real business problem, not a textbook exercise. Use company names, job titles, and domain-specific language.
  • Always include at least one complication: Even "Basic" exercises should have one realistic wrinkle (e.g., slightly noisy data, an obvious but important assumption to check). Pure textbook setups teach nothing about real practice.
  • Data first: Generate and provide the dataset immediately — don't make the student wait. They should be able to start exploring within seconds.
  • Clear deliverable: Always tell the student exactly what they should produce — "estimate the treatment effect and explain your assumptions" is better than "analyze the data."
  • Canonical runnable block: When showing a DGP or solution program, put the exact line # EVAL_EXECUTABLE as the first nonblank program line inside exactly one correct-language code fence. Do not indent it or add other text on that line. That fence contains the complete runnable program; preflight snippets and illustrative alternatives stay unmarked.

Exercise Flow

Step 1: Choose Parameters

Ask: "What difficulty level? (Basic / Intermediate / Advanced)" Ask: "Any particular method to practice, or should I choose?"

Methods available: experiments, DiD, IV, RDD, synthetic control, matching, time series, DAG reasoning (variable selection, adjustment sets, bad control detection). Ask: "R or Python?"

If difficulty, method, and language are already supplied and the user requests the complete exercise now, treat Step 1 as complete. Do not repeat the parameter intake: provide the scenario and precise student deliverable in the same response. A complete-exercise request alone is not a request to see the generator: keep dgp.[R|py], the solution, and the true effect hidden until the debrief. Create dataset artifacts only when execution and file-writing tools are available and the run succeeds. Otherwise, explain that dataset creation requires executing the hidden DGP; do not claim that a dataset was created or saved, and do not cite a dataset path. When the user explicitly requests the runnable generator, this direct-output rule is the narrow exception to the normal instruction to conceal dgp.[R|py] until the debrief: emit the complete runnable generator inline, but do not separately annotate the true-effect parameter, explain the structural solution, or provide the answer. If Bash or Write is unavailable, explicitly say that the generator was not executed, the dataset was not saved, and no dataset path exists. Tell the student that inspecting generator internals can spoil the exercise and that they can run the block without reading it if they want a blind attempt.

Precedence over Step 3: The complete-exercise and explicit-generator branches above supersede Step 3's execution, save, and path-announcement instructions whenever the required execution or file-writing tools are unavailable. In those branches, follow Step 3 only after a DGP actually runs and its files are actually written; never repeat Step 3's generated-dataset or saved-path claim as a promise or hypothetical.

  • Basic: Clean setup, one method clearly correct, no complications.
  • Intermediate: Realistic noise, 1-2 complications (staggered rollout, weak instrument, imperfect overlap).
  • Advanced: Multiple complications, assumption violations baked in that the user must detect and handle.

IV exercise contract: An IV exercise must teach relevance/strength and validity as separate questions. A strong first stage only shows that the instrument moves treatment; it does not establish independence or the exclusion restriction. Design the scenario and DGP so the student must reason about both:

  • vary instrument strength across a labeled scenario, parameter, or comparison and require a first-stage coefficient, robust F statistic, and weak-instrument diagnosis;
  • include a scenario-specific validity challenge, such as a plausible direct path from the encouragement to the outcome, and ask the student to defend independence, exclusion, and monotonicity rather than declaring the instrument valid from its F statistic;
  • define the compliers in the scenario and teach LATE as the average treatment effect for those compliers. For example, an encouragement design identifies the effect among people who take treatment when encouraged but not otherwise, not the ATE for everyone; and
  • make the requested deliverable trace a path from data to first-stage diagnostics, reduced form and 2SLS, assumption assessment, and a scenario-specific LATE interpretation.

Keep the challenge discoverable from the narrative and observed variables. Do not resolve the validity question for the student or reveal the true effect before the debrief.

Step 2: Generate Scenario

Select a DGP from references/dgp-library.md matching the difficulty and method. Present a realistic business narrative. Do NOT reveal the method, the DGP, or the true effect, except for the narrow user-requested direct-generator case above. If the user already selected the method, do not pretend that method is hidden.

"Scenario: You work as a data analyst at [company]. [Business context narrative]. Your manager wants to know: [causal question]. You have access to the attached dataset."

Step 3: Create and Save Data

Run the DGP code (using Bash tool) to generate the dataset. If it needs a package the user may not have, follow references/preflight.md: report what's missing and offer to install it for them — never install silently. Save files:

  • docs/causal-exercises/YYYY-MM-DD-<exercise>/data.csv — the dataset
  • docs/causal-exercises/YYYY-MM-DD-<exercise>/dgp.[R|py] — the DGP code (do not show until debrief unless the direct-generator exception applies)
  • docs/causal-exercises/YYYY-MM-DD-<exercise>/solution.md — true effect and method (DO NOT show yet)

Tell the user: "I've generated the dataset at [path]. Take a look and tell me: What causal method would you use and why?"

Step 4: Progressive Hints (On Request)

If the user asks for help, provide hints in order:

  1. "Think about how the treatment was assigned."
  2. "What data structure do you have? Cross-sectional or panel?"
  3. "The key identification strategy here involves [hint at mechanism]."
  4. "The method I had in mind is [method]."
  5. "The key assumption to check is [specific assumption]."

Step 5: Review and Debrief

After the user presents their analysis (or asks for the answer):

  1. Reveal the true DGP and true effect.
  2. Compare: "Your estimate of [X] vs the true effect of [Y]."
  3. Explain the gap — connect the error to a specific cause:
    • If method was correct but estimate is off: "The gap of [Z] is [sampling variability / a finite-sample artifact]. With more data, this would shrink. Your approach was sound."
    • If method was correct but assumption was violated: "Your estimate missed because [assumption] was violated in this data. Here's how: [specific mechanism from the DGP]. The diagnostic that would have caught it is [test/plot] — it would have shown [what to look for]."
    • If method was wrong: "This scenario called for [correct method] because [reason]. The method you chose assumes [assumption], which doesn't hold here because [explanation from DGP]."
  4. Connect to practice: "In real data, you wouldn't know the true effect. The way to protect yourself is [specific diagnostic or robustness check that would have flagged the issue]."
  5. Score: "Your estimate of [X] vs truth of [Y] — [assessment]."

Save debrief to docs/causal-exercises/YYYY-MM-DD-<exercise>/debrief.md.

Common Issues

  • Revealing the DGP too early: The exercise is ruined if the user sees the true data-generating process before attempting the analysis. Never show DGP code or true effects until the debrief stage unless the user explicitly requested the runnable generator under the narrow direct-output exception; even then, withhold the separate solution and true-effect annotation.
  • Mismatch between simulated data and method difficulty: If the exercise is too easy (obvious treatment effect, no violations), it doesn't teach anything. Ensure exercises include realistic complications.
  • Conflating a strong instrument with a valid one: A large first-stage F statistic supports relevance, not independence or exclusion. Grade these as separate parts of an IV exercise.

Integration

Before this skill:

  • /causal-planner -- Optional; user may come directly to practice

After this skill:

  • /causal-[method] -- Apply the practiced method to real data
  • /causal-dag -- Practice drawing DAGs, identifying adjustment sets, and detecting bad controls

Self-Correction

If the user identifies a problem with the exercise (e.g., DGP doesn't match the narrative, unrealistic parameters), record the lesson in references/lessons.md.

Frequently asked questions

What does the Causal Exercises AI skill do?

Generates practice exercises with simulated data and known ground truth across all causal inference methods. Use when user says "practice", "exercise", "simulate", "learn causal inference", or "test my skills". Not for real data analysis.

Why use Causal Exercises on TypingMind?

Because you install it once and use it with any model. Causal Exercises is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Causal Exercises in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/RobsonTigre/everyday-causal-skills/tree/main/skills/causal-exercises. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Causal Exercises?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Causal Exercises?

As many as you like. As long as a model supports skills, you can use Causal Exercises with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Causal Exercises AI skill free?

Yes. It is published on GitHub by RobsonTigre under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇