Install any skill in seconds. Free to start, no credit card required.
Get Started Free →AI-powered data analysis for Empathy Ledger - themes, quotes, story suggestions, transcript analysis.
.claude/skills/aiskillstore-data-analysis/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 89% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 43% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 17% | 0% |
Python (Pandas):
pythonimport pandas as pd import numpy as np # Load CSV df = pd.read_csv('data.csv') # Basic info print(df.info()) print(df.describe()) print(df.head(10)) # Check missing values print(df.isnull().sum()) # Data types print(df.dtypes)
SQL:
sql-- Inspect table schema DESCRIBE table_name; -- Sample data SELECT * FROM table_name LIMIT 10; -- Basic stats SELECT COUNT(*) as total_rows, COUNT(DISTINCT column_name) as unique_values, MIN(numeric_column) as min_val, MAX(numeric_column) as max_val, AVG(numeric_column) as avg_val FROM table_name;
python# Handle missing values df['column'].fillna(df['column'].mean(), inplace=True) df.dropna(subset=['required_column'], inplace=True) # Remove duplicates df.drop_duplicates(inplace=True) # Type conversions df['date'] = pd.to_datetime(df['date']) df['category'] = df['category'].astype('category') # Remove outliers (IQR method) Q1 = df['value'].quantile(0.25) Q3 = df['value'].quantile(0.75) IQR = Q3 - Q1 df = df[(df['value'] >= Q1 - 1.5*IQR) & (df['value'] <= Q3 + 1.5*IQR)]
python# Descriptive statistics print(df['numeric_column'].describe()) # Grouped analysis grouped = df.groupby('category').agg({ 'value': ['mean', 'sum', 'count'], 'other': 'nunique' }) print(grouped) # Correlation correlation = df[['col1', 'col2', 'col3']].corr() print(correlation) # Pivot table pivot = pd.pivot_table(df, values='sales', index='region', columns='month', aggfunc='sum' )
pythonimport matplotlib.pyplot as plt import seaborn as sns # Histogram plt.figure(figsize=(10, 6)) df['value'].hist(bins=30) plt.title('Distribution of Values') plt.savefig('histogram.png') # Boxplot plt.figure(figsize=(10, 6)) sns.boxplot(x='category', y='value', data=df) plt.title('Value by Category') plt.savefig('boxplot.png') # Heatmap (correlation) plt.figure(figsize=(10, 8)) sns.heatmap(correlation, annot=True, cmap='coolwarm') plt.title('Correlation Matrix') plt.savefig('heatmap.png') # Time series plt.figure(figsize=(12, 6)) df.groupby('date')['value'].sum().plot() plt.title('Time Series of Values') plt.savefig('timeseries.png')
python# Top/bottom analysis top_10 = df.nlargest(10, 'value') bottom_10 = df.nsmallest(10, 'value') # Trend analysis df['month'] = df['date'].dt.to_period('M') monthly_trend = df.groupby('month')['value'].sum() growth = monthly_trend.pct_change() * 100 # Segment analysis segments = df.groupby('segment').agg({ 'revenue': 'sum', 'customers': 'nunique', 'orders': 'count' }) segments['avg_order_value'] = segments['revenue'] / segments['orders']
markdown# Data Analysis Report ## 1. Dataset overview - Dataset: [name] - Records: X,XXX - Columns: XX - Date range: YYYY-MM-DD ~ YYYY-MM-DD ## 2. Key findings - Insight 1 - Insight 2 - Insight 3 ## 3. Statistical summary | Metric | Value | |------|-----| | Mean | X.XX | | Median | X.XX | | Std dev | X.XX | ## 4. Recommendations 1. [Recommendation 1] 2. [Recommendation 2]
<!-- Add example content here -->
<!-- Add advanced example content here -->
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 26,625 | 11,613 | -56% | 1 | 1 | 0% | 5,631 | 3,777 | -33% | 0 | 0 | — |
case-02 | fail→fail | 15,902 | 14,357 | -10% | 1 | 1 | 0% | 2,958 | 4,293 | +45% | 0 | 0 | — |
case-03 | fail→fail | 27,350 | 22,174 | -19% | 1 | 1 | 0% | 5,155 | 5,640 | +9% | 0 | 0 | — |
case-04 | pass→pass | 7,917 | 5,285 | -33% | 1 | 1 | 0% | 1,651 | 2,354 | +43% | 0 | 0 | — |
case-05 | pass→pass | 13,040 | 7,685 | -41% | 1 | 1 | 0% | 2,297 | 2,695 | +17% | 0 | 0 | — |
case-06 | fail→pass | 9,018 | 6,556 | -27% | 1 | 1 | 0% | 1,760 | 2,525 | +43% | 0 | 0 | — |
case-07 | fail→fail | 14,454 | 10,648 | -26% | 1 | 1 | 0% | 2,569 | 3,443 | +34% | 0 | 0 | — |
case-08 | fail→pass | 7,062 | 6,735 | -5% | 1 | 1 | 0% | 1,451 | 2,743 | +89% | 0 | 0 | — |
case-09 | pass→pass | 10,245 | 8,070 | -21% | 1 | 1 | 0% | 2,061 | 3,024 | +47% | 0 | 0 | — |
case-10 | pass→pass | 11,880 | 7,581 | -36% | 1 | 1 | 0% | 2,298 | 2,777 | +21% | 0 | 0 | — |
case-21 | pass→pass | 10,812 | 7,569 | -30% | 1 | 1 | 0% | 2,138 | 2,765 | +29% | 0 | 0 | — |
case-11 | pass→pass | 8,429 | 6,574 | -22% | 1 | 1 | 0% | 1,626 | 2,670 | +64% | 0 | 0 | — |
case-12 | pass→pass | 7,731 | 4,032 | -48% | 1 | 1 | 0% | 1,468 | 2,165 | +47% | 0 | 0 | — |
case-13 | pass→pass | 2,789 | 3,560 | +28% | 1 | 1 | 0% | 556 | 2,020 | +263% | 0 | 0 | — |
case-14 | pass→pass | 12,015 | 17,387 | +45% | 1 | 1 | 0% | 2,262 | 3,706 | +64% | 0 | 0 | — |
case-15 | fail→fail | 14,704 | 9,772 | -34% | 1 | 1 | 0% | 2,331 | 3,065 | +31% | 0 | 0 | — |
case-16 | pass→pass | 7,700 | 6,953 | -10% | 1 | 1 | 0% | 1,514 | 2,784 | +84% | 0 | 0 | — |
case-17 | fail→fail | 7,166 | 4,837 | -33% | 1 | 1 | 0% | 1,488 | 2,382 | +60% | 0 | 0 | — |
case-18 | pass→pass | 11,720 | 4,292 | -63% | 1 | 1 | 0% | 2,059 | 2,072 | +1% | 0 | 0 | — |
case-19 | fail→fail | 10,588 | 5,183 | -51% | 1 | 1 | 0% | 2,172 | 2,374 | +9% | 0 | 0 | — |
case-20 | pass→pass | 11,928 | 13,238 | +11% | 1 | 1 | 0% | 2,097 | 4,072 | +94% | 0 | 0 | — |
case-22 | pass→pass | 16,660 | 42,690 | +156% | 1 | 1 | 0% | 2,352 | 3,653 | +55% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/22/2026 | +9% |
Other measured skills in the registry, with their headline benchmark lift.