mcpbeat Sign in

Compare Skill for Claude

Same-epoch comparison and analysis of training runs across wandb, neptune, tensorboard, mlflow, or local result files. Aligns runs at the student's current step (never current-vs-final-of-baseline) and separates proxy metrics from downstream targets. Also writes run summaries and experiment reports, analyzes ablations, and monitors training. Use when the user asks to compare runs, check if a run is improving, track lag against a baseline, rank experiments, evaluate run-vs-run performance, analyze results, write a training report or experiment summary, summarize training results, monitor training, or asks which run is best.

1.8k tokens
context cost
SKILL.md, read when the skill is used
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
438
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/fcakyon/phd-skills --skill compare

The instruction itself

16 sections, as written by the author

Compare: same-epoch run comparison across trackers

The most common comparison error is reporting "run A is 4 percentage points behind baseline" when run A is at epoch 11 of 100 and the baseline number is from epoch 100. The student is _still training_; the comparison is meaningless. This skill enforces same-epoch alignment.

The agentic Stop hook routes here from reason when an assistant reports a delta without aligning the runs.

If the question is "why did X fail / diverge / underperform", go to /labrat:debug first.

Auto-detect the tracker

Check in this order:

  • WANDB_API_KEY env var set, or wandb imports or a *.yaml config with wandb keys in the project → wandb
  • NEPTUNE_API_TOKEN env var set, or a *.yaml config with neptune keys → neptune
  • MLFLOW_TRACKING_URI env var set, or mlruns/ dir present → mlflow
  • runs/ or lightning_logs/ dir present → tensorboard
  • *results*.json / *meta*.json / eval*.csv files in run dirs → local file format: read one sample file and write the analysis code for that format, not a hardcoded script

If none, ask the user where metrics live before guessing.

The protocol

1. Identify the runs

Get full names (no shortcodes). If the user says "run-b vs the baseline", clarify:

  • which run-b run (project + entity + run-id)
  • which baseline (full run name; baselines often have several variants)

2. Fetch metric history (not just final value)

You need the full curve, not the last reported value. Final-value-only comparisons hide convergence dynamics.

For wandb:

import wandb
api = wandb.Api()
run = api.run("entity/project/run-id")
history = run.history(samples=10000)  # full history, not just summary

For tensorboard, parse the event files (tensorboard.backend.event_processing.event_accumulator.EventAccumulator).

For neptune / mlflow, use their respective APIs.

3. Find the student's current step

The student is the run still in progress (or the one being evaluated). Get its current epoch / step from the latest history row.

4. Slice the baseline at the same step

This is the critical step. The baseline went all the way to (say) epoch 100. The student is at epoch 11. Pull the baseline's metrics _at epoch 11_, not at epoch 100.

student_step = student_history['epoch'].max()
baseline_at_same_step = baseline_history[baseline_history['epoch'] == student_step]

If the baseline doesn't have an exactly-matching step, interpolate or pick the nearest. State which.

5. Separate proxy metrics from downstream

Most ML pipelines have a _proxy metric_ (cheap, computed during training, kNN accuracy on features, loss, perplexity) and a _target downstream metric_ (expensive, computed periodically or only at the end, finetuned linear probe accuracy, downstream task F1).

The proxy is for tracking convergence; the target is what the project is actually optimizing. Reporting only the proxy can mislead, a run that lags on kNN may close the gap on downstream finetune. Report both, separately:

                        | student (ep 11) | baseline (ep 11) | delta |
| proxy (kNN top-1)     | 36.4%           | 38.9%            | -2.5  |
| downstream (linear)   | not yet         | 42.1%            | n/a   |

If the user only has proxy data, say so explicitly. Never declare a winner from proxy alone.

6. Run names in output

In every line of the report, use full run names. Never run-a vs run-b; always imagenet-resnet50-baseline-bs256 vs imagenet-resnet50-distill-from-vit-l. Future-you reading this will not remember the shortcode.

Anti-patterns

  • "X is behind baseline by 4pp": without saying _at what step_. Almost always wrong.
  • "X has converged": without showing the last 5 epochs of the curve.
  • "Best run is Y": based on a metric that was logged differently across runs (different reduction, different eval set).
  • Single-seed comparison treated as definitive. Note variance if known; otherwise label as single-seed.

Output

Compact comparison table per metric pair (proxy + downstream). Each row aligned at the student's current step. Each cell traceable to a specific tracker run-id and step. End with one or two sentences interpreting the comparison, student is on track to catch up at step N, projected from current slope is a useful framing; student is winning / losing is rarely warranted before convergence.

Beyond two runs: ranking, reports, ablations, monitoring

Ranking many runs

Compare runs across more than the primary metric:

  • Primary metrics (accuracy, F1, loss)
  • Training dynamics (convergence speed, stability)
  • Resource usage (GPU hours, memory, cost)
  • Hyperparameter differences

Put them in the Results Table of the experiment report below, and identify:

  • Best overall run
  • Best run per metric
  • Most efficient run (best metric per GPU hour)
  • Runs that crashed or had anomalies

Ablation analysis

  • Identify the baseline run
  • For each ablation, compute the delta from baseline
  • Rank by impact magnitude
  • Check for interaction effects (A+B != A + B individually)
  • To choose which ablations go in the paper, hand these deltas to Ablation Selection in /labrat:rebuttal

Experiment report

When the user asks for a report or summary:

## Experiment Report

### Overview
- Total runs: N
- Date range: start to end
- Best result: [metric] = [value] (run [name])

### Results Table
| Run | Step | Config Diff | Proxy | Downstream | GPU Hours | Status |
|-----|------|-------------|-------|------------|-----------|--------|

### Key Findings
1. [Finding with evidence]
2. [Finding with evidence]

### Recommendations
1. [Next experiment to try, with justification]

Align every Results Table row at the same step and keep proxy and downstream apart, as in Output above.

Training monitoring

Set up periodic monitoring:

  • Check if training is still running (GPU utilization, log freshness)
  • Track metric progression
  • Alert on anomalies (loss spike, NaN, OOM)
  • Notify when training completes

Create a CronCreate job on */10 * * * * that pipes a {"title", "message"} JSON object to the plugin notifier, which forwards it to whatever /labrat:setup configured (ntfy, Slack or email):

echo "{\"title\": \"Training check\", \"message\": \"GPU util: $(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader)\"}" | ${CLAUDE_PLUGIN_ROOT}/scripts/notify.sh

Other skills for the same job

different authors, same section of the catalogue
Datacommons Client
by christophacham
×3

Work with Data Commons, a platform providing programmatic access to public statistical data from global sources. Use this skill when working with demographic data, economic indicators, health statistics, environmental data, or any public datasets available through Data Commons. Applicable for querying population statistics, GDP figures, unemployment rates, disease prevalence, geographic entity resolution, and exploring relationships between statistical entities.

2.2k tokens
Neuropixels Analysis
by christophacham
×3

Neuropixels neural recording analysis. Load SpikeGLX/OpenEphys data, preprocess, motion correction, Kilosort4 spike sorting, quality metrics, Allen/IBL curation, AI-assisted visual analysis, for Neuropixels 1.0/2.0 extracellular electrophysiology. Use when working with neural recordings, spike sorting, extracellular electrophysiology, or when the user mentions Neuropixels, SpikeGLX, Open Ephys, Kilosort, quality metrics, or unit curation.

3.1k tokens scripts
Polars
by christophacham
×3

Fast in-memory DataFrame library for datasets that fit in RAM. Use when pandas is too slow but data still fits in memory. Lazy evaluation, parallel execution, Apache Arrow backend. Best for 1-100GB datasets, ETL pipelines, faster pandas replacement. For larger-than-RAM data use dask or vaex.

2.6k tokens
Senior Data Scientist
by ComeOnOliver
×3

World-class data science skill for statistical modeling, experimentation, causal inference, and advanced analytics. Expertise in Python (NumPy, Pandas, Scikit-learn), R, SQL, statistical methods, A/B testing, time series, and business intelligence. Includes experiment design, feature engineering, model evaluation, and stakeholder communication. Use when designing experiments, building predictive models, performing causal analysis, or driving data-driven decisions.

1.4k tokens scripts
Pyopenms
by ComeOnOliver
×3

Python interface to OpenMS for mass spectrometry data analysis. Use for LC-MS/MS proteomics and metabolomics workflows including file handling (mzML, mzXML, mzTab, FASTA, pepXML, protXML, mzIdentML), signal processing, feature detection, peptide identification, and quantitative analysis. Apply when working with mass spectrometry data, analyzing proteomics experiments, or processing metabolomics datasets.

1.4k tokens
Dask
by ComeOnOliver
×2

Parallel/distributed computing. Scale pandas/NumPy beyond memory, parallel DataFrames/Arrays, multi-file processing, task graphs, for larger-than-RAM datasets and parallel workflows.

3.5k tokens
Tensorboard
by Orchestra-Research
×1

Visualize training metrics, debug models with histograms, compare experiments, visualize model graphs, and profile performance with TensorBoard - Google's ML visualization toolkit

3.8k tokens
Datacommons Client
by BioTender-max
×1

Work with Data Commons, a platform providing programmatic access to public statistical data from global sources. Use this skill when working with demographic data, economic indicators, health statistics, environmental data, or any public datasets available through Data Commons. Applicable for querying population statistics, GDP figures, unemployment rates, disease prevalence, geographic entity resolution, and exploring relationships between statistical entities.

2k tokens

How to use it

Copy the folder

Take fcakyon/compare from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.