Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Systematic experimental results analysis workflow for ML/AI research papers. Connects experimental data to publication-ready Results sections with statistical validation, visualizations, and quality checks. Triggers on "analyze experimental results", "generate results section", "statistical analysis of experiments", "compare model performance", "create results visualization".
.claude/skills/catlog22-scholar-experiment/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 113% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 103% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 126% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 324% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 144% | 0% |
A systematic workflow for analyzing ML/AI experimental results and generating publication-ready Results sections. Transforms raw experimental data into validated statistical analyses, publication-quality visualizations, and well-structured paper content.
.workflow/codebase/ARCHITECTURE.md exists, read for project contextmaestro load --type spec --category coding — load coding conventionsmaestro search "academic writing research paper" --json — top 5 entries as prior context scholar-experiment
|
┌─────────────────────┼─────────────────────┐
| | |
[User Input] [Experiment Context] [Preferences]
| | |
└─────────┬───────────┘ |
v |
┌──────────────────────────┐ |
│ Phase 1: Data Loading │ <─ preferences ───────┘
│ Load, validate, inspect │
└────────────┬─────────────┘
│ cleanedData, dataProfile
v
┌──────────────────────────┐
│ Phase 2: Statistical │
│ Analysis & Testing │
└────────────┬─────────────┘
│ statisticalResults
v
┌──────────────────────────┐
│ Phase 3: Visualization │
│ Plots, charts, tables │
└────────────┬─────────────┘
│ figureSpecs, tableSpecs
v
┌──────────────────────────┐
│ Phase 4: Results Writing│
│ Draft Results section │
└────────────┬─────────────┘
│ resultsDraft
v
┌──────────────────────────┐
│ Phase 5: Quality Check │
│ Validate & verify │
└──────────────────────────┘
│
v
[Output Files]
- analysis-report.md
- results-draft.md
- visualization-specs.mdThis workflow requires statistical computing capabilities. Recommended implementations:
Python Stack (recommended for ML/AI research):
pythonimport numpy as np # Numerical computing import pandas as pd # Data manipulation import scipy.stats as stats # Statistical tests import matplotlib.pyplot as plt # Visualization import seaborn as sns # Statistical visualization from statsmodels.stats import multitest # Multiple comparison corrections
R Stack (alternative for advanced statistics):
rlibrary(tidyverse) # Data manipulation and visualization library(stats) # Statistical tests library(effsize) # Effect size calculations library(multcomp) # Multiple comparisons
Minimum Requirements:
Note: If these libraries are not available, the workflow will guide you to use online statistical calculators or manual computation, but automated analysis is strongly recommended for reproducibility.
Before dispatching to phases, collect analysis preferences:
javascriptconst prefResponse = AskUserQuestion({ question: "How would you like to configure the analysis?", options: [ { label: "Analysis Type", description: "Select the type of analysis", choices: [ { value: "full", label: "Full Analysis", description: "Complete pipeline: stats + visualization + writing" }, { value: "comparison", label: "Model Comparison", description: "Focus on comparing multiple models/methods" }, { value: "ablation", label: "Ablation Study", description: "Focus on component contribution analysis" }, { value: "visualization", label: "Visualization Only", description: "Generate visualization specs only" } ] }, { label: "Statistical Reporting", description: "Choose error reporting format", choices: [ { value: "sd", label: "Standard Deviation (SD)", description: "Report mean +/- SD (describes data variability)" }, { value: "se", label: "Standard Error (SE)", description: "Report mean +/- SE (describes mean uncertainty)" }, { value: "ci", label: "95% Confidence Interval", description: "Report mean [95% CI: low, high]" } ] }, { label: "Visualization Style", description: "Choose visualization palette", choices: [ { value: "okabe-ito", label: "Okabe-Ito (Recommended)", description: "Most widely used colorblind-friendly palette" }, { value: "paul-tol", label: "Paul Tol", description: "Alternative colorblind-friendly palette" } ] } ] }); const workflowPreferences = { analysisType: prefResponse.analysisType || "full", errorFormat: prefResponse.statisticalReporting || "sd", colorPalette: prefResponse.visualizationStyle || "okabe-ito" };
When user provides explicit analysis type (e.g., /scholar-experiment comparison):
analysisType: from argumenterrorFormat: "sd" (standard deviation)colorPalette: "okabe-ito"> COMPACT DIRECTIVE: Context compression MUST check TodoWrite phase status. > The phase currently marked in_progress is the active execution phase -- preserve its FULL content. > Only compress phases marked completed or pending.
Load experimental data, validate format, perform initial inspection.
cleanedData, dataProfile (format, dimensions, completeness, outlier flags)Compute descriptive statistics, run pre-tests, perform hypothesis testing, calculate effect sizes.
cleanedData, dataProfile, workflowPreferencesstatisticalResults (descriptive stats, test results, effect sizes, multiple comparison corrections)Generate visualization specifications for publication-quality figures and tables.
cleanedData, statisticalResults, workflowPreferencesfigureSpecs, tableSpecs, visualization-specs.mdDraft the Results section with proper statistical reporting and figure/table references.
statisticalResults, figureSpecs, tableSpecs, workflowPreferencesresultsDraft, results-draft.mdValidate analysis completeness, check reproducibility, verify statistical reporting.
analysis-report.md (final validated report), quality checklistPhase Reference Documents (read on-demand when phase executes):
| Phase | Document | Purpose | Compact | |-------|----------|---------|---------| | 1 | phases/01-data-loading.md | Load and validate data | TodoWrite driven | | 2 | phases/02-statistical-analysis.md | Statistical testing | TodoWrite driven + sentinel | | 3 | phases/03-visualization.md | Figure/table specs | TodoWrite driven | | 4 | phases/04-results-writing.md | Draft Results section | TodoWrite driven + sentinel | | 5 | phases/05-quality-check.md | Validate and verify | TodoWrite driven |
Compact Rules:
in_progress -> preserve full content, do not compresscompleted -> may compress to summaryRead("phases/0N-xxx.md") to recover before continuingUser provides data path and optional analysis type:
USER INPUT: [data_path] [analysis_type?]
Structured format:
DATA_PATH: path/to/results/ or path/to/results.csv
ANALYSIS_TYPE: full | comparison | ablation | visualization
EXPERIMENT_CONTEXT: (read from experiment session if available)Supported data formats:
Phase 1 output:
cleanedData → Phase 2, 3
dataProfile → Phase 2
Phase 2 output:
statisticalResults → Phase 3, 4, 5
Phase 3 output:
figureSpecs → Phase 4, 5
tableSpecs → Phase 4, 5
Phase 4 output:
resultsDraft → Phase 5
Phase 5 output:
analysis-report.md (final report)
results-draft.md (paper-ready text)
visualization-specs.md (figure specifications)Phase starts:
-> Sub-tasks ATTACHED to TodoWrite (in_progress + pending)
-> Execute sub-tasks sequentially
Phase ends:
-> Sub-tasks COLLAPSED back to high-level summary (completed)
-> Next phase beginsExample:
[x] Phase 1: Data Loading (completed - 3 datasets loaded, validated)
[ ] Phase 2: Statistical Analysis (in_progress)
[ ] 2.1 Descriptive statistics
[ ] 2.2 Pre-tests (normality, variance)
[ ] 2.3 Hypothesis testing
[ ] 2.4 Effect size calculation
[ ] 2.5 Multiple comparison correction
[ ] Phase 3: Visualization
[ ] Phase 4: Results Writing
[ ] Phase 5: Quality Check| Error | Recovery | |-------|----------| | Data format unreadable | Ask user for format clarification, try alternative parsers | | Sample size too small (< 3 runs) | Warn user, proceed with non-parametric tests, note limitation | | Normality assumption violated | Switch to non-parametric tests (Wilcoxon, Mann-Whitney U, Kruskal-Wallis) | | Variance homogeneity violated | Switch to Welch's t-test or Welch's ANOVA | | Missing values detected | Report percentage, suggest imputation or exclusion strategy | | Outliers detected | Report via IQR method, run sensitivity analysis (with/without outliers) |
Before each phase:
Read("phases/0N-xxx.md")After each phase:
After all phases:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-09 | fail→pass | 14,556 | 12,184 | -16% | 1 | 1 | 0% | 2,483 | 5,288 | +113% | 0 | 0 | — |
case-01 | fail→fail | 31,432 | 6,896 | -78% | 1 | 1 | 0% | 6,209 | 3,562 | -43% | 0 | 0 | — |
case-02 | fail→fail | 29,664 | 10,009 | -66% | 1 | 1 | 0% | 6,196 | 3,633 | -41% | 0 | 0 | — |
case-03 | fail→fail | 28,421 | 8,301 | -71% | 1 | 1 | 0% | 6,192 | 3,556 | -43% | 0 | 0 | — |
case-04 | pass→pass | 13,700 | 10,332 | -25% | 1 | 1 | 0% | 2,359 | 5,039 | +114% | 0 | 0 | — |
case-05 | pass→pass | 7,193 | 8,389 | +17% | 1 | 1 | 0% | 1,265 | 4,674 | +269% | 0 | 0 | — |
case-06 | pass→pass | 16,060 | 17,719 | +10% | 1 | 1 | 0% | 2,614 | 6,412 | +145% | 0 | 0 | — |
case-07 | pass→pass | 11,248 | 8,530 | -24% | 1 | 1 | 0% | 1,914 | 4,953 | +159% | 0 | 0 | — |
case-08 | fail→fail | 15,206 | 12,192 | -20% | 1 | 1 | 0% | 2,426 | 5,132 | +112% | 0 | 0 | — |
case-10 | pass→pass | 7,144 | 1,988 | -72% | 1 | 1 | 0% | 1,015 | 3,478 | +243% | 0 | 0 | — |
case-11 | fail→pass | 12,713 | 6,162 | -52% | 1 | 1 | 0% | 2,058 | 4,180 | +103% | 0 | 0 | — |
case-12 | pass→pass | 9,394 | 7,652 | -19% | 1 | 1 | 0% | 1,438 | 4,329 | +201% | 0 | 0 | — |
case-13 | pass→fail | 13,458 | 9,923 | -26% | 1 | 1 | 0% | 2,302 | 5,015 | +118% | 0 | 0 | — |
case-14 | pass→pass | 16,752 | 10,644 | -36% | 1 | 1 | 0% | 2,894 | 5,210 | +80% | 0 | 0 | — |
case-15 | pass→pass | 15,299 | 15,029 | -2% | 1 | 1 | 0% | 2,393 | 5,411 | +126% | 0 | 0 | — |
case-16 | pass→pass | 13,713 | 8,824 | -36% | 1 | 1 | 0% | 1,723 | 4,360 | +153% | 0 | 0 | — |
case-17 | pass→pass | 14,472 | 4,608 | -68% | 1 | 1 | 0% | 2,245 | 3,933 | +75% | 0 | 0 | — |
case-18 | fail→pass | 10,979 | 5,258 | -52% | 1 | 1 | 0% | 1,814 | 4,099 | +126% | 0 | 0 | — |
case-19 | fail→pass | 28,858 | 7,293 | -75% | 1 | 1 | 0% | 1,068 | 4,529 | +324% | 0 | 0 | — |
case-20 | fail→pass | 9,183 | 2,054 | -78% | 1 | 1 | 0% | 1,394 | 3,402 | +144% | 0 | 0 | — |
case-21 | pass→pass | 9,744 | 5,695 | -42% | 1 | 1 | 0% | 1,554 | 4,187 | +169% | 0 | 0 | — |
case-22 | pass→pass | 5,557 | 8,563 | +54% | 1 | 1 | 0% | 900 | 4,600 | +411% | 0 | 0 | — |
case-23 | pass→pass | 15,594 | 29,931 | +92% | 1 | 1 | 0% | 2,336 | 6,618 | +183% | 0 | 0 | — |
case-24 | pass→pass | 19,637 | 19,500 | -1% | 1 | 1 | 0% | 3,716 | 7,088 | +91% | 0 | 0 | — |
case-25 | fail→fail | 2,593 | 6,659 | +157% | 1 | 1 | 0% | 347 | 4,138 | +1093% | 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. 25 cases were attempted, and 21 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +16 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
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.
Other measured skills in the registry, with their headline benchmark lift.