Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Produce or audit the interpretability/explainability analysis of a medical-imaging model — Grad-CAM / Grad-CAM++ / attention-rollout / saliency / integrated-gradients — so it clears the rigor bar a reviewer expects: mandatory Adebayo sanity checks (model- and data-randomisation), a quantitative localisation metric against ground truth (IoU / pointing game / Dice) instead of eyeballed examples, a cohort-level result rather than cherry-picked cases, and attribution framing rather than "proof the m
.claude/skills/aperivue-explainability/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -40% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 40% | 0% |
A saliency / Grad-CAM heat-map is the most over-interpreted artifact in medical-imaging AI: a colourful map over the lesion is routinely presented as proof the model "looks at the right thing." Adebayo et al. (NeurIPS 2018) showed many saliency methods produce visually convincing maps that are independent of the model's learned weights and of the labels — so they explain nothing. This skill produces an explainability analysis that clears the rigor bar, and audits an existing one, so the map is trustworthy before it reaches a manuscript (CLAIM 2024 / TRIPOD+AI interpretability items).
It sits alongside evaluation in the lane: /architecture-zoo → /preprocess-imaging → /model-scaffold → /model-validation → /model-evaluation + explainability → /write-paper + /check-reporting. It integrates captum / pytorch-grad-cam (referenced in the plan); it does not reimplement them and never runs a model on real patient data.
to the standard a reviewer expects.
/model-evaluation then /analyze-stats./model-validation / /preprocess-imaging./mllm-eval.relationship is causal. Frame it as "where signal is attributed", never as "the model is right".
that survives neither is uninterpretable; both axes are the minimum bar.
pointing game / Dice against ground-truth masks — do not eyeball a few examples.
Choose the method for the architecture (references/explainability_guide.md): Grad-CAM / Grad-CAM++ for CNNs, attention-rollout for ViTs, integrated-gradients / SHAP for attribution. Wire captum or pytorch-grad-cam; do not write a new CAM implementation.
a faithful map degrades when the model/labels are randomised.
Dice) over the cohort — not a visual impression.
json{ "method": "grad-cam++", "n_examples": 200, "cohort_level": true, "localization_metric": "iou", "localization_value": 0.63, "sanity_checks": ["model_randomization", "data_randomization"], "interpretation": "localization" }
interpretation: attribution / localization / faithfulness (descriptive) — never validation / causal (overclaim).
bashpython3 scripts/check_explainability_report.py --manifest explainability_report.json --strict
Verdicts: SALIENCY_AS_VALIDATION, NO_SANITY_CHECK, NO_LOCALIZATION_METRIC (Major); INSUFFICIENT_SANITY, CHERRY_PICKED_EXAMPLES, MISSING_METHOD (Minor). The verdict is reproduced by rule on the manifest, never asserted from prose.
/model-evaluation — explainability accompanies the held-out metrics as a secondary analysis./self-review ai_overclaiming / image_synthesis probes audit saliency overclaiming in afinished manuscript; this skill produces the rigorous analysis they look for.
/check-reporting — the manifest documents the CLAIM 2024 / TRIPOD+AI interpretability items.manifest comes from the researcher's executed XAI code — never invented. This skill designs and audits the analysis; it does not run a model on real patient data.
claiming it validates the model is the overclaim this skill exists to prevent (SALIENCY_AS_VALIDATION).
check_explainability_report.py. Therigor verdict is reproduced deterministically, never asserted from prose.
attribution implementation or claim results for one.
scripts/check_explainability_report_challenge/ ships a synthetic weak/strong report pair with a network-free verify.sh wired into the skill's validation commands.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 21,913 | 40,266 | +84% | 1 | 1 | 0% | 4,613 | 2,775 | -40% | 0 | 0 | — |
case-02 | fail→fail | 19,968 | 4,453 | -78% | 1 | 1 | 0% | 3,562 | 1,508 | -58% | 0 | 0 | — |
case-03 | fail→fail | 27,165 | 5,154 | -81% | 1 | 1 | 0% | 6,209 | 1,678 | -73% | 0 | 0 | — |
case-04 | pass→pass | 17,148 | 8,051 | -53% | 1 | 1 | 0% | 2,855 | 2,931 | +3% | 0 | 0 | — |
case-05 | pass→pass | 8,709 | 8,725 | +0% | 1 | 1 | 0% | 1,705 | 2,906 | +70% | 0 | 0 | — |
case-06 | fail→pass | 13,404 | 4,264 | -68% | 1 | 1 | 0% | 2,121 | 2,033 | -4% | 0 | 0 | — |
case-07 | fail→pass | 14,837 | 6,142 | -59% | 1 | 1 | 0% | 2,233 | 2,503 | +12% | 0 | 0 | — |
case-08 | fail→pass | 14,713 | 9,117 | -38% | 1 | 1 | 0% | 2,326 | 3,069 | +32% | 0 | 0 | — |
case-09 | fail→pass | 13,198 | 8,421 | -36% | 1 | 1 | 0% | 1,961 | 2,744 | +40% | 0 | 0 | — |
case-10 | pass→pass | 10,650 | 8,195 | -23% | 1 | 1 | 0% | 1,788 | 2,782 | +56% | 0 | 0 | — |
case-11 | fail→pass | 17,038 | 1,285 | -92% | 1 | 1 | 0% | 817 | 1,550 | +90% | 0 | 0 | — |
case-12 | pass→pass | 16,253 | 8,376 | -48% | 1 | 1 | 0% | 2,732 | 2,732 | 0% | 0 | 0 | — |
case-13 | fail→pass | 23,265 | 2,670 | -89% | 1 | 1 | 0% | 1,470 | 1,841 | +25% | 0 | 0 | — |
case-14 | fail→pass | 23,428 | 3,011 | -87% | 1 | 1 | 0% | 1,430 | 1,815 | +27% | 0 | 0 | — |
case-15 | fail→pass | 22,632 | 1,974 | -91% | 1 | 1 | 0% | 1,492 | 1,680 | +13% | 0 | 0 | — |
case-16 | fail→pass | 11,200 | 3,417 | -69% | 1 | 1 | 0% | 1,830 | 1,969 | +8% | 0 | 0 | — |
case-17 | fail→pass | 8,396 | 2,522 | -70% | 1 | 1 | 0% | 1,458 | 1,756 | +20% | 0 | 0 | — |
case-18 | fail→pass | 8,400 | 2,253 | -73% | 1 | 1 | 0% | 1,370 | 1,673 | +22% | 0 | 0 | — |
case-19 | fail→pass | 10,738 | 9,207 | -14% | 1 | 1 | 0% | 1,750 | 2,812 | +61% | 0 | 0 | — |
case-20 | pass→pass | 13,843 | 6,965 | -50% | 1 | 1 | 0% | 2,293 | 2,486 | +8% | 0 | 0 | — |
case-21 | fail→pass | 14,478 | 6,538 | -55% | 1 | 1 | 0% | 2,253 | 2,406 | +7% | 0 | 0 | — |
case-22 | fail→pass | 10,440 | 4,551 | -56% | 1 | 1 | 0% | 1,544 | 2,071 | +34% | 0 | 0 | — |
case-23 | fail→pass | 20,103 | 2,236 | -89% | 1 | 1 | 0% | 1,050 | 1,692 | +61% | 0 | 0 | — |
case-24 | fail→pass | 17,113 | 11,281 | -34% | 1 | 1 | 0% | 2,754 | 3,221 | +17% | 0 | 0 | — |
case-25 | pass→pass | 12,262 | 5,048 | -59% | 1 | 1 | 0% | 1,914 | 2,150 | +12% | 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. 25 cases were attempted, and 18 counted toward the lift figure. The other 7 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 +68 percentage points is the difference between those two pass rates over the 18 comparable cases.
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.