Routes a social-science study to its research design — true experiment, quasi-experiment (difference-in-differences, instrumental variables, regression discontinuity, interrupted time series, fixed effects), observational/correlational, qualitative, or mixed — by walking the random-selection and random-assignment decisions, then PINS the identifying assumption the causal claim will rest on (parallel trends, exclusion restriction, continuity at the cutoff, selection-on-observables, or qualitat...
Scanned 9/6/2026
Install to Claude Code
npx -y skills add AlterLab-IEU/AlterLab-Academic-Skills --skill alterlab-ssci-design-gate --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Alterlab Ssci Design Gate?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/alterlab-ieu-alterlab-ssci-design-gate)More formats (shields.io, HTML) on the badges page.
---
name: alterlab-ssci-design-gate
description: "Routes a social-science study to its research design — true experiment, quasi-experiment (difference-in-differences, instrumental variables, regression discontinuity, interrupted time series, fixed effects), observational/correlational, qualitative, or mixed — by walking the random-selection and random-assignment decisions, then PINS the identifying assumption the causal claim will rest on (parallel trends, exclusion restriction, continuity at the cutoff, selection-on-observables, or qualitative saturation logic) before any analysis begins. Use when choosing a study design, asking what design to use, framing a causal question from observational data, or deciding experiment vs quasi-experiment vs observational. For executing the analysis prefer alterlab-statistical-analysis; for qualitative design depth prefer alterlab-qualitative-methods; for choosing the statistical test downstream prefer alterlab-test-selection-guard. Part of the AlterLab Academic Skills suite."
license: MIT
allowed-tools: Read Bash(python:*)
compatibility: No API key required. A discipline-enforcing design-routing skill; the optional decision-tree helper runs locally via `uv run python` (standard library only).
metadata:
skill-author: AlterLab
version: "1.0.0"
depends_on: "alterlab-qualitative-methods, alterlab-mixed-methods, alterlab-statistical-analysis, alterlab-test-selection-guard; hands the pinned assumption to alterlab-ssci-inference-gate"
---
# Design Gate — Pin the Identifying Assumption Before Anything Else
**Skill type: DISCIPLINE-ENFORCING.** This is the entry point of the social-science methods
spine, not an analysis engine. It routes a study to the right *design family* and forces the
one decision every downstream gate depends on: **what identifying assumption licenses the
causal claim?** It does not run models — for execution it hands off to the analysis skills.
## The Core Rule
```
A CAUSAL CLAIM IS ONLY AS GOOD AS ITS IDENTIFYING ASSUMPTION — NAME IT FIRST.
```
Design is chosen by the **question and the data-generating process** — who was selected, who
was assigned, what varies and when — not by which method is fashionable or convenient. A
quasi-experiment is an observational design that *earns* a causal interpretation only by
committing, up front, to an assumption that makes the effect identified. State that assumption
before touching an estimator; if you cannot defend one, the claim is associational, not causal.
## When to Use This Skill
Trigger the design gate whenever a design is being **chosen, defended, or implied by a claim**:
- "What research design should I use for this question?"
- "I have observational survey data and want to claim X improves Y." (← pin the assumption)
- "Should this be an experiment or a quasi-experiment?"
- "Can a difference-in-differences / IV / regression-discontinuity design answer this?"
- "Is my before/after comparison enough to claim the program worked?"
### Does NOT Trigger
Route these adjacent requests to the real sibling skill. This gate picks the *design* and pins
the *assumption*; it does not execute, choose the test, or write.
| The request is really about… | Route to | Why not this skill |
|---|---|---|
| Running the analysis / a specific model once the design is fixed | `alterlab-statistical-analysis` / `alterlab-statsmodels` | Execution, not design choice. |
| Which statistical *test* to use (t-test vs Mann-Whitney, etc.) | `alterlab-test-selection-guard` | Test choice is downstream of design. |
| Deep qualitative design (grounded theory, phenomenology, coding) | `alterlab-qualitative-methods` | This gate only routes *to* qual; that skill does it. |
| Integrating qual + quant strands, joint displays | `alterlab-mixed-methods` | Mixed-methods design mechanics. |
| Grading evidence quality, confounders, bias upstream | `alterlab-scientific-thinking` | Study-validity judgment, not design routing. |
| Designing the instrument/questionnaire itself | `alterlab-survey-design` | Measurement instrument, not design family. |
## The Design Decision Tree
Walk top-down. **Each branch is decided by the data-generating process, not the desired claim.**
```
1. Is the CAUSE randomly ASSIGNED by the researcher?
├─ YES → TRUE EXPERIMENT (RCT / lab / field experiment)
│ identifying assumption: randomization → ignorability (assignment ⊥ potential outcomes)
└─ NO → 2. Is there exogenous variation you can exploit?
├─ a policy/treatment turned on for some units at some time → DIFFERENCE-IN-DIFFERENCES
│ assumption: PARALLEL TRENDS (treated & control would have moved together absent treatment)
├─ an "as-good-as-random" nudge affecting treatment but not the outcome directly → INSTRUMENTAL VARIABLES
│ assumption: EXCLUSION RESTRICTION + relevance (instrument affects Y only through the treatment)
├─ treatment assigned by a threshold on a running variable → REGRESSION DISCONTINUITY
│ assumption: CONTINUITY of potential outcomes at the cutoff (no manipulation of the score)
├─ one unit observed before/after an intervention over many periods → INTERRUPTED TIME SERIES
│ assumption: the pre-trend + modeled counterfactual would have continued absent the intervention
├─ repeated observations, unit/time confounders → FIXED EFFECTS / panel
│ assumption: no time-varying confounders (selection-on-observables within unit)
└─ none of the above, adjust for measured confounders only → OBSERVATIONAL / SELECTION-ON-OBSERVABLES
assumption: CONDITIONAL IGNORABILITY (no unmeasured confounding) — the weakest, name it as such
3. Is the aim interpretive / theory-building rather than effect estimation?
├─ YES → QUALITATIVE design (route to alterlab-qualitative-methods)
│ "power" is SATURATION / information power, not a sample-size formula (see alterlab-ssci-sampling-gate)
└─ combine strands → MIXED METHODS (route to alterlab-mixed-methods)
```
Full branch logic, the five quasi-experimental designs and their threats, and worked routing
examples: `references/design_decision_tree.md`. A stdlib router that prints the design family
and its required assumption from your answers: `scripts/design_router.py`.
## "You Buy Credibility by Burning Information"
Every step from a true experiment toward pure observation trades statistical control for an
assumption you must defend. Name the trade honestly:
| Excuse | Reality |
|---|---|
| "It's basically an experiment — people just chose their own group." | Self-selection is exactly what randomization removes. This is observational; name the confounding you are assuming away. |
| "I have before-and-after data, so it's causal." | A single pre/post has no counterfactual. You need parallel trends (DiD) or a modeled counterfactual (ITS) — state which. |
| "I controlled for everything relevant." | You controlled for what you *measured*. Conditional ignorability assumes no *unmeasured* confounders — the strongest, least testable assumption. |
| "Instrumental variables fix endogeneity." | Only if the exclusion restriction holds. An instrument that affects the outcome through any other path is invalid — defend exclusion, don't assert it. |
| "Regression discontinuity is quasi-random at the cutoff." | Only if units cannot manipulate the running variable and outcomes are continuous there. Check for sorting/bunching. |
## The Design Passport (hand-off)
On exit, emit or update the pipeline's YAML **Design Passport** with:
`research_question`, `design_type`, `identifying_assumption` (the named assumption + why it is
defensible), and `claim_type` (`causal` | `associational` | `descriptive`). Downstream,
`alterlab-ssci-measurement-gate` and `alterlab-ssci-sampling-gate` append to it, and
`alterlab-ssci-inference-gate` audits final claims against `design_type` + `identifying_assumption`.
## Self-Check Before Advancing
- Is the design chosen by the data-generating process, not the desired conclusion?
- Is exactly one identifying assumption named, with a sentence on why it is defensible here?
- If observational, is the claim explicitly downgraded to associational unless a QED assumption holds?
- For qualitative aims, is "how many" deferred to saturation logic (not a power formula)?
- Is the Design Passport populated for the next gate?
## References
- `references/design_decision_tree.md` — full branch logic, the five QEDs, threats, examples.
- `scripts/design_router.py` — stdlib router printing the design family + required assumption.
Part of the AlterLab Academic Skills suite.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!