Skip to main content
skill CX Codex

data-analysis · pedrohcgs — Claude Code skill for R data analysis

This skill runs an R analysis workflow from data inspection to regressions and publication-ready tables and figures. Use it when a dataset needs empirical analysis.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add pedrohcgs/claude-code-my-workflow --skill data-analysis -a claude-code
Open on GitHub

What data-analysis does

Before writing analysis code, the skill reports what it found in the dataset and which project rules it read. It then creates numbered scripts under scripts/R/, checks variables and missing values, makes diagnostic plots, and runs regressions. Panel data uses fixest; cross-sectional analysis uses lm or glm.

Outputs go to output/, including tables, figures, and RDS objects. Tables can use modelsummary or stargazer, while figures use ggplot2; the generated script is also sent to the r-reviewer agent. Each regression specification, including failed or dropped runs, is appended to quality_reports/spec-ledger.md; earlier rows must remain unchanged. The project needs .claude/rules/r-code-conventions.md. If the dataset cannot be read, the workflow stops and asks the user to resolve the input problem.

What it helps with

  • inspect dataset variables and missing values
  • create diagnostic plots and summary statistics
  • estimate regressions for a research question
  • export tables and figures for publication
  • log every attempted regression specification

Example prompts for the agent

  • Analyze data/county_panel.csv and report missing values and key distributions.
  • Estimate the effect of education on wages with state fixed effects.
  • Run a regression on data/study.rds and prepare publication-ready tables.

How to install data-analysis

1Skills CLI (Vercel)

npx skills add pedrohcgs/claude-code-my-workflow --skill data-analysis -a claude-code

2Manually: put the files in place

~/.claude/skills/data-analysis/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/data-analysis/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about data-analysis

How do I install data-analysis in Claude Code?

Run npx skills add pedrohcgs/claude-code-my-workflow --skill data-analysis -a claude-code. The skill file is installed at ~/.claude/skills/data-analysis/SKILL.md.

What does the data-analysis skill do?

It runs an R workflow that inspects a dataset, creates diagnostic outputs, estimates regressions, and saves tables, figures, and RDS files.

What goes into the specification ledger?

Every specification estimated during the analysis is appended to quality_reports/spec-ledger.md, including failed and dropped runs. Existing rows stay intact; corrections are added as new rows.

Source text

SKILL.md · MIT
---
name: data-analysis
description: End-to-end R data analysis pipeline — exploration → cleaning → regression → publication-ready tables and figures. Use when user says "analyze this dataset", "run a regression on X", "explore this CSV", "full analysis workflow", "get me summary stats and a regression", or points at a `.csv`/`.rds`/`.dta` and asks for empirical results. Produces numbered R scripts in `scripts/R/` and outputs to `output/`.
argument-hint: "[dataset path or description of analysis goal]"
allowed-tools: ["Read", "Grep", "Glob", "Write", "Edit", "Bash", "Agent", "Task", "Monitor"]
---

# Data Analysis Workflow

Run an end-to-end data analysis in R: load, explore, analyze, and produce publication-ready output.

**Input:** `$ARGUMENTS` — a dataset path (e.g., `data/county_panel.csv`) or a description of the analysis goal (e.g., "regress wages on education with state fixed effects using CPS data").

---

## Constraints

- **Follow R code conventions** in `.claude/rules/r-code-conventions.md`
- **Save all scripts** to `scripts/R/` with descriptive names
- **Save all outputs** (figures, tables, RDS) to `output/`
- **Use `saveRDS()`** for every computed object — Quarto slides may need them
- **Use project theme** for all figures (check for custom theme in `.claude/rules/`)
- **Run r-reviewer** on the generated script before presenting results

---

## Workflow Phases

### Phase 0: Pre-Flight Report

**Before writing any analysis code, produce a Pre-Flight Report** showing you read the inputs. This prevents the common failure mode where the agent hallucinates variable names or skips project conventions.

Output block (in your response to the user, before Phase 1):

```markdown
## Pre-Flight Report

**Dataset:** [path]
- Variables found: [list from head()/names()]
- Rows: [count]
- Key types: [e.g., "outcome=numeric, treatment=binary, state=factor"]
- Missing-data summary: [% missing per key var]

**Project conventions read:**
- `.claude/rules/r-code-conventions.md` — [one-line summary of most relevant rule]
- `.claude/rules/content-invariants.md` — [INV-9, INV-10, INV-11, INV-12 applicable]

**Task interpretation:** [one sentence restating what the user asked for]

**Plan:** [3-5 bullet outline of the R script structure]
```

If any input cannot be read (missing file, unreadable format), stop and ask the user before proceeding.

### Phase 1: Setup and Data Loading

1. Create R script with proper header (title, author, purpose, inputs, outputs)
2. Load required packages at top (`library()`, never `require()`)
3. Set seed once at top in YYYYMMDD format (per `r-code-conventions.md`), e.g. `set.seed(20260415)` (INV-9)
4. Load and inspect the dataset

### Phase 2: Exploratory Data Analysis

Generate diagnostic outputs:
- **Summary statistics:** `summary()`, missingness rates, variable types
- **Distributions:** Histograms for key continuous variables
- **Relationships:** Scatter plots, correlation matrices
- **Time patterns:** If panel data, plot trends over time
- **Group comparisons:** If treatment/control, compare pre-treatment means

Save all diagnostic figures to `output/diagnostics/`.

### Phase 3: Main Analysis

Based on the research question:
- **Regression analysis:** Use `fixest` for panel data, `lm`/`glm` for cross-section
- **Standard errors:** Cluster at the appropriate level (document why)
- **Multiple specifications:** Start simple, progressively add controls
- **Effect sizes:** Report standardized effects alongside raw coefficients

#### Specification ledger — every run, kept or not

Every specification estimated in this phase, including the ones dropped and the ones that failed, gets one row appended to `quality_reports/spec-ledger.md` as it is run. It is the record a referee's "what else did you try?" deserves: it keeps the search visible rather than preventing it, and it records specifications without advising which to run.

- **Append only.** Never edit or delete a row; a correction is a new row. A commit that changes a committed row fails the repo-hygiene gate.
- **Status** is `kept`, `dropped` or `failed`; **Why** says why for anything not kept.
- **Estimate** is optional. On restricted data, leave it empty until the number has cleared disclosure review ([`confidential-data.md`](../../rules/confidential-data.md)).
- Escape a `|` inside a formula as `\|`, or the table breaks. A specification containing a backtick (a Stata local macro such as `` `x' ``) goes in a double-backtick span: ``` `` reg y `controls' `` ```.

```bash
LEDGER=quality_reports/spec-ledger.md
[ -f "$LEDGER" ] || printf '%s\n' "# Specification ledger" "" \
  "Every specification estimated, kept or not, one row each, appended as it is run. Never edit a past row; a correction is a new row." "" \
  "| Date | Commit | Script:line | Outcome | Specification | Sample | Status | Why | Estimate |" \
  "|---|---|---|---|---|---|---|---|---|" > "$LEDGER"
if REV=$(git rev-parse --short HEAD 2>/dev/null); then       # -dirty = anything uncommitted outside quality_reports/, untracked files included
  [ -n "$(git status --porcelain -- . ':(exclude)quality_reports' 2>/dev/null)" ] && REV="$REV-dirty"
else
  REV="no-commit"
fi
printf '| %s | %s ' "$(date +%F)" "$REV" >> "$LEDGER"          # one printf + one heredoc per specification
cat >> "$LEDGER" <<'EOF'
| scripts/R/03_analyze.R:42 | log_wage | `feols(log_wage ~ treat + age \| id + year, cluster = ~id)` | panel 2010-2019 | kept | main specification | 0.082 (0.021) |
EOF
```

### Phase 4: Publication-Ready Output

**Tables:**
- Use `modelsummary` for regression tables (preferred) or `stargazer`
- Include all standard elements: coefficients, SEs, significance stars, N, R-squared
- Export as `.tex` for LaTeX inclusion and `.html` for quick viewing

**Figures:**
- Use `ggplot2` with project theme
- Set `bg = "transparent"` for Beamer compatibility
- Include proper axis labels (sentence case, units)
- Export with explicit dimensions: `ggsave(width = X, height = Y)`
- Save as both `.pdf` and `.png`

### Phase 5: Save and Review

1. `saveRDS()` for all key objects (regression results, summary tables, processed data)
2. Create `output/` subdirectories as needed with `dir.create(..., recursive = TRUE)`
3. Run the r-reviewer agent on the generated script:

```
Delegate to the r-reviewer agent:
"Review the script at scripts/R/[script_name].R"
```

4. Address any Critical or High issues from the review.

---

## Script Structure

Follow this template:

```r
# ============================================================
# [Descriptive Title]
# Author: [from project context]
# Purpose: [What this script does]
# Inputs: [Data files]
# Outputs: [Figures, tables, RDS files]
# ============================================================

# 0. Setup ----
library(tidyverse)
library(fixest)
library(modelsummary)

set.seed(20260415)  # YYYYMMDD per r-code-conventions.md (INV-9)

dir.create("output/analysis", recursive = TRUE, showWarnings = FALSE)

# 1. Data Loading ----
# [Load and clean data]

# 2. Exploratory Analysis ----
# [Summary stats, diagnostic plots]

# 3. Main Analysis ----
# [Regressions, estimation]

# 4. Tables and Figures ----
# [Publication-ready output]

# 5. Export ----
# [saveRDS for all objects, ggsave for all figures]
```

---

## Important

- **Reproduce, don't guess.** If the user specifies a regression, run exactly that.
- **Show your work.** Print summary statistics before jumping to regression.
- **Check for issues.** Look for multicollinearity, outliers, perfect prediction.
- **Use relative paths.** All paths relative to repository root.
- **No hardcoded values.** Use variables for sample restrictions, date ranges, etc.

## Long-running fits: use the Monitor tool (Apr 2026)

For regressions, simulations, or bootstrap loops that take more than a couple of minutes, launch via Bash with `run_in_background: true` and then use Anthropic's **Monitor tool** to stream R stdout into the conversation in real time. Pattern:

1. Background-launch with Bash `run_in_background: true`, sending all output to a log: `mkdir -p output && Rscript scripts/R/03_analyze.R > output/03_analyze.log 2>&1`. The background job notifies you by itself when the process exits.
2. Start Monitor with a command that follows that log and filters for milestones and failures, e.g. `tail -f output/03_analyze.log | grep --line-buffered -E "Coefficients table written|Error|Execution halted"`. Monitor has no job-id parameter: the stdout of its own `command` is the event stream. `tail -f` never exits, so set `timeout_ms` above the expected runtime (or `persistent: true`) and stop the monitor with TaskStop once the job finishes.
3. Continue or course-correct based on what the stream reveals.

This avoids the polling-loop anti-pattern (`sleep 30; check; sleep 30; check`) and avoids burning cache on idle waits. Especially useful when paired with the [Cost-Conscious Parallelism](https://psantanna.com/claude-code-my-workflow/workflow-guide.html#cost-conscious-parallelism) section of the guide.

© pedrohcgs · MIT · pedrohcgs/claude-code-my-workflow

Similar skills

All skills for Data and databases →

data-analysis by other authors comes first.

data-analysis bytedance This skill inspects uploaded Excel and CSV files, runs SQL against them through DuckDB, and exports the results. CX Codex +1 3,600installs data-analysis claude-office-skills Reads Excel and CSV files, runs the statistics, spots patterns, and suggests charts and formulas. Useful when you need to make sense of a table fast. CX Codex +1 7,900installs data-analysis lingzhi227 Writes statistical analysis code for a paper: picks a test that fits the data and reports p-values, effect sizes and confidence intervals. CX Codex +1 2,000installs data-analysis akillness A skill that walks the agent through dataset analysis: quality checks first, then the right method, then findings with caveats. Useful when you have an export and need an answer, not just code. CX Codex +1 598installs xlsx official anthropics Creates, reads, edits, and converts spreadsheet files. Use it when the requested deliverable is an Excel workbook or another tabular file. 187,223installs google-agents-cli-observability official Google This skill guides you through tracing and monitoring AI agents, including ADK agents. Use it when you need to inspect agent execution or monitor a deployed agent. CX Codex +1 511,300installs caveman-evidence-review JuliusBrussee A read-only skill reviews Caveman Cloud evidence on LLM spend, traces, and routing. Use it to see where a project’s model budget goes. CX Codex +1 104,500installs migration JuliusBrussee Enforces reversible, compatibility-safe transitions for schema, data, and API updates. Useful whenever data loss or rollout downtime is unacceptable. CX Codex +1 103,900installs performance-optimization addyosmani An agent skill that measures before it changes code: Core Web Vitals budgets, N+1 queries, missing indexes and slow endpoints. CX Codex +1 65,200installs supabase official supabase Guides the agent through database configuration and strict RLS policies in Supabase. CX Codex GP ChatGPT 8installs

From the same set56

devils-advocate Challenges lecture decks from a skeptical student's perspective with five to seven targeted critiques on narrative flow and cognitive load. CX Codex +1 ★ 1,671repo stars deploy This skill renders Quarto slides as HTML and syncs the output to docs/ for GitHub Pages. Use it when edited slides are ready to publish. CX Codex +1 ★ 1,671repo stars deep-audit Splits a theory, proof, paper or codebase into components, fans out independent skeptics and fixes every confirmed defect. Built for when one review pass is not enough. CX Codex +1 ★ 1,671repo stars data-management-plan Generates funder-compliant Data Management Plans for NSF, NIH, ERC, and Horizon Europe proposals. Useful when drafting grant applications or planning project data workflows. CX Codex +1 ★ 1,671repo stars credible-claims A skill for delegated and AI-assisted research: write the brief before the run, the claim record after. Keeps fast execution from passing as credible evidence. CX Codex +1 ★ 1,671repo stars create-lecture Scaffolds LaTeX Beamer lecture decks from research papers, enforcing consistent math notation and strict pedagogical invariants. CX Codex +1 ★ 1,671repo stars context-status This skill checks estimated context use, the active plan, and session preservation. Use it to see what may remain after compaction. CX Codex +1 ★ 1,671repo stars compress-session This skill turns the current conversation into a structured note with decisions, open questions and next steps before auto-compaction eats the context. CX Codex +1 ★ 1,671repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor