Skip to content
Back to skills

Review

ASecurity

Adversarially review a proposed or applied change to a training/evaluation pipeline: did the claimed mechanism actually engage, is the measurement still valid, what did it silently break. Use for `/tml:review`, "I made training faster, check it", "review this diff before I merge", "why did throughput improve but accuracy drop", "did this speedup actually work", "check my optimiser swap", or on any diff touching a training loop, data pipeline, optimiser, precision, architecture or evaluation p...

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
ai-agentsgobashexpresscode-review

Security analysis

A100/100

Scanned October 4, 2026

npx -y skills add emaballarin/ccplugins --skill review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/emaballarin-review/badge)](https://www.skillsdirectory.com/skills/emaballarin-review)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: review
description: 'Adversarially review a proposed or applied change to a training/evaluation pipeline: did the claimed mechanism actually engage, is the measurement still valid, what did it silently break. Use for `/tml:review`, "I made training faster, check it", "review this diff before I merge", "why did throughput improve but accuracy drop", "did this speedup actually work", "check my optimiser swap", or on any diff touching a training loop, data pipeline, optimiser, precision, architecture or evaluation path. Walks a pitfall catalogue — score inflation, dead knobs, the throughput fallacy, changes that never engaged, stale step-unit hyperparameters, train/eval mismatch, leakage, beta-convention errors across optimisers. Read-only; verdicts, not edits. Do NOT use to find new opportunities (that is /tml:audit), to interpret a sweep (that is /tml:analyze), or for general code review of non-ML code (that is /code-review).'
allowed-tools: [Read, Glob, Grep, Bash]
license: MIT
---

# /tml:review — did it work, and what did it cost

Adversarial by construction. The default posture is that the change **did not do
what it claims**, and the review's job is to find out whether that default
survives contact with the diff.

## Hard rules

1. **Read-only.** No edits, no writes, not even to `./.tml/`. Verdicts only.
2. **Three questions, always, in order**: did the mechanism engage, is the
   measurement still valid, what did it silently break.
3. **"Improved throughput" is not an answer** to any of them.
4. **A verdict without a check behind it is an opinion.** Name the file, the
   line, the trace, or the number.

## Procedure

### 1. What is claimed, and what would falsify it

State the claim in one sentence, then its **radius**
(`${CLAUDE_PLUGIN_ROOT}/references/evidence-grades.md` §3.1) read mechanically off the diff, then what
observation would show it false. If nothing would, say so — an unfalsifiable
claim is the finding.

### 2. Did the mechanism engage

The most common failure is a change that is present in the source and inert at
runtime:

- A flag set after the object it configures was constructed.
- A fast path guarded by a condition that never holds — dtype, shape, contiguity,
  device, or a version check.
- A compiled path recompiling every step (count the recompilations; a
  recompilation per step is worse than no compilation).
- A kernel that silently fell back because its workspace did not fit — which is
  also why an interior batch-size optimum can appear (`tier-b-systems.md` B14).
- An optimiser change where the **beta convention differs between algorithms**:
  Adan's `β₂` is not Adam's `β₂`, Adan's `β₃` is, RMSProp's `alpha` is, and
  PyTorch's SGD `momentum` decays a _sum_ rather than an average
  (`${CLAUDE_PLUGIN_ROOT}/references/optimisers.md` §1). A ported beta value is a silent
  learning-rate change. Check this whenever an optimiser was swapped or its
  hyperparameters were copied from elsewhere.
- Weight decay carried across an `Adam → AdamW` boundary unchanged — different
  hyperparameter, different scale (`optimisers.md` §2).

### 3. Is the measurement still valid

`${CLAUDE_PLUGIN_ROOT}/references/tier-c-protocol.md` and `${CLAUDE_PLUGIN_ROOT}/references/pitfalls.md`:

- **Score inflation** — did the change alter what is being measured, not just how
  fast it is computed? Evaluation set, metric definition, checkpoint selection
  rule, or the harness itself.
- **Stale step-unit hyperparameters** — anything expressed in steps (schedules,
  warmup, decay length, EMA horizons, eval cadence) after a batch-size or
  throughput change. `${CLAUDE_PLUGIN_ROOT}/references/optimisers.md` §1.3: a horizon fixed in steps
  shrinks in examples when the batch grows.
- **Timing boundary** — is evaluation inside or outside the clock? Warmup
  amortised or included? One-time costs priced at the real `k`?
- **Baseline drift** — is the comparison still against the same baseline, run on
  the same harness, on the same hardware?

### 4. What did it silently break

- **Quality dimensions other than the mean** — calibration, worst-group, tails,
  robustness under shift, determinism. A mean that held while calibration moved
  is a real regression and a common one.
- **Train/eval mismatch** — a transform, a precision, or a normalisation applied
  on one path and not the other.
- **Leakage** — validation data touching training, directly or through
  statistics.
- **Numerics** — reductions moved to lower precision; fp16 without loss scaling
  where it is needed; catastrophic cancellation in a difference of near-equal
  quantities (`optimisers.md` §3.1 for the Adan case in bf16).
- **Legibility** — the axis nobody records. A pipeline only one person can now
  modify is frequently a net loss (`tier-c-protocol.md`).

### 5. Verdict

One of:

- **holds** — mechanism engaged, measurement valid, no unpriced breakage. Say
  what evidence supports each of the three.
- **holds with caveats** — plus the specific caveats.
- **does not hold** — with the specific reason and the check that shows it.
- **cannot determine** — with the specific missing measurement, and what to run.

Then the residue: what remains unverified and would need a measurement to close.

## Handoffs

- The change is fine but the sweep behind it is questionable → **`/tml:analyze`**.
- The review found instability rather than a bad change →
  **`${CLAUDE_PLUGIN_ROOT}/references/instability.md`**.

## Completion status

`DONE` (all three questions answered with evidence), `DONE_WITH_CONCERNS`,
`BLOCKED`, or `NEEDS_CONTEXT`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.