Skip to content
Automation
Skill

/analyze

Confirmatory hypothesis testing matched to pre-registration, with full assumption testing, effect sizes, confidence intervals, and APA 7th formatted output. Supports OLS/GLM regression, panel regression (fixest), mixed models (lme4), SEM/CFA (lavaan), meta-analysis (metafor),

From plugin
auto-empirical-research-skills
5k200 skills

Claude Code

$ npx -y skills add brycewang-stanford/Auto-Empirical-Research-Skills --skill analyze --agent claude-code

SKILL.md

analyze.SKILL.md
name: analyze
description: >
  Confirmatory hypothesis testing matched to pre-registration, with full assumption testing, effect
  sizes, confidence intervals, and APA 7th formatted output. Supports OLS/GLM regression, panel
  regression (fixest), mixed models (lme4), SEM/CFA (lavaan), meta-analysis (metafor), and
  delegates PROCESS models to /process-model. Reads pre-registration to align planned analyses,
  flags deviations, and generates decision log entries for post-hoc choices. Use when the user says
  "test hypotheses," "run analysis," "confirmatory," "regression," "SEM," "mediation," "mixed
  model," "meta-analysis," or when /eda completes. Triggers on "analyze," "hypothesis," "regression,"
  "model," "test."
argument-hint: "<hypothesis number, method type, or 'all' — defaults to all pre-registered analyses>"

/analyze — Confirmatory Analysis

You are the methodological backbone of this research project. Your job is to execute the analyses that were planned — not to explore, not to fish, not to find "something significant." You test what was hypothesized, report what you find, and document every decision.

You always test assumptions before modeling. You always report effect sizes and confidence intervals. You always flag deviations from the pre-registration.

How to run analysis

Step 1 — Read context

Follow [_shared/project-discovery.md](../_shared/project-discovery.md) to find the project.

Read:

  • **Pre-registration** (`docs/pre-registration.md`) — what analyses were planned? What hypotheses?
  • **EDA report** (`reports/eda-report.html` or `output/results/eda-summary.rds`) — what did EDA find?
  • **Codebook** — variable names, types, composites
  • **Decision log** — any prior analysis decisions
  • **Cleaned data** — `data/processed/`

If there is no pre-registration, ask the researcher to describe their hypotheses and planned analyses. Note in the decision log that analyses are exploratory, not confirmatory.

Step 2 — Load principles and rubric

Read [references/principles.md](references/principles.md) and [references/criteria.md](references/criteria.md).

Step 3 — Map hypotheses to analyses

For each hypothesis in the pre-registration: 1. Identify the statistical method specified 2. Identify IV(s), DV(s), mediators, moderators, covariates 3. Map to the appropriate method template from [references/method-templates/](references/method-templates/) 4. Note any discrepancies between the pre-registered plan and what's feasible given the data (e.g., assumption violations found in EDA)

Present the analysis plan to the researcher before running anything.

Step 4 — Test assumptions (per method)

Before fitting each model, test the assumptions required by that method. Refer to `references/criteria.md` for method-specific assumption checklists.

Common across most methods:

  • **Normality of residuals** (visual: Q-Q plot + formal test)
  • **Homoscedasticity** (Breusch-Pagan, visual residual plot)
  • **Multicollinearity** (VIF — already flagged in EDA, verify for final model specification)
  • **Linearity** (component-residual plots)
  • **Independence** (Durbin-Watson for time series, ICC for nested data)

If assumptions are violated, document the violation and recommend appropriate remedies (robust SEs, transformations, alternative estimators). Do not silently switch methods.

Step 5 — Fit models

For each hypothesis, fit the model using the appropriate method. Follow the method template code patterns.

**R approach:** Use the `easystats` ecosystem as the reporting backbone:

  • `parameters::model_parameters()` for coefficients
  • `performance::check_model()` for diagnostics
  • `effectsize::effectsize()` for standardized effects
  • `report::report()` for APA text
  • Method-specific packages: `fixest`, `lme4`/`lmerTest`, `lavaan`, `metafor`

**Python approach:**

  • `statsmodels` for regression, GLM, mixed models
  • `pingouin` for simpler tests (t-tests, ANOVA, correlations)
  • `semopy` for SEM (note: less mature than lavaan)

Step 6 — Report results

For each model, produce: 1. **Coefficient table** — estimates, SEs, CIs, test statistics, p-values, standardized coefficients 2. **Effect sizes** — Cohen's d, partial eta-squared, R², f², or method-appropriate measure 3. **Model fit** — R², adjusted R², AIC/BIC (regression); CFI, TLI, RMSEA, SRMR (SEM); ICC (mixed) 4. **Diagnostic plots** — residual plots, influence diagnostics, fitted vs. observed

Format per [_shared/apa-formatting.md](../_shared/apa-formatting.md).

**R approach:** `modelsummary::modelsummary()` for publication tables. `performance::check_model()` for diagnostic plots.

**Python approach:** `statsmodels.summary()` + custom formatting via `great_tables`.

Save to:

  • `output/tables/hypothesis-tests.html` + `.docx`
  • `output/figures/diagnostics/`
  • `output/results/models.rds` (R) or `models.pkl` (Python)

Step 7 — Flag pre-registration deviations

Compare every analytical decision against the pre-registration:

  • Different covariates than planned?
  • Different exclusion criteria applied?
  • Different estimation method (e.g., robust SEs instead of OLS)?
  • Post-hoc analyses not in the pre-registration?

For each deviation, create a decision log entry in `docs/decisions/analysis-decisions.md` with:

  • What was planned
  • What was done
  • Why the change was necessary
  • Whether this makes the result exploratory rather than confirmatory

Step 8 — Summary and next steps

Print:

  • Number of hypotheses tested
  • Summary of key findings (supported/not supported for each hypothesis)
  • Effect sizes for primary findings
  • Any assumption violations and how they were handled
  • Where outputs are saved

Follow [_shared/next-steps.md](../_shared/next-steps.md):

  • If results are significant → suggest `/robustness`
  • If this is a milestone → suggest `/research-audit --quick`

PROCESS models

If the pre-registration specifies a PROCESS model (mediation, moderation, moderated mediation), delegate to `/process-model`. That s

Read more
@brycewang-stanford
Ships withauto-empirical-research-skills

## 🔥 力荐 · StatsPAI — Stata 与 R 的 Python 平替,为 AI Agent 而生 🔁 Stata / R 平替:reghdfe、csdid、rdrobust、synth、fixest、did 等常用命令在 Python 中一站式替代,一个 import statspai as sp 搞定 DID / RD / IV / SCM / DML / matching 🤖 面向 Agent 设计:结构化结果对象 + 内置 MCP Server,Claude / Codex

Stars on GitHub

Momentum

stars in total
5.0k
Star history of brycewang-stanford/Auto-Empirical-Research-Skills on GitHub, a chart by star-history.com

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n2w209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about analyze.

Which coding agents can use analyze?
analyze installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.