data-analysis — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited data-analysis (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Part of Agent Skills™ by googleadsagent.ai™
Data Analysis provides a structured framework for statistical analysis using pandas, numpy, and scipy, with visualization through matplotlib, seaborn, and plotly. The agent follows a rigorous pipeline from data ingestion and cleaning through exploratory analysis, statistical testing, and publication-quality visualization, ensuring reproducibility at every step.
Scientific data analysis is not exploratory coding—it is a disciplined process where every transformation is justified, every statistical test has verified assumptions, and every visualization accurately represents the underlying data. This skill enforces that discipline by requiring the agent to document data provenance, validate distributions before applying parametric tests, and report effect sizes alongside p-values.
The visualization layer produces figures suitable for journal submission: proper axis labels with units, colorblind-safe palettes, appropriate figure sizes for single or double-column layouts, and vector output formats (SVG, PDF). Interactive plotly visualizations are generated for exploratory work; static matplotlib/seaborn figures for publication.
graph TD
A[Raw Data] --> B[Ingest + Validate Schema]
B --> C[Clean: Missing Values, Outliers, Types]
C --> D[Exploratory Data Analysis]
D --> E[Distribution Assessment]
E --> F{Parametric Assumptions Met?}
F -->|Yes| G[Parametric Tests]
F -->|No| H[Non-Parametric Tests]
G --> I[Effect Size + Confidence Intervals]
H --> I
I --> J[Publication Visualization]
J --> K[Reproducible Report]The pipeline enforces assumption checking before test selection. Parametric tests (t-test, ANOVA) require normality and homoscedasticity; when assumptions fail, the agent automatically selects non-parametric alternatives (Mann-Whitney, Kruskal-Wallis).
import pandas as pd
import numpy as np
from scipy import stats
import seaborn as sns
import matplotlib.pyplot as plt
def analysis_pipeline(filepath: str) -> dict:
df = pd.read_csv(filepath)
report = {
"shape": df.shape,
"missing": df.isnull().sum().to_dict(),
"dtypes": df.dtypes.astype(str).to_dict(),
}
numeric_cols = df.select_dtypes(include=[np.number]).columns
for col in numeric_cols:
stat, p = stats.shapiro(df[col].dropna()[:5000])
report[f"{col}_normality"] = {"statistic": stat, "p_value": p, "normal": p > 0.05}
return report
def compare_groups(df: pd.DataFrame, value_col: str, group_col: str) -> dict:
groups = [g[value_col].dropna() for _, g in df.groupby(group_col)]
normality_ok = all(stats.shapiro(g[:5000]).pvalue > 0.05 for g in groups)
_, levene_p = stats.levene(*groups)
homoscedastic = levene_p > 0.05
if normality_ok and homoscedastic:
stat, p = stats.f_oneway(*groups) if len(groups) > 2 else stats.ttest_ind(*groups)
test_name = "ANOVA" if len(groups) > 2 else "t-test"
else:
stat, p = stats.kruskal(*groups)
test_name = "Kruskal-Wallis"
effect = compute_cohens_d(groups[0], groups[1]) if len(groups) == 2 else compute_eta_squared(groups)
return {"test": test_name, "statistic": stat, "p_value": p, "effect_size": effect}
def publication_figure(df: pd.DataFrame, x: str, y: str, output: str):
fig, ax = plt.subplots(figsize=(3.5, 3)) # Single-column journal width
sns.boxplot(data=df, x=x, y=y, palette="colorblind", ax=ax)
ax.set_xlabel(x.replace("_", " ").title())
ax.set_ylabel(y.replace("_", " ").title())
sns.despine()
fig.tight_layout()
fig.savefig(output, dpi=300, bbox_inches="tight")
plt.close(fig)colorblind, viridis) for all visualizations| Platform | Support | Notes |
|---|---|---|
| Cursor | Full | Jupyter + Python execution |
| VS Code | Full | Jupyter notebook support |
| Windsurf | Full | Python environment |
| Claude Code | Full | Script execution |
| Cline | Full | Data analysis workflows |
| aider | Partial | Code generation only |
data-analysis statistics pandas scipy visualization matplotlib seaborn hypothesis-testing publication-figures
© 2026 googleadsagent.ai™ | Agent Skills™ | MIT License
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.