compare
Same-epoch comparison of training runs across wandb, neptune, tensorboard, or mlflow. Aligns runs at the student's current step…
Evidence-before-action diagnosis of failing ML experiments. Probes the system before guessing causes, process list, dmesg, GPU stats, log scrollback, checkpoint state, then states a hypothesis as a hypothesis and runs a smoke before claiming a root cause. Use when the user asks
$ npx -y skills add fcakyon/phd-skills --skill debug --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/debugContext preview
The summary Claude sees to decide when to auto-load this skill.
Evidence-before-action diagnosis of failing ML experiments. Probes the system before guessing causes, process list, dmesg, GPU stats, log scrollback, checkpoint state, then states a hypothesis as a hypothesis and runs a smoke before claiming a root cause. Use when the user asks
name: debug description: Evidence-before-action diagnosis of failing ML experiments. Probes the system before guessing causes, process list, dmesg, GPU stats, log scrollback, checkpoint state, then states a hypothesis as a hypothesis and runs a smoke before claiming a root cause. Use when the user asks why a run is failing, diverging, OOMing, hanging, slow, producing weird metrics, has crashed, or asks to debug, diagnose, troubleshoot, or investigate a training issue.
The most expensive class of mistake in ML debugging is asserting a cause based on plausibility, then attempting a "fix" that masks the real problem. This skill enforces the discipline of probe → hypothesis → smoke → controls → claim, in that order.
The agentic Stop hook routes here from `reason` when an assistant claims a cause without backing tool output.
The user just said any of:
Before forming any hypothesis, gather the cheap evidence. None of these cost more than a few seconds:
**Process state:**
ps aux | grep -E '(python|train|torchrun|accelerate)' | grep -v grep
Is the process still running? Zombie? Defunct? Multiple instances?
**Kernel / system events:**
dmesg | tail -100 # OOM kills, hardware errors, NFS errors journalctl -xe --since "1 hour ago" | tail -50
**GPU state:**
nvidia-smi nvidia-smi --query-gpu=utilization.gpu,memory.used,temperature.gpu --format=csv
Is the GPU even being used? Idle GPU during "training" means the process is blocked on data loading or has died.
**Disk / filesystem:**
df -h /path/to/run-dir du -sh /path/to/run-dir/*
Out of disk? Checkpoints not being written?
**Log scrollback:** Read the last few hundred lines of the training log. Don't trust the user's summary, they may have skimmed. Look for:
**Checkpoint state:**
ls -la /path/to/run-dir/checkpoints/
When was the last checkpoint written? What does its size suggest? An empty `.pt` is different from a 2GB one cut short.
After the probe, state what _might_ be happening, explicitly framed as a hypothesis:
> "Hypothesis: the run is OOMing because dmesg shows `oom-kill` 3 minutes ago and the process is gone. Alternative hypotheses I haven't ruled out: (a) NFS write timeout, (b) explicit kill from a sibling process."
Never skip to "the cause is X." The hypothesis labels what you don't yet know.
The cheapest way to confirm or refute a hypothesis is to reproduce the failure shape under a controlled condition:
A 30-second smoke beats a 30-minute restart-and-pray.
If the smoke is ambiguous, run a control: change exactly one variable from the failing config and rerun the smoke. The differences narrow what mechanism is responsible.
Common control axes (change one at a time):
Only after evidence stacks up, probe, smoke, control, do you assert a cause. The claim should cite the specific tool output that proves it:
> "Root cause: NFS write timeout. Evidence: dmesg shows `nfs server X not responding` at 14:23 (the same minute the last checkpoint was written), and the smoke with `batch=1` reproduces the timeout. Recommended fix: bind-mount a local scratch dir for checkpoints and rsync to NFS at end of epoch."
If the evidence isn't stacking up, do not promote a hypothesis to a cause. Say "I don't yet know" and propose the next probe.
A concise diagnostic report: (1) what the probes showed, (2) the hypothesis, (3) the smoke outcome, (4) the cause-or-uncertain verdict, (5) the recommended next action. Each claim cites the tool output that backs it.
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.
Same-epoch comparison of training runs across wandb, neptune, tensorboard, or mlflow. Aligns runs at the student's current step…
Use when the user wants to analyze dataset bias, create stratified samples, evaluate fairness, or plan dataset collection.…
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…