Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Compute and report task-correct held-out metrics for a trained medical-imaging model — segmentation (Dice plus a boundary metric such as HD95 or NSD, per structure), classification (AUROC plus AUPRC and sensitivity/specificity with bootstrap CIs at the deployment prevalence), detection (FROC or mAP with a stated IoU criterion), interactive/promptable segmentation (the interaction-count, convergence, and per-case-time axes a static Dice omits), or generative/synthesis image evaluation (similarity
.claude/skills/aperivue-model-evaluation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -40% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-03 | ✓→✗ | ▼ Worse | -53% | 0% |
| case-06 | ✓→✗ | ▼ Worse | 186% | 0% |
This skill makes a medical-imaging model's held-out evaluation task-correct and honest: the right metric for the task and the prevalence, with uncertainty, calibration, and subgroup performance. It emits a per-case metric table that the publication statistics build on, and gates the metric choice against Metrics Reloaded (Maier-Hein & Reinke et al., Nat Methods 2024) and CLAIM 2024.
It sits between /model-validation (which audits the split / design) and /analyze-stats (which owns the comparative inference). It computes the imaging-specific per-case metrics (surface distances, FROC, ECE of a softmax head); /analyze-stats owns DeLong / NRI / IDI / decision curves / MRMC. Like /analyze-stats, it generates and executes code on your predictions — numbers are never hand-typed.
subgroup slices, plus a per-case table for the manuscript statistics.
/model-validation./analyze-stats./model-scaffold; LLM / MLLM → /mllm-eval./make-figures.State the task (segmentation / classification / detection / interactive / generative) and the analysis unit the metric must respect (per-patient vs per-lesion vs per-image). A per-lesion metric must not be reported as per-patient.
Generate evaluation code that computes, on the held-out predictions:
mean, with bootstrap 95% CIs.
the deployment prevalence (not a balanced set).
metrics above plus the interaction axis — Dice-vs-interactions / number-of-clicks (NoC) to a target threshold, initial-vs-converged (or peak) Dice, and per-case interaction/inference time (see the metric guide; the study design is in /design-study + /model-validation).
(MSE/RMSE/PSNR/SSIM) or no-reference quality (SNR/CNR, standardized visual scores), plus a downstream-task evaluation — image quality is not clinical utility (Park et al., Radiol Med 2024). For multiclass classification, state the aggregation scheme (one-vs-rest / macro / micro / pairwise / Obuchowski); time-to-event discrimination (Harrell's C, time-dependent ROC) is handed to /analyze-stats. Add calibration (reliability diagram / ECE) and subgroup slices (the Model Card Factors). See ${CLAUDE_SKILL_DIR}/references/metric_guide.md. Emit a per-case CSV for /analyze-stats.
bashpython3 ${CLAUDE_SKILL_DIR}/scripts/check_metric_reporting.py \ --report results.md --task segmentation|classification|detection|interactive|generative --strict
PIXEL_ACCURACY_SEG / NO_BOUNDARY_METRIC / ACCURACY_ONLY / DETECTION_METRIC_MISSING must be zero.
The per-case table → /analyze-stats (DeLong / NRI / IDI / decision curves, publication tables); figures → /make-figures; the numbers + subgroup performance → /model-card; Methods/Results → /write-paper; compliance → /check-reporting.
if predictions or ground truth are missing, say so and stop — do not invent a result.
flags these; report Dice + a boundary metric, or AUROC + AUPRC with CIs.
[VERIFY] and ask.scripts/check_metric_reporting.py — flags a task-metric mismatch / missing uncertainty (stdlib, network-free). Reproducible challenge: bash ${CLAUDE_SKILL_DIR}/scripts/metric_reporting_challenge/verify.sh.
Load on demand (keep SKILL.md short):
${CLAUDE_SKILL_DIR}/references/metric_guide.md — operational checklist: the task-correct metricper task (segmentation Dice + HD95/NSD per structure; classification AUROC + AUPRC + sens/spec at deployment prevalence; detection FROC/mAP with a stated IoU), plus calibration, subgroup slices, run-variance, and the per-case CSV hand-off.
${CLAUDE_SKILL_DIR}/references/metric_selection_grounding.md — the standards grounding behindthose choices: the Metrics Reloaded task-fingerprint principle, why each metric pairing is required, calibration vs discrimination, disaggregated reporting, and the CLAIM 2024 reporting-fit map (/check-reporting owns the item audit).
model-validation (design) -> model-evaluation (this skill: per-case task-correct metrics + CIs)
-> analyze-stats (DeLong / NRI / IDI / decision curves, publication tables) -> make-figures
-> model-card (numbers + subgroup) -> write-paper + check-reporting| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-19 | pass→pass | 13,922 | 7,810 | -44% | 1 | 1 | 0% | 2,264 | 2,855 | +26% | 0 | 0 | — |
case-01 | fail→fail | 25,299 | 7,368 | -71% | 1 | 1 | 0% | 5,965 | 1,850 | -69% | 0 | 0 | — |
case-02 | fail→pass | 28,603 | 10,127 | -65% | 1 | 1 | 0% | 6,210 | 3,708 | -40% | 0 | 0 | — |
case-03 | pass→fail | 15,776 | 3,686 | -77% | 1 | 1 | 0% | 3,705 | 1,724 | -53% | 0 | 0 | — |
case-04 | pass→pass | 20,282 | 5,348 | -74% | 1 | 1 | 0% | 4,068 | 2,398 | -41% | 0 | 0 | — |
case-10 | pass→pass | 19,791 | 13,071 | -34% | 1 | 1 | 0% | 3,132 | 3,604 | +15% | 0 | 0 | — |
case-05 | pass→pass | 16,949 | 17,235 | +2% | 1 | 1 | 0% | 2,941 | 4,306 | +46% | 0 | 0 | — |
case-06 | pass→fail | 9,463 | 18,353 | +94% | 1 | 1 | 0% | 1,697 | 4,846 | +186% | 0 | 0 | — |
case-07 | pass→pass | 14,127 | 12,946 | -8% | 1 | 1 | 0% | 2,339 | 3,933 | +68% | 0 | 0 | — |
case-08 | pass→pass | 14,592 | 14,115 | -3% | 1 | 1 | 0% | 2,264 | 4,042 | +79% | 0 | 0 | — |
case-09 | pass→pass | 15,976 | 12,241 | -23% | 1 | 1 | 0% | 2,565 | 3,367 | +31% | 0 | 0 | — |
case-11 | pass→pass | 14,488 | 11,946 | -18% | 1 | 1 | 0% | 2,326 | 3,402 | +46% | 0 | 0 | — |
case-12 | fail→pass | 14,637 | 3,003 | -79% | 1 | 1 | 0% | 2,395 | 2,029 | -15% | 0 | 0 | — |
case-13 | pass→pass | 7,053 | 5,515 | -22% | 1 | 1 | 0% | 1,188 | 2,396 | +102% | 0 | 0 | — |
case-14 | pass→pass | 8,421 | 9,874 | +17% | 1 | 1 | 0% | 1,295 | 3,139 | +142% | 0 | 0 | — |
case-15 | pass→pass | 14,703 | 13,090 | -11% | 1 | 1 | 0% | 2,495 | 3,670 | +47% | 0 | 0 | — |
case-16 | pass→pass | 6,978 | 2,583 | -63% | 1 | 1 | 0% | 1,206 | 1,900 | +58% | 0 | 0 | — |
case-17 | pass→fail | 7,811 | 4,519 | -42% | 1 | 1 | 0% | 1,400 | 2,142 | +53% | 0 | 0 | — |
case-18 | pass→pass | 9,668 | 9,784 | +1% | 1 | 1 | 0% | 1,540 | 3,207 | +108% | 0 | 0 | — |
case-20 | fail→pass | 27,968 | 7,026 | -75% | 1 | 1 | 0% | 2,336 | 2,745 | +18% | 0 | 0 | — |
case-21 | pass→pass | 12,444 | 5,771 | -54% | 1 | 1 | 0% | 1,754 | 2,258 | +29% | 0 | 0 | — |
case-22 | pass→pass | 19,910 | 18,393 | -8% | 1 | 1 | 0% | 3,202 | 4,439 | +39% | 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. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 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 0 percentage points is the difference between those two pass rates over the 20 comparable cases. 4 cases got worse with the skill loaded, and they are 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.