dataset-curation
Use when the user wants to analyze dataset bias, create stratified samples, evaluate fairness, or plan dataset collection.…
Same-epoch comparison of training runs across wandb, neptune, tensorboard, or mlflow. Aligns runs at the student's current step (never current-vs-final-of-baseline) and separates proxy metrics from downstream targets. Use when the user asks to compare runs, check if a run is
$ npx -y skills add fcakyon/phd-skills --skill compare --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/compareContext preview
The summary Claude sees to decide when to auto-load this skill.
Same-epoch comparison of training runs across wandb, neptune, tensorboard, or mlflow. Aligns runs at the student's current step (never current-vs-final-of-baseline) and separates proxy metrics from downstream targets. Use when the user asks to compare runs, check if a run is
name: compare description: Same-epoch comparison of training runs across wandb, neptune, tensorboard, or mlflow. Aligns runs at the student's current step (never current-vs-final-of-baseline) and separates proxy metrics from downstream targets. Use when the user asks to compare runs, check if a run is improving, track lag against a baseline, rank experiments, or evaluate run-vs-run performance.
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.
The user just said any of:
Check in this order:
1. `WANDB_API_KEY` env var set, or `wandb` imports in the project → **wandb** 2. `NEPTUNE_API_TOKEN` env var set → **neptune** 3. `MLFLOW_TRACKING_URI` env var set, or `mlruns/` dir present → **mlflow** 4. `runs/` or `lightning_logs/` dir present → **tensorboard** 5. `*results*.json` / `*meta*.json` files in run dirs → **local file format**
If none, ask the user where metrics live before guessing.
Get full names (no shortcodes). If the user says "fvs-fm vs the baseline", clarify:
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 summaryFor tensorboard, parse the event files (`tensorboard.backend.event_processing.event_accumulator.EventAccumulator`).
For neptune / mlflow, use their respective APIs.
The student is the run still in progress (or the one being evaluated). Get its current epoch / step from the latest history row.
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.
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.
In every line of the report, use full run names. Never `cs-ad vs fvs-fm`; always `phase1-7src-conv-s-adaptor-mlp vs phase1-7src-fastvit-s-featmap-mlp`. Future-you reading this will not remember the shortcode.
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.
Catch AI mistakes before they cost weeks of compute. Reproduce papers from arxiv. Debug runs evidence-first. Compare experiments at the right epoch. Launch with discipline.
Use when the user wants to analyze dataset bias, create stratified samples, evaluate fairness, or plan dataset collection.…
Evidence-before-action diagnosis of failing ML experiments. Probes the system before guessing causes, process list, dmesg, GPU…
Use when the user wants to design experiments, plan ablation studies, structure baselines, or create incremental evaluation…
Use when the user wants to set up or troubleshoot a LaTeX environment, choose between biber and bibtex, install packages for a…
Pre-flight checklist for long-running ML training jobs covering config diff, run naming, path verification, monitoring setup, and…
Use when the user wants to find related work, survey a research area, identify literature gaps, or discover open-source…