alterlab-ssci-design-gate

$npx mdskill add AlterLab-IEU/AlterLab-Academic-Skills/alterlab-ssci-design-gate

Routes a social-science study to its research design and pins the identifying assumption.

  • Helps choose between experiment, quasi-experiment, observational, qualitative, or mixed designs.
  • Runs locally via Python standard library; no API key required.
  • Walks random-selection and random-assignment decisions to determine the design.
  • Outputs the pinned identifying assumption for the causal claim before analysis.

SKILL.md

.github/skills/alterlab-ssci-design-gateView on GitHub ↗
---
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.

More from AlterLab-IEU/AlterLab-Academic-Skills

SkillDescription
alterlab-abm-mesaBuilds agent-based models of social systems with Mesa 3 — the current AgentSet API (model.agents.shuffle_do('step'), auto-assigned unique_id, mandatory super().__init__(seed=...)), cell spaces (mesa.discrete_space OrthogonalMooreGrid / classic mesa.space grids), the DataCollector, batch_run parameter sweeps, and SolaraViz — for emergence, segregation, diffusion, opinion dynamics, and cooperation models. It uses the Mesa 3.x API (the old mesa.time schedulers like RandomActivation are removed) and treats the model as a generative theory to be validated, not just run. Use when the request mentions an agent-based model, Mesa, simulating interacting agents, or emergent macro behavior from micro rules. For discrete-event (queueing/process) simulation prefer alterlab-simpy; for reinforcement learning prefer alterlab-stable-baselines3. Part of the AlterLab Academic Skills suite.
alterlab-academic-careerPrepares academic career documents and professional-development materials for faculty and researchers. Use when drafting academic CVs, research statements, teaching philosophies, diversity statements, faculty-position cover letters, tenure dossiers, promotion narratives, academic portfolios, or mentorship statements, and when planning conference-networking strategy, building academic web presence, setting up ORCID profiles, or understanding impact metrics. Part of the AlterLab Academic Skills suite.
alterlab-accreditation-aolScaffolds program-level Assurance-of-Learning (AoL) documentation for AACSB (2020 Standard 5) and ABET (Criterion 3 Student Outcomes, Criterion 4 Continuous Improvement) accreditation — program learning outcomes / competency goals, curriculum-to-outcome mapping matrices, direct- and indirect-assessment plans, rubric design, and closing-the-loop continuous-improvement narratives — and validates the structure of an outcome-mapping matrix with scripts/aol_matrix.py. Use when the user needs AACSB or ABET assurance-of-learning material, a program-learning-outcomes set, a curriculum/outcome map or coverage matrix, a direct/indirect assessment plan, a closing-the-loop report, or accreditation self-study text. For single-course design or course rubrics prefer alterlab-teaching-design; for post-award grant reports prefer alterlab-grant-reporting. Part of the AlterLab Academic Skills suite.
alterlab-adaptyvSubmits and tracks protein-testing experiments on the Adaptyv Bio Foundry cloud lab (wet-lab validation), and optimizes protein sequences before submission with computational tools (NetSolP, SoluProt, SolubleMPNN, ESM). Use when designing proteins that need wet-lab validation - binding/affinity screening, expression testing, thermostability, or fluorescence assays - or when submitting experiments to the Foundry API, browsing the target catalog, tracking experiment status, retrieving results, or pre-screening sequences for solubility/expression. Triggers on "Adaptyv", "Foundry API", "cloud lab", "biolayer interferometry / BLI", "wet-lab validation". Part of the AlterLab Academic Skills suite.
alterlab-aeonRuns time series machine learning with the aeon library — classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search via scikit-learn compatible APIs. Use when working with temporal data, sequential patterns, or time-indexed observations (univariate or multivariate) that need specialized algorithms beyond standard ML approaches. Part of the AlterLab Academic Skills suite.
alterlab-akademik-tesvikComputes the annual Turkish academic-incentive (akademik teşvik) score for Devlet (state) university öğretim elemanı (academic staff) from a classified activity list, applying the verified Akademik Teşvik Ödeneği Yönetmeliği (2018/11834) Faaliyet Hesaplama Tablosu headline puanları (Proje 20, Araştırma 15, Yayın 30, Patent 30, Atıf 30, Tebliğ 20, Ödül 20) with the k (author-count), p (Q1 1/Q2 0.8/Q3 0.5/Q4 0.25), and r (project-role) coefficients via türü puanı = Σ(faaliyet oranları) × headline (MADDE 8/2), then enforcing the per-type headline ceilings, the 100 cap (MADDE 8/3), and the net-30 payment gate (MADDE 10/3) in a deterministic scripts/tesvik_score.py. Use when the user wants to calculate akademik teşvik puanı, check the en az 30 (net-30) threshold, apply TABLO 4 ceilings, or estimate teşvik eligibility; keeps its coefficients separate from doçentlik scoring. For doçentlik point eligibility prefer alterlab-docentlik-eligibility. Part of the AlterLab Academic Skills suite.
alterlab-alpha-vantageAccesses real-time and historical stock market data, forex rates, cryptocurrency prices, commodities, economic indicators, and 50+ technical indicators via the Alpha Vantage API (requires a free API key from alphavantage.co). Use when fetching stock prices (OHLCV), company fundamentals (income statement, balance sheet, cash flow), earnings, options data, market news/sentiment, insider transactions, GDP, CPI, treasury yields, gold/silver/oil prices, Bitcoin/crypto prices, forex exchange rates, or calculating technical indicators (SMA, EMA, MACD, RSI, Bollinger Bands). Part of the AlterLab Academic Skills suite.
alterlab-alphafoldPredict protein 3D structures with AlphaFold2 via ColabFold — MMseqs2-accelerated MSAs, monomer and AlphaFold2-Multimer complex folding, and confidence-based validation (pLDDT, pTM/ipTM, PAE). Use when folding a protein sequence or complex from FASTA, generating a predicted structure with confidence metrics, ranking models, or checking self-consistency of a design. For co-folding a protein WITH a small-molecule ligand or predicting binding affinity prefer alterlab-boltz; for antibody–antigen or one-FASTA multi-entity complexes prefer alterlab-chai; to LOOK UP an already-computed structure prefer alterlab-alphafold-db; for ESM embeddings or inverse folding prefer alterlab-esm. Part of the AlterLab Academic Skills suite.
alterlab-alphafold-dbAccess the AlphaFold DB of 200M+ AI-PREDICTED protein structures — retrieve models by UniProt accession, download PDB/mmCIF files, and analyze prediction confidence metrics (pLDDT, PAE). Use when a UniProt ID needs a computationally predicted 3D structure or when no experimental structure exists, for homology modeling, protein engineering, or structure-based drug discovery; for EXPERIMENTALLY determined structures (X-ray, cryo-EM, NMR) prefer alterlab-pdb, and for protein sequences, annotations, or accession ID mapping prefer alterlab-uniprot instead. Part of the AlterLab Academic Skills suite.
alterlab-anndataBuild, slice, concatenate, read, and write AnnData annotated data matrices (obs, var, X, layers, obsm, uns) — the scverse data STRUCTURE, not an analysis pipeline. Use when creating or wrangling .h5ad/zarr files, managing cell and gene annotations, concatenating batches, or handling layers/obsm/backed-mode; for the QC, normalization, clustering, UMAP, and differential-expression analysis pipeline prefer alterlab-scanpy instead, and for RNA velocity from spliced/unspliced layers prefer alterlab-scvelo instead. Part of the AlterLab Academic Skills suite.