Data Analysis Pipeline
SkillDev toolsDeliver an end-to-end analysis pipeline: EDA, estimation, or publication output. Use when the user requests an end-to-end analysis pipeline: EDA, estimation, or publication output.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Data Analysis Pipeline skill
What this skill tells your AI
The instructions your AI receives, as published by flonat/flonat-research in skills/data-analysis/SKILL.md and read by ahel’s review.
Generate, execute, and verify analysis scripts across R, Python, Stata, and Julia.
Modes
| Mode | What it does | Phases |
|---|---|---|
| EDA | Exploratory data analysis only | 1–2 |
| Estimation | Estimation + publication output (requires locked design) | 1, 3–4 |
| Full | Complete pipeline | 1–5 |
Default: Full. Detect mode from user request or ask if ambiguous.
When to Use
- "Analyse this data" / "Run EDA on this CSV" / "Estimate the model"
- "Generate results tables" / "Create publication figures"
- Any task requiring data → script → output pipeline
When NOT to Use
- Experimental design or power analysis →
experiment-design - Generating synthetic data for testing →
synthetic-data - Auditing identification strategy →
causal-design - Proofreading or compiling the paper →
proofread,latex
Shared References
- Method probing questions:
shared/method-probing-questions.md— ask before running any analysis - Validation tiers:
shared/validation-tiers.md— declare tier before examining results - Escalation protocol:
shared/escalation-protocol.md— escalate when methodology answers are vague - Distribution diagnostics:
shared/distribution-diagnostics.md— mandatory DV checks before model selection - Engagement-stratified sampling:
shared/engagement-stratified-sampling.md— stratify by engagement tiers for social media data - Inter-coder reliability:
shared/intercoder-reliability.md— per-category reliability for content analysis and LLM annotation
Workflow
Phase 1: Setup
- Detect project structure: Read
CLAUDE.md, check fordata/,code/,paper/directories. - Detect language: Check existing scripts, user preference, or ask. Read
shared/multi-language-conventions.mdfor the chosen language's conventions. - Locate data: Find datasets in
data/raw/ordata/processed/. Never modifydata/raw/(perdata-sensitivityrule). For social-media datasets, followshared/engagement-stratified-sampling.mdwhen constructing analysis samples. - Confirm validation tier per
shared/validation-tiers.md. Tier dictates claim-strength language allowed in Phase 4 outputs and how strict the locked-design gate (step 5) is enforced. - Check for locked design: Look for analysis plan in
log/plans/,.context/project-recap.md, orMEMORY.mdestimand registry. If running Estimation or Full mode and no design exists, stop and warn: "No locked research design found. Runexperiment-designorcausal-designfirst, or confirm the specification before proceeding." Useshared/method-probing-questions.mdto probe gaps if the user pushes back on the gate.
Phase 2: Exploratory Data Analysis
Generate and execute an EDA script that produces:
- Data overview: dimensions, types, missingness summary
- Univariate distributions: histograms/density for continuous, bar charts for categorical
- Bivariate relationships: correlation matrix, key scatterplots, cross-tabulations
- Outlier detection: box plots, IQR-based flags
- Distribution diagnostics (mandatory): run
distribution_diagnostics()fromshared/distribution-diagnostics.mdon every DV and key IVs. Report skewness, zero proportion, overdispersion, and model recommendation. Flag if OLS is inappropriate. - Balance tables (if treatment variable identified): pre-treatment covariate balance
Output routing:
- Exploratory figures →
output/figures/(notpaper/figures/) - Summary statistics →
output/tables/as.csv - EDA script →
code/01_eda.R(or.py/.do/.jl)
EDA mode stops here.
Phase 3: Estimation
Gate check: Verify the research design is locked before proceeding. The specification (estimand, identifying assumptions, main model) must be documented. This enforces the design-before-results rule. If the user resists the gate, follow shared/escalation-protocol.md — escalate rather than accommodate. For analyses involving human or LLM coding (content analysis, annotation), require per-category reliability per shared/intercoder-reliability.md before estimation.
Generate estimation script(s) covering:
- Main specification — as defined in the locked design
- Robustness checks — pre-committed alternatives (different SEs, controls, subsamples)
- Diagnostics — specification-appropriate tests (first-stage F for IV, parallel trends for DiD, bandwidth sensitivity for RDD)
Read references/estimation-recipes.md for language-specific estimation patterns.
Output:
- Estimation script →
code/02_estimation.R(or equivalent) - Coefficient estimates →
output/results/as.rds/.pkl/.dtafor downstream table generation
Phase 4: Publication Output
Generate publication-ready tables and figures. Read shared/publication-output.md for format standards and references/table-formatting.md for language-specific recipes.
- Main results table — booktabs three-line format, exported as
.textopaper/tables/ - Robustness tables — same format, appendix naming convention
- Publication figures — coefficient plots, event study plots, mechanism figures →
paper/figures/as PDF - Inline statistics — export
\newcommanddefinitions for key numbers referenced in text
Critical rule: All numbers in .tex files must come from generated files via \input{}. Never hard-code results (per no-hardcoded-results rule). Scripts in code/, outputs in paper/ (per overleaf-separation rule).
Output script → code/03_tables_figures.R (or equivalent)
Phase 5: Save & Review
- Verify outputs exist: Check all expected files in
paper/tables/andpaper/figures/ - Run the
code-reviewagent on all generated scripts (auto-invoke via skill-routing mechanism) - Log the analysis: Record what was done, which scripts were created, which outputs were generated
- Suggest next steps: compilation with
latex, or additional analyses
Script Structure
Every generated script follows this header template:
# ============================================================
# Script: [filename]
# Purpose: [one-line description]
# Inputs: [list of input files]
# Outputs: [list of output files]
# Dependencies: [packages used]
# Author: [from git config]
# Date: [today]
# ============================================================
Cross-References
| Resource | When read |
|---|---|
shared/multi-language-conventions.md | Phase 1 (language setup) |
shared/publication-output.md | Phase 4 (table/figure format) |
references/estimation-recipes.md | Phase 3 (estimation code patterns) |
references/econ-visualisation.md | Phase 2 & 4 (economics figure/table conventions) |
references/table-formatting.md | Phase 4 (language-specific table export) |
references/language-conventions.md | Phase 1 (additional language notes) |
design-before-results rule | Phase 3 gate check |
data-sensitivity rule | Phase 1 (data access) |
no-hardcoded-results rule | Phase 4 (output routing) |
overleaf-separation rule | Phase 4 (file placement) |
the code-review agent | Phase 5 (auto-invoked) |
experiment-design skill | Suggested if no design exists |
causal-design skill | Suggested if no design exists |
econ-plots skill | Economics-specific figures |
r-econometrics skill | R-specific estimation |
econ-data skill | Data download from public APIs |
Signals
- GitHub stars
- 133
- Forks
- 24
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
data-analysis-flonat- Source
- github.com/flonat/flonat-research