Skip to content
Back to skills

Data Analysis

ASecurity

Deliver 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.

  • 144 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentspythongobashtestingcode-reviewgitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add flonat/flonat-research --skill data-analysis --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Data Analysis?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Data Analysis
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/flonat-data-analysis/badge)](https://www.skillsdirectory.com/skills/flonat-data-analysis)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: data-analysis
description: "Deliver 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."
allowed-tools: Bash(uv*, Rscript*, R*, stata*, julia*, mkdir*, ls*, cp*), Read, Write, Edit, Glob, Grep, AskUserQuestion, Skill
argument-hint: "[data-path or project-path] [--mode eda|estimation|full]"
agent-dependencies: [code-review]
skill-dependencies: [experiment-design]
---

# Data Analysis Pipeline

> 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

1. **Detect project structure:** Read `CLAUDE.md`, check for `data/`, `code/`, `paper/` directories.
2. **Detect language:** Check existing scripts, user preference, or ask. Read `shared/multi-language-conventions.md` for the chosen language's conventions.
3. **Locate data:** Find datasets in `data/raw/` or `data/processed/`. **Never modify `data/raw/`** (per `data-sensitivity` rule). For social-media datasets, follow [`shared/engagement-stratified-sampling.md`](../shared/engagement-stratified-sampling.md) when constructing analysis samples.
4. **Confirm validation tier** per [`shared/validation-tiers.md`](../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.
5. **Check for locked design:** Look for analysis plan in `log/plans/`, `.context/project-recap.md`, or `MEMORY.md` estimand registry. If running Estimation or Full mode and no design exists, **stop and warn:** "No locked research design found. Run `experiment-design` or `causal-design` first, or confirm the specification before proceeding." Use [`shared/method-probing-questions.md`](../shared/method-probing-questions.md) to probe gaps if the user pushes back on the gate.

### Phase 2: Exploratory Data Analysis

Generate and execute an EDA script that produces:

1. **Data overview:** dimensions, types, missingness summary
2. **Univariate distributions:** histograms/density for continuous, bar charts for categorical
3. **Bivariate relationships:** correlation matrix, key scatterplots, cross-tabulations
4. **Outlier detection:** box plots, IQR-based flags
5. **Distribution diagnostics** (mandatory): run `distribution_diagnostics()` from `shared/distribution-diagnostics.md` on every DV and key IVs. Report skewness, zero proportion, overdispersion, and model recommendation. Flag if OLS is inappropriate.
6. **Balance tables** (if treatment variable identified): pre-treatment covariate balance

**Output routing:**
- Exploratory figures → `output/figures/` (not `paper/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`](../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`](../shared/intercoder-reliability.md) before estimation.

Generate estimation script(s) covering:

1. **Main specification** — as defined in the locked design
2. **Robustness checks** — pre-committed alternatives (different SEs, controls, subsamples)
3. **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`/`.dta` for 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.

1. **Main results table** — booktabs three-line format, exported as `.tex` to `paper/tables/`
2. **Robustness tables** — same format, appendix naming convention
3. **Publication figures** — coefficient plots, event study plots, mechanism figures → `paper/figures/` as PDF
4. **Inline statistics** — export `\newcommand` definitions 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

1. **Verify outputs exist:** Check all expected files in `paper/tables/` and `paper/figures/`
2. **Run the `code-review` agent** on all generated scripts (auto-invoke via skill-routing mechanism)
3. **Log the analysis:** Record what was done, which scripts were created, which outputs were generated
4. **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 |

Files in this skill

  • SKILL.md8.1 KB
  • references/econ-visualisation.md3 KB
  • references/estimation-recipes.md3 KB
  • references/language-conventions.md2 KB
  • references/matplotlib.md11 KB
  • references/plotly.md6.7 KB
  • references/seaborn.md19.1 KB
  • references/statsmodels.md19.2 KB
  • references/sympy.md12.8 KB
  • references/table-formatting.md4.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.