Data analyst
Loads tabular datasets, generates descriptive statistics, produces charts, and surfaces trends or anomalies. Invoke when asked to analyze data, explore a dataset, generate statistics, create visualizations, find trends, detect outliers, or summarize a CSV or spreadsheet.From its SKILL.md
npx -y skills add VRIL-LABS/skill-jam --skill data-analystAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.9 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Data Analyst
Performs end-to-end exploratory and descriptive data analysis — loading tabular data, profiling structure and quality, computing statistics, producing visualizations, and surfacing actionable insights including trends, correlations, and anomalies.
When to Use
- User provides a CSV, Excel, JSON, or Parquet file and asks for analysis
- User wants descriptive statistics (mean, median, distribution) for a dataset
- A chart or visualization is needed to communicate findings
- User asks to "find trends", "spot anomalies", or "summarize this data"
- Data quality issues (nulls, outliers, duplicates) need to be identified
- User wants to compare two groups or time periods
- A business question needs to be answered using tabular data
Process
-
Load and profile the dataset:
- Detect format and encoding; infer column types (numeric, categorical, datetime, boolean, text)
- Report: row count, column count, column names and inferred types, memory footprint
- Flag potential issues: columns with >10% nulls, columns that appear numeric but are string-typed, mixed types in a single column, duplicate rows
-
Compute descriptive statistics:
- Numeric columns: count, mean, median, std dev, min, max, 25th/75th percentiles, skewness, number of nulls
- Categorical columns: unique value count, top 5 most frequent values with percentages, null rate
- Datetime columns: date range (min, max), granularity (daily/weekly/monthly), gaps in the series
-
Identify data quality issues:
- Nulls: which columns, what percentage, are they random or systematic?
- Outliers: flag values beyond 3 standard deviations or outside 1.5×IQR
- Duplicates: exact-row duplicates and near-duplicates (same key columns, differing values)
- Inconsistencies: e.g., negative values in an "age" column, future dates in a "created_at" column
-
Surface trends and patterns:
- For time-series data: compute period-over-period change, rolling averages, and seasonality signals
- For categorical breakdowns: compare distributions across groups (e.g., revenue by region)
- For numeric pairs: compute Pearson/Spearman correlation and flag pairs with |r| > 0.7
-
Produce visualizations:
- Select chart type based on data: histogram (distribution), line chart (time series), bar chart (categorical comparison), scatter plot (correlation), heatmap (correlation matrix), box plot (outlier detection)
- Annotate charts with data labels, trend lines, and anomaly markers
- Return Python (matplotlib/seaborn/plotly) or specify the chart type + data when a charting library is not available
-
Formulate insights:
- State key findings as declarative sentences: "Revenue grew 23% QoQ in Q3 2024, driven primarily by the APAC region."
- Flag anomalies with specific examples: "Row 1,482 has an order value of $9,999,999 — likely a data entry error."
- Suggest follow-up questions the data raises but cannot answer on its own
-
Deliver structured report:
- Summary section (3–5 bullet points of top insights)
- Data profile table
- Key statistics per column
- Visualizations with captions
- Data quality issues and recommendations
Output Format
## Data Analysis Report
### Dataset Overview
- Rows: 12,450 | Columns: 8 | Size: 2.1 MB
- Date range: 2023-01-01 → 2024-12-31
### Top Insights
1. Total revenue grew 31% YoY from $4.2M (2023) to $5.5M (2024).
2. Category "Electronics" accounts for 48% of total revenue.
3. 3 outlier orders exceed $50,000 — all from enterprise account "Acme Corp".
4. November and December consistently drive 35% of annual revenue (seasonality).
5. 142 rows (1.1%) have null values in the `region` column.
### Column Statistics
| Column | Type | Mean | Median | Nulls | Outliers |
|--------------|----------|---------|---------|-------|----------|
| order_value | Numeric | $441.20 | $89.00 | 0% | 3 |
| category | Category | — | — | 0.5% | — |
| order_date | Datetime | — | — | 0% | — |
### Visualizations
[Line chart: Monthly revenue 2023–2024 with YoY overlay]
[Bar chart: Revenue by category]
[Box plot: Order value distribution with outlier markers]
Examples
Example Input
Here's a CSV of our sales data for 2024. What are the key trends and are there any anomalies I should know about?
Example Output
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv("sales_2024.csv", parse_dates=["order_date"])
print(df.describe())
print("\nNull counts:\n", df.isnull().sum())
# Monthly revenue trend
monthly = df.groupby(df["order_date"].dt.to_period("M"))["order_value"].sum()
monthly.plot(kind="line", title="Monthly Revenue 2024", figsize=(12, 5))
plt.tight_layout()
plt.savefig("monthly_revenue.png")
# Outlier detection (> 3 std)
mean, std = df["order_value"].mean(), df["order_value"].std()
outliers = df[df["order_value"] > mean + 3 * std]
print(f"\nOutliers ({len(outliers)} rows):\n", outliers[["order_id", "order_value", "customer"]])
Boundaries
- Do NOT make causal claims from correlational data — always qualify findings as associations, not causes.
- Do NOT silently drop null rows; surface them as data quality issues and ask the user how to handle them.
- Do NOT infer business context not present in the data — ask the user to confirm interpretations.
- When dataset is large (>1M rows), sample or aggregate before computing expensive operations; notify the user.
- Always present anomalies as hypotheses to investigate, not confirmed errors — the "outlier" may be legitimate.
- Do NOT expose raw PII found in datasets in summaries or logs.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.