external-model-validation
Validates an existing prognostic risk signature on an external bulk expression cohort with survival outcomes. Produces risk scores, Kaplan-Meier curves, risk distribution plots, expression heatmap, and time-dependent ROC curves from a fixed model coefficient file.
Veto GatesRequired pass for any deployment consideration
| Dimension | Result | Detail |
|---|---|---|
| Scientific Integrity | PASS | No fabricated risk scores, p-values, AUC values, or survival statistics across all 7 inputs; all outputs derived from actual survival computation and time-dependent ROC with fixed seed |
| Practice Boundaries | PASS | Research Use Notice explicitly states the skill is for research and validation only; de-identification requirement stated; no diagnostic conclusions or treatment recommendations produced |
| Methodological Ground | PASS | Median-split risk stratification, log-rank KM comparison, and IPCW time-dependent ROC are all standard and correct for external validation of a prognostic signature; roc_times-in-years documentation prevents a common unit-mismatch error |
| Code Usability | PASS | scripts/main.R and 5 helper scripts are syntactically complete; validate_color, parse_csv_arg, and validate_choice all called at startup; analysis.log and run_parameters.tsv preserved even on error; no infinite loops or missing core dependencies |
Core Capability95 / 100 — 8 Categories
Medical TaskExecution Average: 86.7 / 100 — Assertions: 34/35 Passed
All 6 plots, risk table, RDS, analysis.log, run_parameters.tsv, session_info.txt written; exit code 0
OS.time in days correctly converted to years; roc_times interpreted as years as documented; all outputs consistent
--overwrite protection correctly prevents accidental overwrite; prior results preserved
All color and plot parameters validated; custom styling applied; all output files present
roc_colors recycled correctly; one gap: max follow-up pre-validation at argument stage rather than inside ROC
All four out-of-scope cases correctly handled; Research Use Notice and When Not to Use both fire
Missing genes detected at Step 2 of workflow; analysis.log captures which genes are absent; clean failure
Key Strengths
- roc_times documentation explicitly stating 'always in years regardless of --time_unit' prevents the most common unit-mismatch error in time-dependent ROC analysis
- Only skill in the audited set with a complete references/ directory on disk, achieving full progressive disclosure with algorithm.md, troubleshooting.md, baseline-run.md, and project-structure.md
- Research Use Notice prominently placed before When to Use, with explicit de-identification requirement, is the strongest responsible-use design of all 6 audited skills
- --overwrite flag protection prevents silent data loss from accidental reruns into existing output directories
- analysis.log with memory checkpoints plus run_parameters.tsv preserved even on error enables complete post-hoc debugging