medsci-skills 5.16.0 → 5.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +32 -16
  2. package/metadata/distribution_files.json +164 -64
  3. package/metadata/distribution_manifest.json +2 -1
  4. package/metadata/skills_catalog.json +12 -2
  5. package/package.json +1 -1
  6. package/skills/academic-aio/SKILL.md +3 -0
  7. package/skills/academic-aio/references/ai_tool_citation_framing.md +53 -0
  8. package/skills/architecture-zoo/SKILL.md +6 -3
  9. package/skills/architecture-zoo/references/graph.md +110 -0
  10. package/skills/architecture-zoo/references/index.md +5 -1
  11. package/skills/architecture-zoo/skill.yml +1 -1
  12. package/skills/design-study/SKILL.md +13 -0
  13. package/skills/make-figures/skill.yml +1 -0
  14. package/skills/make-figures/tests/test_pptx_mac_compat.py +148 -0
  15. package/skills/manage-refs/SKILL.md +7 -0
  16. package/skills/mllm-eval/references/evaluation_axes.md +9 -1
  17. package/skills/mllm-eval/scripts/check_mllm_eval_completeness.py +1 -1
  18. package/skills/model-evaluation/SKILL.md +21 -8
  19. package/skills/model-evaluation/references/metric_guide.md +48 -0
  20. package/skills/model-evaluation/references/metric_selection_grounding.md +7 -0
  21. package/skills/model-evaluation/scripts/check_metric_reporting.py +106 -3
  22. package/skills/model-evaluation/scripts/metric_reporting_challenge/fixture/generative_bad.md +2 -0
  23. package/skills/model-evaluation/scripts/metric_reporting_challenge/fixture/generative_good.md +5 -0
  24. package/skills/model-evaluation/scripts/metric_reporting_challenge/fixture/interactive_bad.md +2 -0
  25. package/skills/model-evaluation/scripts/metric_reporting_challenge/fixture/interactive_good.md +6 -0
  26. package/skills/model-evaluation/scripts/metric_reporting_challenge/fixture/multiclass_bad.md +2 -0
  27. package/skills/model-evaluation/scripts/metric_reporting_challenge/verify.sh +13 -1
  28. package/skills/model-evaluation/skill.yml +1 -1
  29. package/skills/model-evaluation/tests/test_metric_reporting.sh +42 -0
  30. package/skills/model-scaffold/SKILL.md +4 -1
  31. package/skills/model-scaffold/references/mlops_guide.md +77 -0
  32. package/skills/model-scaffold/references/training_guide.md +3 -1
  33. package/skills/model-validation/SKILL.md +8 -1
  34. package/skills/peer-review/SKILL.md +15 -1
  35. package/skills/render-pdf-doc/SKILL.md +16 -3
  36. package/skills/render-pdf-doc/scripts/check_deps.sh +48 -17
  37. package/skills/render-pdf-doc/scripts/render_pdf.sh +35 -8
  38. package/skills/render-pdf-doc/skill.yml +1 -1
  39. package/skills/revise/SKILL.md +20 -0
  40. package/skills/revise/scripts/check_response_claims.py +233 -0
  41. package/skills/revise/skill.yml +6 -2
  42. package/skills/revise/tests/test_response_claims.sh +97 -0
  43. package/skills/sync-submission/SKILL.md +7 -0
  44. package/skills/sync-submission/scripts/check_cross_artifact_stale.py +62 -4
  45. package/skills/sync-submission/tests/test_cross_artifact_stale.sh +56 -0
  46. package/skills/uncertainty-imaging/SKILL.md +133 -0
  47. package/skills/uncertainty-imaging/references/uncertainty_guide.md +93 -0
  48. package/skills/uncertainty-imaging/scripts/check_uncertainty_reporting.py +261 -0
  49. package/skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/expected/strong.txt +9 -0
  50. package/skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/expected/weak.txt +11 -0
  51. package/skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/fixture/uncertainty_strong.json +12 -0
  52. package/skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/fixture/uncertainty_weak.json +9 -0
  53. package/skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/problem.md +38 -0
  54. package/skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/verify.sh +38 -0
  55. package/skills/uncertainty-imaging/skill.yml +47 -0
  56. package/skills/uncertainty-imaging/tests/test_uncertainty_reporting.sh +80 -0
  57. package/skills/verify-refs/references/manual_checkpoint_guide.md +4 -0
  58. package/skills/verify-refs/scripts/verify_refs.py +76 -34
  59. package/skills/verify-refs/skill.yml +1 -0
  60. package/skills/verify-refs/tests/test_fabricated_author.sh +73 -0
  61. package/skills/write-paper/SKILL.md +7 -0
  62. package/skills/write-paper/scripts/gate_backbone_fulltext.py +185 -0
  63. package/skills/write-paper/skill.yml +5 -1
  64. package/skills/write-paper/tests/test_backbone_fulltext.sh +85 -0
package/README.md CHANGED
@@ -2,15 +2,16 @@
2
2
 
3
3
  # MedSci Skills
4
4
 
5
- **54 skills that actually work.** Built by a physician-researcher, tested on real publications.
5
+ **55 skills that actually work.** Built by a physician-researcher, tested on real publications.
6
6
 
7
7
  *MedSci Skills is an end-to-end research tool for physician and medical-engineering researchers — design → scaffold → validate → publish — for the clinical manuscript and the medical-AI model behind it. Its moat is the compliance layer — 44 reporting guidelines and risk-of-bias tools, reference/citation verification, and deterministic integrity gates before peer review — now extended by a model-engineering lane that scaffolds reproducible, leakage-safe training repos and audits model validation. Clinical AI model research engineering is in scope; a general AI-scientist platform is not. It competes on clinical submission reliability, not skill count.*
8
8
 
9
9
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
10
10
  [![Release](https://img.shields.io/github/v/release/Aperivue/medsci-skills?style=flat-square&color=blue)](https://github.com/Aperivue/medsci-skills/releases/latest)
11
11
  [![CI](https://img.shields.io/github/actions/workflow/status/Aperivue/medsci-skills/validate.yml?branch=main&style=flat-square&label=CI)](https://github.com/Aperivue/medsci-skills/actions/workflows/validate.yml)
12
- ![Skills](https://img.shields.io/badge/Skills-54-brightgreen?style=flat-square)
12
+ ![Skills](https://img.shields.io/badge/Skills-55-brightgreen?style=flat-square)
13
13
  [![npm](https://img.shields.io/npm/v/medsci-skills?style=flat-square&label=npm&color=cb3837)](https://www.npmjs.com/package/medsci-skills)
14
+ [![npm downloads](https://img.shields.io/npm/dw/medsci-skills?style=flat-square&label=npm%20downloads&color=cb3837)](https://www.npmjs.com/package/medsci-skills)
14
15
  [![Watch the 2-min intro](https://img.shields.io/badge/▶_Watch-2--min_intro-FF0000?style=flat-square&logo=youtube&logoColor=white)](https://youtu.be/MclQ_RIofpE)
15
16
  [![good first issues](https://img.shields.io/github/issues/Aperivue/medsci-skills/good%20first%20issue?style=flat-square&label=good%20first%20issues&color=7057ff)](https://github.com/Aperivue/medsci-skills/contribute)
16
17
 
@@ -41,8 +42,9 @@
41
42
 
42
43
  ## What is MedSci Skills?
43
44
 
44
- MedSci Skills is an open-source Claude Code skill collection for **clinical
45
- research — the manuscript and the medical-AI model alike**. It helps
45
+ MedSci Skills is an open-source **Agent Skills** collection for **clinical
46
+ research — the manuscript and the medical-AI model alike** designed to be driven
47
+ directly by AI coding agents (Claude Code, Codex, Cursor, and GitHub Copilot). It helps
46
48
  physician-researchers and biomedical/medical-engineering investigators move from
47
49
  literature search, study design, statistics, and figures to reporting-guideline
48
50
  compliance, citation/reference auditing, numerical-consistency checks, and
@@ -155,15 +157,16 @@ protocol scaffolding, screening/extraction structure, PRISMA-consistent counts a
155
157
  diagram, pooled-estimate figures, and a manuscript draft. *Safety:* screening and
156
158
  extraction decisions stay with the human review team.
157
159
 
158
- ## Live Demos: Three Study Types, Three Full Pipelines
160
+ ## Live Demos: Four Study Types, Four Full Pipelines
159
161
 
160
- Three public datasets. Three study types. Each produces a complete manuscript, publication-ready figures, and a reporting compliance audit.
162
+ Four public datasets. Four study types. Demos 1–3 each produce a complete manuscript, publication-ready figures, and a reporting-compliance audit; Demo 4 runs the medical-AI **model-engineering lane** end to end (scaffold → gates → training → evaluation → interpretability).
161
163
 
162
164
  | Demo | Dataset | Study Type | Compliance |
163
165
  |------|---------|------------|------------|
164
166
  | [Demo 1: Wisconsin BC](demo/01_wisconsin_bc/) | `sklearn` built-in | Diagnostic accuracy | STARD 2015 |
165
167
  | [Demo 2: BCG Vaccine](demo/02_metafor_bcg/) | `metafor::dat.bcg` (13 RCTs) | Meta-analysis | PRISMA 2020 |
166
168
  | [Demo 3: NHANES Obesity](demo/03_nhanes_obesity/) | CDC NHANES 2017-18 | Epidemiology (survey) | STROBE |
169
+ | [Demo 4: PneumoniaMNIST CNN](demo/04_pneumoniamnist_cnn/) | `medmnist` (CC BY 4.0) | Medical-AI model engineering (CNN) | CLAIM / TRIPOD+AI |
167
170
 
168
171
  ### Demo 1: Diagnostic Accuracy — Wisconsin Breast Cancer
169
172
 
@@ -285,6 +288,10 @@ The E2E pipeline (`orchestrate --e2e`) produces everything up to `qc/`. The `sub
285
288
 
286
289
  ## What's New
287
290
 
291
+ **v5.18** — reliability & workflow-integrity batch. A new deterministic **response-claim gate** for `/revise` and `/peer-review` (verifies a response letter's "we added / we now cite X" against the *revised manuscript body* — a claimed-but-absent edit is caught before it reaches a reviewer; **detectors 50 → 51**), a **reframe / headline-change survivor scan** (`--retired-term` / `--old-value`, finds stale framing or superseded values left in the body, supplement, and figure legends after a reframe), a pre-drafting **backbone full-text readiness gate** for `/write-paper` (the backbone article is *used*, not merely detected), a **skill-registry consistency validator** (`capabilities.yml` ⇄ `skill.yml`, CI-enforced), AI-tool **citation-framing** guidance for `/academic-aio`, and **Demo 4** (PneumoniaMNIST CNN, the model-engineering lane end to end). Additive and backward-compatible; **55 skills / 44 guidelines / 51 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.17.)
292
+
293
+ **v5.17** — model-engineering produce-side depth, **completion**. Deployment safety + the final roadmap/candidate items: a new **`uncertainty-imaging`** skill + `check_uncertainty_reporting` gate (calibrated per-case uncertainty / OOD guard on a held-out set / abstention at a pre-specified target / calibration-under-shift — for a deployment-framed model), an **MLOps wiring reference** for `model-scaffold` (experiment tracking, config/data/environment versioning, CI-for-ML — pointing to W&B / MLflow / nnU-Net, reimplementing nothing), and an **`architecture-zoo` graph-neural-net family card** (GCN / GraphSAGE / GAT / GIN / BrainGNN for brain connectomes) that closes the last candidate gap. The six-item produce-side depth roadmap and its candidate list are now complete. Additive and backward-compatible; **55 skills / 44 guidelines / 50 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.16.)
294
+
288
295
  **v5.16** — model-engineering produce-side depth, clinical fine-tuning focus (Items 3–4 of the [produce-side depth roadmap](docs/roadmap_model_engineering_depth.md)). A new **`radiomics-ml`** skill + `check_radiomics_ml` gate for the most common solo-doable clinical-ML workflow — radiomics / tabular features → any classical learner (LASSO / SVM / random forest / XGBoost / …) → a clinical outcome, no GPU — with a learner-agnostic nested-CV / calibration / stability gate; plus a **`model-scaffold` fine-tuning mode** (`--task finetune` + `--from-pretrained`) that adapts a pretrained backbone on collected clinical data with a frozen→unfrozen schedule, discriminative learning rates, and a pretrained-weight provenance record (`PRETRAINED.md` + a `PRETRAINED_PROVENANCE_MISSING` verdict on the existing `check_training_hygiene`, plus a MedSAM-adaptation + train-only diffusion-augmentation guide). Additive and backward-compatible; **54 skills / 44 guidelines / 49 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.15.)
289
296
 
290
297
  **v5.15** — model-engineering produce-side depth. Two new skills that *produce* what the review lane previously only audited: **`preprocess-imaging`** (DICOM/NIfTI data prep + a `check_preprocessing_leakage` gate that extends the split-leakage moat upstream to the data stage) and **`explainability`** (Grad-CAM / saliency held to the reviewer bar — Adebayo sanity checks, quantitative localisation vs ground truth, attribution-not-validation framing, via `check_explainability_report`). Plus a by-stage skill index, multi-host README/About (Claude Code · Codex · Cursor · Copilot), copy-paste citation ergonomics, and a real-project precision fix. Additive and backward-compatible; **53 skills / 44 guidelines / 48 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.14.)
@@ -455,14 +462,14 @@ ma-scout -> search-lit -> fulltext-retrieval -> design-study ──> write-proto
455
462
 
456
463
  ### By research stage
457
464
 
458
- All 54 skills, grouped by where they fit in the clinical-manuscript and medical-AI lifecycle. Full descriptions are in the table below; one page per skill lives in the [per-skill reference](docs/skills/).
465
+ All 55 skills, grouped by where they fit in the clinical-manuscript and medical-AI lifecycle. Full descriptions are in the table below; one page per skill lives in the [per-skill reference](docs/skills/).
459
466
 
460
467
  | Stage | Skills |
461
468
  |-------|--------|
462
469
  | 🔭 **Discover & scope** | `ma-scout` · `find-cohort-gap` · `search-lit` · `fulltext-retrieval` · `lit-sync` · `author-strategy` |
463
470
  | 📐 **Design & plan** | `design-study` · `calc-sample-size` · `define-variables` · `write-protocol` · `fill-protocol` · `design-ai-benchmarking` |
464
471
  | 🧹 **Data & analysis** | `deidentify` · `clean-data` · `generate-codebook` · `version-dataset` · `analyze-stats` · `batch-cohort` · `cross-national` · `replicate-study` |
465
- | 🤖 **Medical-AI model engineering** | `preprocess-imaging` · `architecture-zoo` · `model-scaffold` · `model-validation` · `model-evaluation` · `explainability` · `radiomics-ml` · `model-card` · `mllm-eval` |
472
+ | 🤖 **Medical-AI model engineering** | `preprocess-imaging` · `architecture-zoo` · `model-scaffold` · `model-validation` · `model-evaluation` · `uncertainty-imaging` · `explainability` · `radiomics-ml` · `model-card` · `mllm-eval` |
466
473
  | ✍️ **Write & visualize** | `write-paper` · `make-figures` · `review-paper` · `present-paper` · `humanize` · `polish-language` · `academic-aio` |
467
474
  | ✅ **Comply & verify** | `check-reporting` · `self-review` · `verify-refs` · `manage-refs` |
468
475
  | 📤 **Submit & respond** | `find-journal` · `add-journal` · `sync-submission` · `revise` · `peer-review` · `fill-icmje-coi` |
@@ -491,6 +498,7 @@ All 54 skills, grouped by where they fit in the clinical-manuscript and medical-
491
498
  | **model-evaluation** | Compute and report task-correct held-out metrics for a trained medical-imaging model — segmentation (Dice + a boundary metric HD95/NSD, per structure), classification (AUROC + AUPRC + sensitivity/specificity with bootstrap CIs at the deployment prevalence), or detection (FROC/mAP with a stated IoU criterion) — plus calibration and subgroup slices. Emits a per-case table for analyze-stats and gates the metric choice against Metrics Reloaded / CLAIM 2024 (`check_metric_reporting`). Numbers come only from executed code. |
492
499
  | **explainability** | 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: 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, and attribution framing rather than "proof the model is correct". Emits an explainability-report manifest + a deterministic gate (`check_explainability_report`): `SALIENCY_AS_VALIDATION`, `NO_SANITY_CHECK`, `NO_LOCALIZATION_METRIC` (Major); `INSUFFICIENT_SANITY`, `CHERRY_PICKED_EXAMPLES`, `MISSING_METHOD` (Minor). Integrates captum / pytorch-grad-cam; never reimplements them or touches real patient data. |
493
500
  | **radiomics-ml** | Produce or audit a radiomics / tabular clinical-ML study — features → random forest / XGBoost / regularised logistic → clinical outcome — the most common solo-doable clinical-ML workflow (no GPU, no engineer). Emits a pipeline manifest + a deterministic rigor gate (`check_radiomics_ml`): `NO_NESTED_CV`, `HIGH_DIM_LOW_EVENTS`, `SELECTION_OUTSIDE_CV` (Major); `NO_FEATURE_STABILITY`, `NO_CALIBRATION`, `NO_EXTERNAL_VALIDATION` (Minor). pyradiomics/IBSI settings, nested CV with in-fold selection, ICC stability, SHAP, calibration + decision curve, CLEAR/TRIPOD+AI/PROBAST-AI reporting. Integrates scikit-learn / xgboost / pyradiomics; never reimplements them. |
501
+ | **uncertainty-imaging** | Design or audit the uncertainty / out-of-distribution / selective-prediction layer of a deployment-framed medical-imaging model — so a clinical-use claim carries calibrated per-case uncertainty (MC-dropout / deep ensemble / conformal / Bayesian), an OOD guard validated on a held-out OOD set, an abstention rule at a pre-specified operating point, and calibration checked under distribution shift. Emits an uncertainty manifest + a deterministic gate (`check_uncertainty_reporting`): `POINT_PREDICTION_NO_UNCERTAINTY`, `CONFORMAL_NO_COVERAGE_VALIDATION`, `OOD_NO_HELDOUT_SET` (Major); `ENSEMBLE_NOT_INDEPENDENT`, `MCDROPOUT_DISABLED_AT_INFERENCE`, `SELECTIVE_NO_TARGET`, `NO_CALIBRATION_UNDER_SHIFT` (Minor). Integrates MAPIE / captum / OOD scorers; never reimplements them or touches real patient data. |
494
502
  | **mllm-eval** | Model-agnostic evaluation harness (closed API or open weights) for an LLM/MLLM on a clinical task — radiology report generation, VQA, clinical text extraction — covering the adjudicated reference standard, clinical-efficacy metrics (RadGraph-F1 / CheXbert-F1 beyond BLEU/ROUGE), faithfulness/hallucination, pretraining-contamination, prompt sensitivity, and a reader study; gates the plan with `check_mllm_eval_completeness` and routes the reviewer audit to the MLLM probe. |
495
503
  | **intake-project** | Classifies new research projects, summarizes current state, identifies missing inputs, and recommends next steps. |
496
504
  | **grant-builder** | Structures grant proposals: significance, innovation, approach, milestones, and consortium roles. |
@@ -644,7 +652,7 @@ matrices without CSV-coordinate comments are flagged as structural risks even wh
644
652
  are currently correct, since the next revision will re-introduce the same failure mode.
645
653
 
646
654
  ### Reference Safety (Phase 1)
647
- Projects declare their source-of-truth layout in `SSOT.yaml`, and a `qc/migration_complete` marker gates strict enforcement. `/verify-refs` is the sole writer of `qc/reference_audit.json`. The `MEDSCI_VERIFY_REFS_MODE` env var (`auto` default, `warn`, `enforce`, `off`) controls behavior — `auto` blocks only when both SSOT.yaml and the migration marker are present, otherwise warns. Legacy projects freeze as warn-only; new projects opt in via `scripts/migrate_project_to_ssot.py`. An optional PostToolUse hook (not shipped in this repo — document only) can invoke `/verify-refs` automatically on manuscript saves for users who install it locally at `~/.claude/hooks/verify-refs-guard.sh`; the regression suite (`tests/test_phase1c_hooks.sh`) runs end-to-end only when that local hook is present and is skipped otherwise.
655
+ Projects declare their source-of-truth layout in `SSOT.yaml`, and a `qc/migration_complete` marker gates strict enforcement. `/verify-refs` is the sole writer of `qc/reference_audit.json`. The `MEDSCI_VERIFY_REFS_MODE` env var (`auto` default, `warn`, `enforce`, `off`) controls behavior — `auto` blocks only when both SSOT.yaml and the migration marker are present, otherwise warns. Legacy projects freeze as warn-only; new projects opt in via `scripts/migrate_project_to_ssot.py`. An optional PostToolUse hook (not shipped in this repo — document only) can invoke `/verify-refs` automatically on manuscript saves for users who install it locally at `~/.claude/hooks/verify-refs-guard.sh`; the regression suite (`tests/test_phase1c_hooks.sh`) runs end-to-end only when that local hook is present and is skipped otherwise. The hook gates saves under `*/submission/*/manuscript/*.{docx,md}` and `*/revision/R*/…circulation….docx` (enforce-eligible), and — added for issue #14 — also **warn-only** on pre-submission and mentor-circulation drafts that previously skipped the audit entirely: `*/outgoing/*.{docx,md}`, `*/8_Review_Comments/*/outgoing/*.{docx,md}`, and any `*/circulation/*.{docx,md}`. Warn-only patterns surface a missing audit without blocking rapid iteration and never enforce, regardless of SSOT/migration state.
648
656
 
649
657
  ### Meta-Analysis Failure Modes
650
658
  `/meta-analysis` ships empirical failure-mode references (data integrity, review orchestration, submission package drift, post-submission release ops) with four automation hooks: `scripts/prisma_5way_consistency.py` (DI-6 PRISMA number consistency), `scripts/extraction_consensus_log_init.py` (DI-1 dual-extraction scaffold), `scripts/tag_cleanup_gate.sh` (DI-8 placeholder tag gate), and `scripts/verify_package_integrity.py` (SPD SHA-256 manifest for submission bundles).
@@ -779,12 +787,18 @@ from one of these:
779
787
 
780
788
  | Want to add… | How | Issue |
781
789
  |---|---|---|
782
- | **A journal profile** (submission rules for a journal we don't cover) | `/add-journal`, or copy an existing `journal_profiles/*.md` | [#115](https://github.com/Aperivue/medsci-skills/issues/115) |
790
+ | **A CSL citation style** for a journal that lacks one | drop one `.csl` into `manage-refs/citation_styles/` | [#117](https://github.com/Aperivue/medsci-skills/issues/117) |
791
+ | **A de-identification locale pack** for one more country | add one patterns file under `deidentify/` | [#116](https://github.com/Aperivue/medsci-skills/issues/116) |
792
+ | **A README translation** (e.g., zh-CN) | one translated `README` file | [#119](https://github.com/Aperivue/medsci-skills/issues/119) |
783
793
  | **A figure exemplar** (ROC, KM, forest, Bland–Altman, confusion matrix…) | one `make-figures/references/exemplar_plots/*.md` anatomy model | [#118](https://github.com/Aperivue/medsci-skills/issues/118) |
784
- | **A CSL citation style** for a journal that lacks one | drop a `.csl` into `manage-refs/citation_styles/` | [#117](https://github.com/Aperivue/medsci-skills/issues/117) |
785
- | **A de-identification locale pack** for one more country | add patterns to `deidentify/` | [#116](https://github.com/Aperivue/medsci-skills/issues/116) |
794
+ | **A journal profile** (submission rules for a journal we don't cover) | `/add-journal`, or copy an existing `journal_profiles/*.md` | [#115](https://github.com/Aperivue/medsci-skills/issues/115) |
786
795
  | **A reporting checklist or peer-review exemplar** | one reference file in the matching skill | [#120](https://github.com/Aperivue/medsci-skills/issues/120) |
787
- | **A README translation** (e.g., zh-CN) | a translated `README` | [#119](https://github.com/Aperivue/medsci-skills/issues/119) |
796
+
797
+ Each of these adds **exactly one new file** — none requires editing a count, a generated
798
+ page, or the build config, and the catalog-consistency check auto-derives profile counts from
799
+ disk so it won't flag you. **No assignment needed: just open a PR — the first one that passes
800
+ CI wins, and a maintainer handles any bookkeeping in review.** See the
801
+ [5-minute first-PR quickstart](CONTRIBUTING.md#quickstart-your-first-pr-5-minutes) to get going.
788
802
 
789
803
  Every contribution is gated the same way the maintainers are: it must be a self-contained
790
804
  file, pass the CI (`validate.yml` — PII scan, structure, catalog consistency), and carry no
@@ -798,6 +812,8 @@ or a [detector request](https://github.com/Aperivue/medsci-skills/issues/new?tem
798
812
  [`docs/maintainer_workflow.md`](docs/maintainer_workflow.md) (review + release process),
799
813
  and [`SECURITY.md`](SECURITY.md) (vulnerability reporting + the medical-scope boundary).
800
814
  A change that touches a medical/research claim needs Clinical-Lead review.
815
+ Community members who have reported, verified, or shaped the project are credited in
816
+ [`CONTRIBUTORS.md`](CONTRIBUTORS.md).
801
817
 
802
818
  ## In the Wild
803
819
 
@@ -833,9 +849,9 @@ software citation is how a tool like this earns academic recognition, and it tak
833
849
  }
834
850
 
835
851
  @article{nam2026agentic,
836
- author = {Nam, Yoojin and Kim, Namkug},
837
- title = {{Agentic Skills for Auditable and Reproducible Medical Research Writing:
838
- An Integrity-gated Architecture for LLM-Assisted Clinical Manuscripts}},
852
+ author = {Nam, Yoojin and Jeong, Jinhoon and Kim, Namkug},
853
+ title = {{Deterministic Integrity Gates for LLM-Assisted Clinical Manuscript
854
+ Preparation: An Auditable Biomedical Informatics Architecture}},
839
855
  year = {2026},
840
856
  journal = {arXiv preprint arXiv:2606.09500},
841
857
  url = {https://arxiv.org/abs/2606.09500}
@@ -58,8 +58,13 @@
58
58
  },
59
59
  {
60
60
  "path": "skills/academic-aio/SKILL.md",
61
- "size": 31396,
62
- "sha256": "339f937d2218e11c8f6576df9bb6d5b2b827634092d8f4e6c1b6110e092076b5"
61
+ "size": 32276,
62
+ "sha256": "d893714e70af45b6f9d162d5220875685995e4a2c428331348689566e672989c"
63
+ },
64
+ {
65
+ "path": "skills/academic-aio/references/ai_tool_citation_framing.md",
66
+ "size": 4064,
67
+ "sha256": "e3c8403cc698a45bb5626b233c5cbf18eb283e6a606d6232471f0f0c657d0fec"
63
68
  },
64
69
  {
65
70
  "path": "skills/academic-aio/references/case_studies/kjr_mllm_2025.md",
@@ -423,8 +428,8 @@
423
428
  },
424
429
  {
425
430
  "path": "skills/architecture-zoo/SKILL.md",
426
- "size": 5712,
427
- "sha256": "ffb9a52d417f309a3b22c8d0f74e6700b67350c0d7a2a2e2c785f0cb4cb066bc"
431
+ "size": 6094,
432
+ "sha256": "abb4656f36e0ef068508269ce2ec87c832b7c8fb13c4cbc44af27b2dc8058bff"
428
433
  },
429
434
  {
430
435
  "path": "skills/architecture-zoo/references/classification.md",
@@ -441,10 +446,15 @@
441
446
  "size": 5267,
442
447
  "sha256": "495453b025f1cb13d5ba0bac9be6d3b0d63dd958ea48d2b9e55bc222e9c26786"
443
448
  },
449
+ {
450
+ "path": "skills/architecture-zoo/references/graph.md",
451
+ "size": 6913,
452
+ "sha256": "d6bea2d61a2f1d515810d1bf96bef80f156d816998134a3c911e6c4585728c2e"
453
+ },
444
454
  {
445
455
  "path": "skills/architecture-zoo/references/index.md",
446
- "size": 4024,
447
- "sha256": "d2360eb8635347f0f22be0b0e337a540db865aafdc12678455cf32bc49fd9d3d"
456
+ "size": 4334,
457
+ "sha256": "f812ec9afe2ba06c42da8de851cea08632d61eb98e87cd3edd7cdd17f39e226e"
448
458
  },
449
459
  {
450
460
  "path": "skills/architecture-zoo/references/segmentation.md",
@@ -458,8 +468,8 @@
458
468
  },
459
469
  {
460
470
  "path": "skills/architecture-zoo/skill.yml",
461
- "size": 2836,
462
- "sha256": "7d7c727a9fc75383e775feac14faf1c4caad90307ed8ca20859ef499ac17deb0"
471
+ "size": 2851,
472
+ "sha256": "c9e03a47973bab737587d22ebac4cd7b27b5c5af55a271efb8f71abba7fa70cf"
463
473
  },
464
474
  {
465
475
  "path": "skills/author-strategy/SKILL.md",
@@ -1028,8 +1038,8 @@
1028
1038
  },
1029
1039
  {
1030
1040
  "path": "skills/design-study/SKILL.md",
1031
- "size": 19220,
1032
- "sha256": "d4a05f6dd2530620bd1ec3e1c64ba0625aae25def12892247e61a77724132cd6"
1041
+ "size": 20296,
1042
+ "sha256": "98644b7750b65ff9bb38af7cb6e0b3300169f498332a3f143394cc35f5ba7ff7"
1033
1043
  },
1034
1044
  {
1035
1045
  "path": "skills/design-study/references/dag_adjustment.md",
@@ -2263,8 +2273,8 @@
2263
2273
  },
2264
2274
  {
2265
2275
  "path": "skills/make-figures/skill.yml",
2266
- "size": 2205,
2267
- "sha256": "b973c376998b15cefe9bffdf580889f905b60ddc2dead00cc5cbc900a6fd50f5"
2276
+ "size": 2249,
2277
+ "sha256": "6a8ebbe077c2073bb546a044bbecb5d483dbe2d2a50b31adabba6cf5e3a87990"
2268
2278
  },
2269
2279
  {
2270
2280
  "path": "skills/make-figures/templates/official/NOTES.md",
@@ -2368,8 +2378,8 @@
2368
2378
  },
2369
2379
  {
2370
2380
  "path": "skills/manage-refs/SKILL.md",
2371
- "size": 18165,
2372
- "sha256": "49adc82dea2b5d7eb93946b2cd8143d66d50b53169d3ed18f4bd738bfe3af39f"
2381
+ "size": 18627,
2382
+ "sha256": "abb0f38acbff93ffdff68be6a29b68757027fd7ffec545abd90df2df4113c08c"
2373
2383
  },
2374
2384
  {
2375
2385
  "path": "skills/manage-refs/citation_styles/README.md",
@@ -2713,13 +2723,13 @@
2713
2723
  },
2714
2724
  {
2715
2725
  "path": "skills/mllm-eval/references/evaluation_axes.md",
2716
- "size": 10857,
2717
- "sha256": "49d77ab63feae5dba5cdae7e47d9de6ea97ee3b9eea4b9cba39ec8b0e185be72"
2726
+ "size": 11609,
2727
+ "sha256": "0bad98d58685c638132c891c7c4d8b3c4620fe0988994d3307458382167d3d92"
2718
2728
  },
2719
2729
  {
2720
2730
  "path": "skills/mllm-eval/scripts/check_mllm_eval_completeness.py",
2721
- "size": 9380,
2722
- "sha256": "fe24a9b0dfcce7d826c29be59f2534c768daf73e1e98f545e8a7791bc0709079"
2731
+ "size": 9386,
2732
+ "sha256": "bb714a45449a26ccafca9e988a95aaa6af92fb8f3b79cfc03f8b47768f37aaec"
2723
2733
  },
2724
2734
  {
2725
2735
  "path": "skills/mllm-eval/scripts/mllm_eval_completeness_challenge/fixture/plan_bad.md",
@@ -2803,23 +2813,23 @@
2803
2813
  },
2804
2814
  {
2805
2815
  "path": "skills/model-evaluation/SKILL.md",
2806
- "size": 5780,
2807
- "sha256": "334b4ca87a2f672446563f3fb6d78c0585386fac12aee29e10dc09465e892193"
2816
+ "size": 7380,
2817
+ "sha256": "b39293e54402fa79ac73de827201f4cd98bb2cc70fd1cd4fc8da4e940d429b3b"
2808
2818
  },
2809
2819
  {
2810
2820
  "path": "skills/model-evaluation/references/metric_guide.md",
2811
- "size": 2454,
2812
- "sha256": "8d09ca7ce9fb9f66ee4942689294d9b12ae1d892ac67769cd68fdc38a4e220ee"
2821
+ "size": 6194,
2822
+ "sha256": "b8cb061cf40b0736961a4f06eb7f6b60f238a0e19f7b47e07f3cb38a82097f52"
2813
2823
  },
2814
2824
  {
2815
2825
  "path": "skills/model-evaluation/references/metric_selection_grounding.md",
2816
- "size": 9588,
2817
- "sha256": "56723e73b2b74299140d353921d1dba471bedf9aea0b8e769fc69995c4733995"
2826
+ "size": 10256,
2827
+ "sha256": "535282ae5cfbf2593c3e40926143e2ebd081ebbd78ac972cb0e6aeae839d1e77"
2818
2828
  },
2819
2829
  {
2820
2830
  "path": "skills/model-evaluation/scripts/check_metric_reporting.py",
2821
- "size": 9562,
2822
- "sha256": "fd6c0205f652651a5a43910cb415ed8442100fc553ce04aa5d5905d97743a0bf"
2831
+ "size": 17964,
2832
+ "sha256": "f1315745ceba694cb2437a412618d86cd7f0a7f4e652f5ced2cc207b67eaa731"
2823
2833
  },
2824
2834
  {
2825
2835
  "path": "skills/model-evaluation/scripts/metric_reporting_challenge/fixture/clf_bad.md",
@@ -2841,6 +2851,31 @@
2841
2851
  "size": 224,
2842
2852
  "sha256": "08227fbe46829b8eecdfe15680e1bb32087f1e6c5a353b3df6055c67d8300fc0"
2843
2853
  },
2854
+ {
2855
+ "path": "skills/model-evaluation/scripts/metric_reporting_challenge/fixture/generative_bad.md",
2856
+ "size": 134,
2857
+ "sha256": "f4ac7e4d2d6dd12125e832a55363579181546d68411f49984680f334db5c8cb4"
2858
+ },
2859
+ {
2860
+ "path": "skills/model-evaluation/scripts/metric_reporting_challenge/fixture/generative_good.md",
2861
+ "size": 437,
2862
+ "sha256": "d218437b09d8d80fa13aa52a03c65fd6156d95e99204762cafaa7021c4b4b21f"
2863
+ },
2864
+ {
2865
+ "path": "skills/model-evaluation/scripts/metric_reporting_challenge/fixture/interactive_bad.md",
2866
+ "size": 128,
2867
+ "sha256": "be714934c18566a89c6c7b06951a420d8e2cbfca814e1daf26df87866252a185"
2868
+ },
2869
+ {
2870
+ "path": "skills/model-evaluation/scripts/metric_reporting_challenge/fixture/interactive_good.md",
2871
+ "size": 500,
2872
+ "sha256": "a45e14485fb02f0ee790350235c652ea2b871aa16cfd89e12a32e49cd6e1b9ca"
2873
+ },
2874
+ {
2875
+ "path": "skills/model-evaluation/scripts/metric_reporting_challenge/fixture/multiclass_bad.md",
2876
+ "size": 128,
2877
+ "sha256": "0ab44d8dcdf4ec8281c7afb7db021e61bb368f2f30bd5ec49ed5bcf962319421"
2878
+ },
2844
2879
  {
2845
2880
  "path": "skills/model-evaluation/scripts/metric_reporting_challenge/fixture/seg_bad.md",
2846
2881
  "size": 119,
@@ -2858,28 +2893,33 @@
2858
2893
  },
2859
2894
  {
2860
2895
  "path": "skills/model-evaluation/scripts/metric_reporting_challenge/verify.sh",
2861
- "size": 1663,
2862
- "sha256": "4aa6db49d3552f01a54ddb70484df5d214806d805b836b24beda81d9aca32bd6"
2896
+ "size": 2642,
2897
+ "sha256": "3efa9aff1f4ed223b7114740cac9cb67801456ffbfa3e5f7a7f1df7f46ada565"
2863
2898
  },
2864
2899
  {
2865
2900
  "path": "skills/model-evaluation/skill.yml",
2866
- "size": 2921,
2867
- "sha256": "9713dbab40c54ca88324e7dcd74d3142890f9625ad68d708ba40b0cf57a7b9ee"
2901
+ "size": 2944,
2902
+ "sha256": "d055072bcfb86d84b90f0b29790a262a496a95e4fe8ffbf38d02a28bf9db258e"
2868
2903
  },
2869
2904
  {
2870
2905
  "path": "skills/model-scaffold/SKILL.md",
2871
- "size": 9237,
2872
- "sha256": "d7e736178cb60d2d13cef9174474297bd54bc6d4d1f3862023d802ff0c034a95"
2906
+ "size": 9527,
2907
+ "sha256": "8fcf4060f064a1924d4bec278e0c0c628c99caf6ea75f617f8b9748cbb207ed8"
2873
2908
  },
2874
2909
  {
2875
2910
  "path": "skills/model-scaffold/references/finetuning_guide.md",
2876
2911
  "size": 6208,
2877
2912
  "sha256": "b7817d53eeeb506b573beaae1889fa863dd81286d474ab99b46b38ad046b32e7"
2878
2913
  },
2914
+ {
2915
+ "path": "skills/model-scaffold/references/mlops_guide.md",
2916
+ "size": 5171,
2917
+ "sha256": "cc9b62ed588daf97b40b6d7a8e27f9b6de96b9f5752ad2baa8e180e01d3d4973"
2918
+ },
2879
2919
  {
2880
2920
  "path": "skills/model-scaffold/references/training_guide.md",
2881
- "size": 2661,
2882
- "sha256": "4a3197a89b8d3473071051f67a7bcf40f71ecf007e942f81e9c40dc48fce1a9c"
2921
+ "size": 2840,
2922
+ "sha256": "9a7f7b5dda65e71d8007cb6539cda0cfb9c6b1f2c877aedee4646f368686e96f"
2883
2923
  },
2884
2924
  {
2885
2925
  "path": "skills/model-scaffold/scripts/check_training_hygiene.py",
@@ -2918,8 +2958,8 @@
2918
2958
  },
2919
2959
  {
2920
2960
  "path": "skills/model-validation/SKILL.md",
2921
- "size": 10836,
2922
- "sha256": "5cfd4ac6d75b3a474408b10d8eead3fdf7be8a44e1578dcac332cc2203ae75fe"
2961
+ "size": 11524,
2962
+ "sha256": "ac326c03451282a5adeeb3592f511dac47720bba9338dba761bf6ea4679d7c0b"
2923
2963
  },
2924
2964
  {
2925
2965
  "path": "skills/model-validation/references/validation_design.md",
@@ -2998,8 +3038,8 @@
2998
3038
  },
2999
3039
  {
3000
3040
  "path": "skills/peer-review/SKILL.md",
3001
- "size": 69384,
3002
- "sha256": "94033b84b41304d7dbd7919c84c7e9502bdaff1b7e2ef8f5dd7ec9cd7147c532"
3041
+ "size": 70338,
3042
+ "sha256": "246beb8a3c3c6eef78180a6ab1d87fa49db4f98d55964af5b3ab0ce5d0e7e3b0"
3003
3043
  },
3004
3044
  {
3005
3045
  "path": "skills/peer-review/references/aczel_2021_reviewer2_patterns.md",
@@ -3468,8 +3508,8 @@
3468
3508
  },
3469
3509
  {
3470
3510
  "path": "skills/render-pdf-doc/SKILL.md",
3471
- "size": 7490,
3472
- "sha256": "2de13f525ab617dc3a5d67403f8668c26829d927732ae2ac718158b109861243"
3511
+ "size": 8300,
3512
+ "sha256": "fad21da8e60907c212b6d216ffe591502941c8defa4ce212b521306e00332836"
3473
3513
  },
3474
3514
  {
3475
3515
  "path": "skills/render-pdf-doc/references/known_pitfalls.md",
@@ -3483,8 +3523,8 @@
3483
3523
  },
3484
3524
  {
3485
3525
  "path": "skills/render-pdf-doc/scripts/check_deps.sh",
3486
- "size": 984,
3487
- "sha256": "84d5b4d3455a66f21baaa2a3be1f01b9cba58c9e50331138c7132d23531f211d"
3526
+ "size": 2183,
3527
+ "sha256": "782efdda541c0a84a8d978bb076d43a1d3a026a00b878205dd6d922a197186f6"
3488
3528
  },
3489
3529
  {
3490
3530
  "path": "skills/render-pdf-doc/scripts/infer_colwidths.py",
@@ -3493,8 +3533,8 @@
3493
3533
  },
3494
3534
  {
3495
3535
  "path": "skills/render-pdf-doc/scripts/render_pdf.sh",
3496
- "size": 2874,
3497
- "sha256": "aad89324341121270be0093a05ff944927696180a27a97068f2faf906321e987"
3536
+ "size": 3958,
3537
+ "sha256": "b5a9ebcbb25b1ec85577c9864f60f4f363e90f88896903cff48f7626f5b6b95a"
3498
3538
  },
3499
3539
  {
3500
3540
  "path": "skills/render-pdf-doc/scripts/scan_glyph_coverage.py",
@@ -3503,8 +3543,8 @@
3503
3543
  },
3504
3544
  {
3505
3545
  "path": "skills/render-pdf-doc/skill.yml",
3506
- "size": 3131,
3507
- "sha256": "af400eb4f819fd982dc0df71ed6ad8b003987a164fbff1cf467c9d1d3c0c0a6c"
3546
+ "size": 3133,
3547
+ "sha256": "77fe112e5a013d3169290132f9882fbb05b3ebe9317729960582895509c21568"
3508
3548
  },
3509
3549
  {
3510
3550
  "path": "skills/render-pdf-doc/templates/anchor-doc.md",
@@ -3588,18 +3628,23 @@
3588
3628
  },
3589
3629
  {
3590
3630
  "path": "skills/revise/SKILL.md",
3591
- "size": 27775,
3592
- "sha256": "2da4f80e879c2d3ff31d2af435cb27ecae0ba09f1014b8ebbd799ac2472ff1ea"
3631
+ "size": 28904,
3632
+ "sha256": "c1851293ea0f59c658a1a5b4b303667de3e55f693ee5fddc2148d7245bab60ea"
3593
3633
  },
3594
3634
  {
3595
3635
  "path": "skills/revise/references/r2r_voice.md",
3596
3636
  "size": 17042,
3597
3637
  "sha256": "d6e657ab4d864e0c12c6d3c8e7db5060dfcea0c56d0f9afccd876702f8b8adcf"
3598
3638
  },
3639
+ {
3640
+ "path": "skills/revise/scripts/check_response_claims.py",
3641
+ "size": 9798,
3642
+ "sha256": "ef5e67cf757e146b43c578753fcafd10632676b08eec00328eb5100e20dc79b6"
3643
+ },
3599
3644
  {
3600
3645
  "path": "skills/revise/skill.yml",
3601
- "size": 1873,
3602
- "sha256": "972bcb3f09675ab830f27dd447948059d7de583a7e7317501be7212f72d82683"
3646
+ "size": 2261,
3647
+ "sha256": "421670bd78193e01966d08d08b22f044a6c396cba0bed99ae50fbb8f6c6564a5"
3603
3648
  },
3604
3649
  {
3605
3650
  "path": "skills/search-lit/SKILL.md",
@@ -3943,8 +3988,8 @@
3943
3988
  },
3944
3989
  {
3945
3990
  "path": "skills/sync-submission/SKILL.md",
3946
- "size": 27787,
3947
- "sha256": "4da14c76c6c9326d31ee93e9515854291cba2c48692eb85cf5d9f6f4301ce465"
3991
+ "size": 28938,
3992
+ "sha256": "deb2d8b9d9939e84f2a0eaf57584b900b62eadf1d398ea60a49e3720d7ab174b"
3948
3993
  },
3949
3994
  {
3950
3995
  "path": "skills/sync-submission/references/journal_availability_policy.json",
@@ -3983,8 +4028,8 @@
3983
4028
  },
3984
4029
  {
3985
4030
  "path": "skills/sync-submission/scripts/check_cross_artifact_stale.py",
3986
- "size": 8286,
3987
- "sha256": "8316f2779f2cd523b9316736396074e5c06ea8270f7cb29286b4511e74a6fc1e"
4031
+ "size": 11679,
4032
+ "sha256": "613cdbab508fa2767e7b445624829d645c3a917e8f3d58a72dd66bcac7fd0586"
3988
4033
  },
3989
4034
  {
3990
4035
  "path": "skills/sync-submission/scripts/check_disclosure_availability.py",
@@ -4031,6 +4076,56 @@
4031
4076
  "size": 1911,
4032
4077
  "sha256": "7f549269905cad97493d7699dad0068e410e8a8d771814988911bec5b0648d4c"
4033
4078
  },
4079
+ {
4080
+ "path": "skills/uncertainty-imaging/SKILL.md",
4081
+ "size": 8224,
4082
+ "sha256": "0ff26311b9b372a074751d9b64c5fc20ec7440aabe76fd17c3f2e09d54d4a080"
4083
+ },
4084
+ {
4085
+ "path": "skills/uncertainty-imaging/references/uncertainty_guide.md",
4086
+ "size": 5574,
4087
+ "sha256": "fb63c7b48b00fc371dca2ed1a7bdb9932b318ceba6334bae5097f4da3b08b38a"
4088
+ },
4089
+ {
4090
+ "path": "skills/uncertainty-imaging/scripts/check_uncertainty_reporting.py",
4091
+ "size": 13042,
4092
+ "sha256": "2f14f78da71254d82977c8edc9f8c32bcde2e6d6d8e9c971af8114219ce558b5"
4093
+ },
4094
+ {
4095
+ "path": "skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/expected/strong.txt",
4096
+ "size": 414,
4097
+ "sha256": "2d3f1cbeb88b00d1ef8968c276f17d276c152eafbf445d3879315bd727a16c61"
4098
+ },
4099
+ {
4100
+ "path": "skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/expected/weak.txt",
4101
+ "size": 1077,
4102
+ "sha256": "b37379da88b17881678d50534ad993823a9a7c3b96a9942ca45be21caed39aaf"
4103
+ },
4104
+ {
4105
+ "path": "skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/fixture/uncertainty_strong.json",
4106
+ "size": 323,
4107
+ "sha256": "39a64a9e327bf00151d3bb7e1394e7ba87c04ed0df6523256f22d55c127320bf"
4108
+ },
4109
+ {
4110
+ "path": "skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/fixture/uncertainty_weak.json",
4111
+ "size": 204,
4112
+ "sha256": "5748d22600c8f68485f3ab665c32eace4a4dfc827df7f98c1c09640d82f304c2"
4113
+ },
4114
+ {
4115
+ "path": "skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/problem.md",
4116
+ "size": 2460,
4117
+ "sha256": "fb3350f915b3b4a36a91718f93837f4331410d209f66fbd7e7d751fd35af4cc9"
4118
+ },
4119
+ {
4120
+ "path": "skills/uncertainty-imaging/scripts/check_uncertainty_reporting_challenge/verify.sh",
4121
+ "size": 2117,
4122
+ "sha256": "5ff542ed3c4b0a479a6c2f906cefbb75494cb1ca8118e121afaf45f07f31bb80"
4123
+ },
4124
+ {
4125
+ "path": "skills/uncertainty-imaging/skill.yml",
4126
+ "size": 3753,
4127
+ "sha256": "a229c56e3133db1ed616880f76903bbf825ee59591eb26534d4ddb172cf0945c"
4128
+ },
4034
4129
  {
4035
4130
  "path": "skills/verify-refs/SKILL.md",
4036
4131
  "size": 11846,
@@ -4038,8 +4133,8 @@
4038
4133
  },
4039
4134
  {
4040
4135
  "path": "skills/verify-refs/references/manual_checkpoint_guide.md",
4041
- "size": 3727,
4042
- "sha256": "86832ad71dbeaf8287258d0ccab6e32ffd75e9fa5787b9240703c8a951b18d4e"
4136
+ "size": 4031,
4137
+ "sha256": "4da6bd649d672bcae7505098d4712d6fb253fea8fa3be41c95870587cc6553a4"
4043
4138
  },
4044
4139
  {
4045
4140
  "path": "skills/verify-refs/scripts/verify_cli.sh",
@@ -4048,13 +4143,13 @@
4048
4143
  },
4049
4144
  {
4050
4145
  "path": "skills/verify-refs/scripts/verify_refs.py",
4051
- "size": 41415,
4052
- "sha256": "4377e25e6b125ace31fd35df9ffdd21a413f0f70ba1e429e5bfcf50c0a29510e"
4146
+ "size": 43072,
4147
+ "sha256": "ce0db6183942afdb2dfd55733c8b1330dee1b10ce091ce99c31497f83d9c4e0b"
4053
4148
  },
4054
4149
  {
4055
4150
  "path": "skills/verify-refs/skill.yml",
4056
- "size": 2248,
4057
- "sha256": "3933c313777557ad8ac82b9ed6389fba12675880588af85193791f3facc636e9"
4151
+ "size": 2291,
4152
+ "sha256": "608e80234418a3560c9662e83a786b20ad16a340b934bfea59e2421712595fc5"
4058
4153
  },
4059
4154
  {
4060
4155
  "path": "skills/version-dataset/SKILL.md",
@@ -4078,8 +4173,8 @@
4078
4173
  },
4079
4174
  {
4080
4175
  "path": "skills/write-paper/SKILL.md",
4081
- "size": 67054,
4082
- "sha256": "62b3cbff56a139ed20a783c462fb6dde6b7a932bb057762a2d1c6382c8d044c1"
4176
+ "size": 68059,
4177
+ "sha256": "d05e1bbde228a87abf459ec19484e560dc08b7e88213e36655b680ebecf7dd8f"
4083
4178
  },
4084
4179
  {
4085
4180
  "path": "skills/write-paper/references/exemplar_abstract.md",
@@ -4571,10 +4666,15 @@
4571
4666
  "size": 7437,
4572
4667
  "sha256": "6bc4032302265ba2c834212e77fbe78b8ddeddba716c833ecf8c65e85e586320"
4573
4668
  },
4669
+ {
4670
+ "path": "skills/write-paper/scripts/gate_backbone_fulltext.py",
4671
+ "size": 8358,
4672
+ "sha256": "fa06f0d38c59b319a6cb892f4fb0beeccbf147ec4377a87d0f4b35a49d607050"
4673
+ },
4574
4674
  {
4575
4675
  "path": "skills/write-paper/skill.yml",
4576
- "size": 2191,
4577
- "sha256": "06bd12d85f94702b6e23f74ea8e7009a746d31d247e437f4ba08ea6bd26f7d18"
4676
+ "size": 2466,
4677
+ "sha256": "185eb0948913e0fd0c0f6ddcf4bea30ff7d6b50185b5c6c401b51600039b745c"
4578
4678
  },
4579
4679
  {
4580
4680
  "path": "skills/write-protocol/SKILL.md",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "version": "5.16.0",
3
+ "version": "5.18.0",
4
4
  "owned_skills": [
5
5
  "academic-aio",
6
6
  "add-journal",
@@ -52,6 +52,7 @@
52
52
  "self-review",
53
53
  "setup-medsci",
54
54
  "sync-submission",
55
+ "uncertainty-imaging",
55
56
  "verify-refs",
56
57
  "version-dataset",
57
58
  "write-paper",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "_comment": "AUTO-GENERATED by scripts/gen_skills_catalog_json.py from each skills/<slug>/SKILL.md + skill.yml. Machine-readable skill catalog (single source of truth) consumed by external surfaces such as the aperivue.com storefront to gate skill-list completeness. Do not hand-edit; CI gate: python3 scripts/gen_skills_catalog_json.py --check.",
3
- "skill_count": 54,
3
+ "skill_count": 55,
4
4
  "categories": [
5
5
  {
6
6
  "key": "literature_references",
@@ -39,7 +39,8 @@
39
39
  "model-scaffold",
40
40
  "model-validation",
41
41
  "preprocess-imaging",
42
- "radiomics-ml"
42
+ "radiomics-ml",
43
+ "uncertainty-imaging"
43
44
  ]
44
45
  },
45
46
  {
@@ -562,6 +563,15 @@
562
563
  "maturity": "official",
563
564
  "description": "Audit SSOT-to-submission drift and create journal submission manifests from canonical manuscript artifacts."
564
565
  },
566
+ {
567
+ "slug": "uncertainty-imaging",
568
+ "category": "model_engineering",
569
+ "category_label": "Model Engineering & Validation",
570
+ "layer": "D",
571
+ "owner_domain": "model_validation",
572
+ "maturity": "official",
573
+ "description": "Design or audit the uncertainty-quantification, out-of-distribution (OOD) detection, and selective-prediction layer of a medical-imaging model framed for deployment — so a clinical-use claim carries c…"
574
+ },
565
575
  {
566
576
  "slug": "verify-refs",
567
577
  "category": "literature_references",