auto-eda
Skill3 starsChanged 9 months agoMITView on GitHub
Generates a narrative exploratory data analysis notebook from a dataset file. Use when the user wants to explore, analyze, profile, or understand a dataset, or mentions EDA, data exploration, or data profiling.
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 8 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
Check for required dependencies: pandas, matplotlib, seaborn, scipy.
- Distinctive: line 21
If any are missing, ask the user before installing.
- Distinctive: line 26
Before generating the notebook, you MUST load and examine the data to write informed narrative:
- Distinctive: line 51
Use the output to inform ALL narrative sections below.
- Distinctive: line 55
Follow notebook-format.md for structure.
- Distinctive: line 86
Write 2-3 paragraphs as an analyst briefing a stakeholder:
- Very specific: line 128
Use plt.tight_layout() and plt.show() after every plot.
- Very specific: line 144
If sklearn is available, IsolationForest on numeric columns.
- Very specific: line 164
Write to ./notebooks/eda_{dataset_name}_{YYYY-MM-DD}.ipynb where dataset_name is derived from the filename (without extension).
- Very specific: line 166
Create the ./notebooks/ directory if it doesn't exist.
- Distinctive: line 176
READ the data first (Step 2) before writing any narrative.
- Very specific: line 180
Use %matplotlib inline in the setup cell.
- Distinctive: line 182
All code must be self-contained and runnable standalone.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Auto EDA
Input
$ARGUMENTS is the path to a dataset file. If not provided, ask the user for the file path.
Supported formats: CSV, Parquet, Excel (.xlsx/.xls), JSON.
Step 1: Detect Environment
Follow environment-detection.md to:
- Detect the package manager.
- Check for required dependencies: pandas, matplotlib, seaborn, scipy.
- If any are missing, ask the user before installing.
- Detect whether to use pandas or polars.
Step 2: Read the Data
Before generating the notebook, you MUST load and examine the data to write informed narrative:
python -c "
import pandas as pd
df = pd.read_csv('$ARGUMENTS') # adjust reader for file type
print('Shape:', df.shape)
print('Columns:', list(df.columns))
print('Dtypes:')
print(df.dtypes)
print('Describe:')
print(df.describe())
print('Nulls:')
print(df.isnull().sum())
print('Head:')
print(df.head())
"Adjust the reader based on file extension:
.csv→pd.read_csv().parquet→pd.read_parquet().xlsx/.xls→pd.read_excel().json→pd.read_json()
Use the output to inform ALL narrative sections below. The executive summary and commentary MUST reference specific column names, values, and findings from this data — never write generic boilerplate.
Step 3: Generate the Notebook
Follow notebook-format.md for structure. Build the notebook with these sections:
Section 1: Header (markdown)
# Exploratory Data Analysis: {dataset_name}
*Generated on {YYYY-MM-DD} by auto-eda skill*
*Source: `{file_path}`*Section 2: Setup (code)
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline
sns.set_style('whitegrid')
plt.rcParams['figure.figsize'] = (10, 6)
df = pd.read_csv('{file_path}') # adjust reader for file type
print(f"Dataset: {df.shape[0]} rows, {df.shape[1]} columns")Section 3: Executive Summary (markdown)
Write 2-3 paragraphs as an analyst briefing a stakeholder:
- What the dataset contains (rows, columns, what it represents).
- Key findings: notable distributions, correlations, anomalies.
- Potential issues: missing data, outliers, data quality concerns.
This section references SPECIFIC column names, values, correlations, and anomalies you found in Step 2. Never be generic.
Section 4: Data Overview (code + markdown)
Code cells showing:
df.shape,df.dtypesdf.info()df.describe(include='all')df.head(),df.tail()- Memory usage:
df.memory_usage(deep=True).sum() / 1024**2MB
Markdown cell summarizing key observations about the structure.
Section 5: Missing Data Analysis (code + markdown)
Code cells:
- Percentage missing per column.
- Bar chart of missing percentages.
sns.heatmap()of missingness correlation if multiple columns have nulls.
Markdown cell with:
- Hypothesis about missingness mechanism (MCAR/MAR/MNAR based on patterns).
- Impact assessment for downstream analysis.
Section 6: Distributions (code + markdown)
For each numeric column:
- Histogram with KDE overlay:
sns.histplot(df[col], kde=True)
For each categorical column (up to 20 unique values):
- Value counts bar chart.
Markdown commentary flagging:
- Skewness > 1 (right-skewed) or < -1 (left-skewed).
- Bimodal distributions.
- Zero-inflation.
Use plt.tight_layout() and plt.show() after every plot.
Section 7: Relationships (code + markdown)
Code cells:
- Correlation matrix heatmap:
sns.heatmap(df.select_dtypes(include='number').corr(), annot=True, cmap='coolwarm') - Top 5 correlated pairs with scatter plots.
- Categorical vs numeric box plots for top associations.
Markdown cell with hypotheses about relationships found.
Section 8: Anomaly Detection (code + markdown)
Code cells:
- IQR method: flag values outside Q1 - 1.5IQR or Q3 + 1.5IQR.
- Z-score flagging: |z| > 3.
- If sklearn is available,
IsolationForeston numeric columns. - Summary table: outliers found per column.
Markdown cell summarizing anomaly findings.
Section 9: Feature Engineering Suggestions (markdown)
Based on findings, suggest:
- Log transforms for skewed features.
- Interaction terms for correlated pairs.
- Binning for high-cardinality categoricals.
- Datetime extraction if date columns found.
- Encoding suggestions for categoricals.
Section 10: Next Steps (markdown)
Recommended follow-up analyses based on what was found.
Step 4: Write the Notebook
Write to ./notebooks/eda_{dataset_name}_{YYYY-MM-DD}.ipynb where dataset_name is derived from the filename (without extension).
Create the ./notebooks/ directory if it doesn't exist.
Step 5: Report
Tell the user:
- Where the notebook was saved.
- Summarize 3-5 key findings from the analysis.
Important Rules
- READ the data first (Step 2) before writing any narrative. Never write generic content.
- The executive summary MUST reference specific column names, values, and findings.
- Each section should have markdown cells with analysis commentary between code cells.
- Use
plt.tight_layout()andplt.show()after every plot. - Use
%matplotlib inlinein the setup cell. - For large datasets (>100k rows): sample for visualizations with a note explaining the sampling.
- All code must be self-contained and runnable standalone.
In this repository4 other files it gives its agents.
- dataset-doctorSkill
- experiment-trackerSkill
- paper-to-codeSkill
- sql-optimizerSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

