medsci-skills 5.24.0 → 5.26.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 (229) hide show
  1. package/README.md +76 -12
  2. package/README.zh-CN.md +1048 -0
  3. package/installers/install.py +245 -17
  4. package/installers/medsci_txn.py +29 -7
  5. package/metadata/distribution_files.json +533 -313
  6. package/metadata/distribution_manifest.json +2 -1
  7. package/metadata/skills_catalog.json +11 -1
  8. package/package.json +1 -1
  9. package/skills/academic-aio/SKILL.md +1 -1
  10. package/skills/check-reporting/SKILL.md +46 -15
  11. package/skills/check-reporting/references/LICENSES.md +76 -52
  12. package/skills/check-reporting/references/checklists/AMSTAR2.md +17 -1
  13. package/skills/check-reporting/references/checklists/ARRIVE_2.md +95 -118
  14. package/skills/check-reporting/references/checklists/CARE.md +9 -1
  15. package/skills/check-reporting/references/checklists/CHEERS_2022.md +4 -0
  16. package/skills/check-reporting/references/checklists/CLAIM_2024.md +7 -0
  17. package/skills/check-reporting/references/checklists/CLEAR.md +3 -0
  18. package/skills/check-reporting/references/checklists/CONSORT.md +7 -1
  19. package/skills/check-reporting/references/checklists/CONSORT_AI.md +14 -3
  20. package/skills/check-reporting/references/checklists/COREQ.md +2 -1
  21. package/skills/check-reporting/references/checklists/COSMIN_RoB.md +65 -61
  22. package/skills/check-reporting/references/checklists/CROSS.md +78 -58
  23. package/skills/check-reporting/references/checklists/DECIDE_AI.md +13 -4
  24. package/skills/check-reporting/references/checklists/GATHER.md +42 -23
  25. package/skills/check-reporting/references/checklists/GRRAS.md +42 -21
  26. package/skills/check-reporting/references/checklists/MI_CLEAR_LLM.md +6 -1
  27. package/skills/check-reporting/references/checklists/MOOSE.md +10 -3
  28. package/skills/check-reporting/references/checklists/NOS.md +28 -8
  29. package/skills/check-reporting/references/checklists/PGS_RS.md +8 -1
  30. package/skills/check-reporting/references/checklists/PRISMA_2020.md +18 -7
  31. package/skills/check-reporting/references/checklists/PRISMA_2020_Abstracts.md +96 -0
  32. package/skills/check-reporting/references/checklists/PRISMA_DTA.md +123 -36
  33. package/skills/check-reporting/references/checklists/PRISMA_P.md +6 -0
  34. package/skills/check-reporting/references/checklists/PRISMA_ScR.md +65 -20
  35. package/skills/check-reporting/references/checklists/PROBAST.md +60 -35
  36. package/skills/check-reporting/references/checklists/PROBAST_AI.md +4 -0
  37. package/skills/check-reporting/references/checklists/QUADAS2.md +107 -45
  38. package/skills/check-reporting/references/checklists/QUADAS3.md +242 -0
  39. package/skills/check-reporting/references/checklists/QUADAS_C.md +29 -6
  40. package/skills/check-reporting/references/checklists/RECORD.md +6 -1
  41. package/skills/check-reporting/references/checklists/REMARK.md +21 -13
  42. package/skills/check-reporting/references/checklists/ROBINS_E.md +14 -3
  43. package/skills/check-reporting/references/checklists/ROBINS_I.md +34 -8
  44. package/skills/check-reporting/references/checklists/ROBIS.md +26 -4
  45. package/skills/check-reporting/references/checklists/ROB_ME.md +15 -1
  46. package/skills/check-reporting/references/checklists/RoB2.md +106 -52
  47. package/skills/check-reporting/references/checklists/RoB_NMA.md +91 -68
  48. package/skills/check-reporting/references/checklists/SPIRIT.md +8 -2
  49. package/skills/check-reporting/references/checklists/SPIRIT_AI.md +14 -3
  50. package/skills/check-reporting/references/checklists/SQUIRE_2.md +6 -1
  51. package/skills/check-reporting/references/checklists/SRQR.md +2 -1
  52. package/skills/check-reporting/references/checklists/STARD.md +115 -124
  53. package/skills/check-reporting/references/checklists/STROBE.md +8 -0
  54. package/skills/check-reporting/references/checklists/STROBE_MR.md +128 -62
  55. package/skills/check-reporting/references/checklists/SWiM.md +20 -9
  56. package/skills/check-reporting/references/checklists/TARGET.md +10 -3
  57. package/skills/check-reporting/references/checklists/TRIPOD.md +10 -2
  58. package/skills/check-reporting/references/checklists/TRIPOD_AI.md +14 -7
  59. package/skills/check-reporting/references/checklists/TRIPOD_LLM.md +12 -1
  60. package/skills/check-reporting/references/step4d_prisma_figure_audit.md +0 -1
  61. package/skills/clean-data/SKILL.md +1 -1
  62. package/skills/contribute/scripts/check_contribution_safety.py +30 -4
  63. package/skills/contribute/tests/test_contribution_safety.sh +38 -1
  64. package/skills/fill-icmje-coi/SKILL.md +2 -2
  65. package/skills/fill-protocol/scripts/fill_form.py +48 -23
  66. package/skills/fill-protocol/tests/test_fill_form_newlines.sh +141 -0
  67. package/skills/find-journal/SKILL.md +1 -1
  68. package/skills/find-journal/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +1 -1
  69. package/skills/find-journal/references/journal_profiles/JACC_Advances.md +2 -2
  70. package/skills/find-journal/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +1 -1
  71. package/skills/find-journal/references/journal_profiles/Korean_Circulation_Journal.md +1 -1
  72. package/skills/find-journal/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +1 -1
  73. package/skills/intake-project/SKILL.md +1 -1
  74. package/skills/lit-sync/SKILL.md +46 -8
  75. package/skills/lit-sync/references/bbt_lookup.md +57 -0
  76. package/skills/lit-sync/scripts/check_citekey_provenance.py +210 -0
  77. package/skills/lit-sync/skill.yml +2 -0
  78. package/skills/lit-sync/tests/citekey_provenance_challenge.sh +117 -0
  79. package/skills/lit-sync/tests/citekey_provenance_challenge_selftest.sh +85 -0
  80. package/skills/lit-sync/tests/test_poll_logic.sh +14 -4
  81. package/skills/make-figures/references/reporting_guideline_figure_map.md +2 -2
  82. package/skills/manage-refs/references/check_xref_symptoms.md +4 -4
  83. package/skills/manage-refs/scripts/check_xref.py +5 -5
  84. package/skills/manage-refs/scripts/render_pandoc.sh +4 -1
  85. package/skills/manage-refs/scripts/strip_source_metadata.lua +7 -0
  86. package/skills/manage-refs/tests/test_csl_render.sh +24 -0
  87. package/skills/meta-analysis/SKILL.md +103 -26
  88. package/skills/meta-analysis/references/checklists/NOS.md +28 -8
  89. package/skills/meta-analysis/references/checklists/PRISMA_DTA.md +123 -36
  90. package/skills/meta-analysis/references/checklists/PROBAST.md +60 -35
  91. package/skills/meta-analysis/references/checklists/QUADAS2.md +107 -45
  92. package/skills/meta-analysis/references/checklists/QUADAS3.md +242 -0
  93. package/skills/meta-analysis/references/checklists/ROBINS_I.md +34 -8
  94. package/skills/meta-analysis/references/checklists/RoB2.md +106 -52
  95. package/skills/meta-analysis/references/empirical_lessons.md +2 -1
  96. package/skills/meta-analysis/references/phase3_screening_detail.md +9 -10
  97. package/skills/meta-analysis/references/phase4_extraction_detail.md +1 -1
  98. package/skills/meta-analysis/references/phase6_statistical_synthesis.md +131 -7
  99. package/skills/model-validation/SKILL.md +3 -3
  100. package/skills/model-validation/references/validation_design.md +1 -1
  101. package/skills/obsidian-paper-vault/SKILL.md +144 -0
  102. package/skills/obsidian-paper-vault/assets/example_concept_note.md +50 -0
  103. package/skills/obsidian-paper-vault/assets/example_paper_note.md +51 -0
  104. package/skills/obsidian-paper-vault/assets/example_queue.md +52 -0
  105. package/skills/obsidian-paper-vault/references/concept-extraction.md +91 -0
  106. package/skills/obsidian-paper-vault/references/locale/ko/note_templates.md +127 -0
  107. package/skills/obsidian-paper-vault/references/subagent-prompt.md +100 -0
  108. package/skills/obsidian-paper-vault/references/tag-vocabulary.md +60 -0
  109. package/skills/obsidian-paper-vault/references/templates.md +145 -0
  110. package/skills/obsidian-paper-vault/references/workflow.md +85 -0
  111. package/skills/obsidian-paper-vault/scripts/extract_pdfs.py +85 -0
  112. package/skills/obsidian-paper-vault/skill.yml +54 -0
  113. package/skills/orchestrate/SKILL.md +3 -1
  114. package/skills/peer-review/SKILL.md +57 -170
  115. package/skills/peer-review/references/domain-probes/ai_overclaiming.md +2 -2
  116. package/skills/peer-review/references/domain-probes/clinical_prediction_model.md +2 -2
  117. package/skills/peer-review/references/domain-probes/diagnostic_accuracy.md +8 -2
  118. package/skills/peer-review/references/domain-probes/model_development.md +18 -2
  119. package/skills/peer-review/references/domain-probes/narrative_review.md +10 -0
  120. package/skills/peer-review/references/domain-probes/observational_confounding.md +12 -2
  121. package/skills/peer-review/references/domain-probes/radiomics.md +10 -0
  122. package/skills/peer-review/references/domain-probes/sr_ma.md +2 -2
  123. package/skills/peer-review/references/domain-probes/survival_prognostic.md +10 -0
  124. package/skills/peer-review/references/reviewer_calibration/recommendation_calibration.md +92 -0
  125. package/skills/peer-review/references/reviewer_profiles/EURE.md +11 -5
  126. package/skills/peer-review/references/reviewer_profiles/INSI.md +1 -1
  127. package/skills/peer-review/references/reviewer_profiles/README.md +44 -3
  128. package/skills/peer-review/references/reviewer_profiles/RYAI.md +27 -4
  129. package/skills/peer-review/scripts/check_review_boxes.py +5 -5
  130. package/skills/preprocess-imaging/SKILL.md +15 -0
  131. package/skills/preprocess-imaging/scripts/check_normalizer_domain.py +196 -0
  132. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/expected/arbitrary_mismatch.txt +10 -0
  133. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/expected/hu_clean.txt +9 -0
  134. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/fixture/plan_ct.json +25 -0
  135. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/fixture/profile_arbitrary.json +236 -0
  136. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/fixture/profile_hu.json +144 -0
  137. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/problem.md +42 -0
  138. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/verify.sh +46 -0
  139. package/skills/present-paper/SKILL.md +204 -4
  140. package/skills/present-paper/references/ai_slide_tells.md +49 -0
  141. package/skills/present-paper/references/generate_pptx_templates.py +6 -1
  142. package/skills/present-paper/references/generated_illustrations.md +133 -0
  143. package/skills/present-paper/references/spoken_notes_and_bilingual.md +156 -0
  144. package/skills/present-paper/scripts/check_deck_budget.py +23 -2
  145. package/skills/present-paper/scripts/check_deck_budget_challenge/make_fixtures.py +59 -2
  146. package/skills/present-paper/scripts/check_deck_budget_challenge/verify.sh +40 -0
  147. package/skills/present-paper/scripts/check_diagram_edges.py +160 -0
  148. package/skills/present-paper/scripts/check_diagram_edges_challenge/make_fixtures.py +65 -0
  149. package/skills/present-paper/scripts/check_diagram_edges_challenge/verify.sh +84 -0
  150. package/skills/present-paper/scripts/check_font_portability.py +353 -0
  151. package/skills/present-paper/scripts/check_font_portability_challenge/make_fixtures.py +111 -0
  152. package/skills/present-paper/scripts/check_font_portability_challenge/verify.sh +99 -0
  153. package/skills/present-paper/scripts/check_slide_tells.py +64 -0
  154. package/skills/present-paper/scripts/check_text_overflow.py +266 -0
  155. package/skills/present-paper/scripts/check_text_overflow_challenge/make_fixtures.py +103 -0
  156. package/skills/present-paper/scripts/check_text_overflow_challenge/verify.sh +100 -0
  157. package/skills/present-paper/skill.yml +11 -0
  158. package/skills/publish-skill/scripts/audit_skill.sh +5 -2
  159. package/skills/revise/SKILL.md +5 -5
  160. package/skills/revise/scripts/check_density_complaint.py +14 -14
  161. package/skills/revise/scripts/density_complaint_challenge/verify.sh +5 -6
  162. package/skills/search-lit/SKILL.md +67 -0
  163. package/skills/search-lit/scripts/check_doi_record_match.py +276 -0
  164. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fmarkup.005.json +9 -0
  165. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fmatch.001.json +9 -0
  166. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fother.002.json +9 -0
  167. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fsuppl.003.json +9 -0
  168. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/screening.tsv +7 -0
  169. package/skills/search-lit/scripts/check_doi_record_match_challenge/verify.sh +110 -0
  170. package/skills/search-lit/skill.yml +4 -0
  171. package/skills/self-review/SKILL.md +3 -3
  172. package/skills/self-review/references/domain-probes/ai_overclaiming.md +2 -2
  173. package/skills/self-review/references/domain-probes/clinical_prediction_model.md +2 -2
  174. package/skills/self-review/references/domain-probes/diagnostic_accuracy.md +8 -2
  175. package/skills/self-review/references/domain-probes/model_development.md +18 -2
  176. package/skills/self-review/references/domain-probes/narrative_review.md +10 -0
  177. package/skills/self-review/references/domain-probes/observational_confounding.md +12 -2
  178. package/skills/self-review/references/domain-probes/radiomics.md +10 -0
  179. package/skills/self-review/references/domain-probes/sr_ma.md +2 -2
  180. package/skills/self-review/references/domain-probes/survival_prognostic.md +10 -0
  181. package/skills/self-review/references/exemplar_findings/estimand_drift_posthoc_primary.md +1 -1
  182. package/skills/self-review/references/panel_review_template.md +30 -0
  183. package/skills/self-review/references/phases/confounding_completeness.md +4 -4
  184. package/skills/self-review/references/phases/phase2_5a2_design_power.md +4 -4
  185. package/skills/self-review/references/phases/phase2_5a_source_fidelity.md +1 -1
  186. package/skills/self-review/references/phases/phase2_5b_screening_counts.md +12 -11
  187. package/skills/self-review/references/phases/phase2_5d_xref_qc.md +5 -4
  188. package/skills/self-review/references/phases/phase2_5f_claim_artifact.md +5 -5
  189. package/skills/self-review/scripts/_frontmatter.py +3 -3
  190. package/skills/self-review/scripts/check_binning_consistency.py +5 -2
  191. package/skills/self-review/scripts/check_citation_order.py +1 -1
  192. package/skills/self-review/scripts/check_effect_stability.py +2 -2
  193. package/skills/self-review/scripts/check_effect_stability_challenge/expected/bad.txt +2 -2
  194. package/skills/self-review/scripts/check_effect_stability_challenge/fixture/effect_bad.md +2 -2
  195. package/skills/self-review/scripts/check_effect_stability_challenge/fixture/effect_ok.md +1 -1
  196. package/skills/self-review/scripts/check_effect_stability_challenge/problem.md +5 -5
  197. package/skills/self-review/scripts/check_effect_stability_challenge/verify.sh +3 -3
  198. package/skills/self-review/scripts/check_incorporation_bias.py +4 -8
  199. package/skills/self-review/scripts/check_incorporation_bias_challenge/fixture/incorp_bad.md +1 -1
  200. package/skills/self-review/scripts/check_incorporation_bias_challenge/problem.md +2 -2
  201. package/skills/self-review/scripts/check_incorporation_bias_challenge/verify.sh +1 -1
  202. package/skills/self-review/scripts/check_panel_diversity.py +30 -2
  203. package/skills/self-review/scripts/check_paren_spans.py +2 -2
  204. package/skills/self-review/tests/fixtures/claim_manuscript.md +1 -1
  205. package/skills/self-review/tests/fixtures/claim_manuscript_single_primary.md +1 -1
  206. package/skills/self-review/tests/fixtures/cv_leakage_bad.md +2 -1
  207. package/skills/self-review/tests/fixtures/paren_clean.md +1 -1
  208. package/skills/self-review/tests/fixtures/paren_corrupt.md +1 -1
  209. package/skills/self-review/tests/test_claim_artifact.sh +4 -4
  210. package/skills/self-review/tests/test_panel_diversity.sh +34 -0
  211. package/skills/sync-submission/scripts/build_marked_manuscript.py +36 -4
  212. package/skills/sync-submission/scripts/check_asset_anonymization.py +15 -12
  213. package/skills/sync-submission/scripts/cover_letter_drift_check.py +4 -8
  214. package/skills/sync-submission/tests/test_asset_anonymization.sh +22 -0
  215. package/skills/sync-submission/tests/test_cross_artifact_stale.sh +3 -3
  216. package/skills/sync-submission/tests/test_marked_build_failure.sh +126 -0
  217. package/skills/verify-refs/SKILL.md +5 -8
  218. package/skills/verify-refs/scripts/verify_refs.py +25 -1
  219. package/skills/verify-refs/tests/test_audit_source_path.sh +100 -0
  220. package/skills/write-paper/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +1 -1
  221. package/skills/write-paper/references/journal_profiles/JACC_Advances.md +1 -1
  222. package/skills/write-paper/references/journal_profiles/JKMS.md +4 -4
  223. package/skills/write-paper/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +1 -1
  224. package/skills/write-paper/references/journal_profiles/KJR.md +1 -1
  225. package/skills/write-paper/references/journal_profiles/Korean_Circulation_Journal.md +1 -1
  226. package/skills/write-paper/references/journal_profiles/Liver_International.md +2 -2
  227. package/skills/write-paper/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +1 -1
  228. package/skills/write-paper/references/phase7_integrity_audits.md +5 -5
  229. package/skills/write-paper/references/phase7_polish_detail.md +3 -3
package/README.md CHANGED
@@ -2,14 +2,16 @@
2
2
 
3
3
  # MedSci Skills
4
4
 
5
- **58 skills that actually work.** Built by a physician-researcher, tested on real publications.
5
+ [English](README.md) | [简体中文](README.zh-CN.md)
6
6
 
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 — 47 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.*
7
+ **59 skills that actually work.** Built by a physician-researcher, tested on real publications.
8
+
9
+ *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 — 49 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
10
 
9
11
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
10
12
  [![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
13
  [![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-58-brightgreen?style=flat-square)
14
+ ![Skills](https://img.shields.io/badge/Skills-59-brightgreen?style=flat-square)
13
15
  [![npm](https://img.shields.io/npm/v/medsci-skills?style=flat-square&label=npm&color=cb3837)](https://www.npmjs.com/package/medsci-skills)
14
16
  [![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)
15
17
  [![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)
@@ -135,6 +137,8 @@ Install a single category and invoke its skills under that namespace:
135
137
 
136
138
  All nine plugins share the same repository source, so this groups and enables skills by category — it is not a partial download. The marketplace tracks `main`, so a plugin's version is its git commit.
137
139
 
140
+ **Note the name.** A skill installed as a plugin is invoked under its plugin's namespace (`/medsci-analysis:analyze-stats`); the same skill installed into the skills folder by the `npx`, `gh skill`, classroom, or manual paths is invoked bare (`/analyze-stats`). Both run the same skill — press `/` and use Tab completion rather than typing the long form.
141
+
138
142
  **Want just one capability?** Two skills are also published as focused standalone repos (generated mirrors; this repo stays the source of truth), each installable on its own with `/plugin marketplace add Aperivue/<repo>`:
139
143
 
140
144
  - [`Aperivue/verify-refs`](https://github.com/Aperivue/verify-refs) — catch fabricated/mismatched citations (PubMed + CrossRef).
@@ -170,9 +174,9 @@ protocol scaffolding, screening/extraction structure, PRISMA-consistent counts a
170
174
  diagram, pooled-estimate figures, and a manuscript draft. *Safety:* screening and
171
175
  extraction decisions stay with the human review team.
172
176
 
173
- ## Live Demos: Four Study Types, Four Full Pipelines
177
+ ## Live Demos: Five Study Types, Five Full Pipelines
174
178
 
175
- 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).
179
+ Five public datasets. Five 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); Demo 5 takes that lane onto a GPU cluster and out to a **genuinely external cohort**, then reports where it broke.
176
180
 
177
181
  | Demo | Dataset | Study Type | Compliance |
178
182
  |------|---------|------------|------------|
@@ -180,6 +184,7 @@ Four public datasets. Four study types. Demos 1–3 each produce a complete manu
180
184
  | [Demo 2: BCG Vaccine](demo/02_metafor_bcg/) | `metafor::dat.bcg` (13 RCTs) | Meta-analysis | PRISMA 2020 |
181
185
  | [Demo 3: NHANES Obesity](demo/03_nhanes_obesity/) | CDC NHANES 2017-18 | Epidemiology (survey) | STROBE |
182
186
  | [Demo 4: PneumoniaMNIST CNN](demo/04_pneumoniamnist_cnn/) | `medmnist` (CC BY 4.0) | Medical-AI model engineering (CNN) | CLAIM / TRIPOD+AI |
187
+ | [Demo 5: MSD → AMOS spleen](demo/05_msd_amos_spleen/) | MSD Task09 + AMOS22 (CC BY 4.0) | 3-D segmentation, external validation + modality shift | CLAIM / Metrics Reloaded |
183
188
 
184
189
  ### Demo 1: Diagnostic Accuracy — Wisconsin Breast Cancer
185
190
 
@@ -264,6 +269,45 @@ data(dat.bcg) # 13 RCTs, 357,347 participants (Colditz et al. 1994)
264
269
 
265
270
  **Pipeline:** `analyze-stats` &rarr; `make-figures` &rarr; `write-paper` &rarr; AI pattern scan &rarr; `check-reporting` (STROBE) &rarr; `self-review` &rarr; DOCX build &rarr; `present-paper`
266
271
 
272
+ ### Demo 5: External Validation — MSD &rarr; AMOS spleen segmentation
273
+
274
+ The only demo that leaves the laptop, and the only one that reports a **failure**. It asks whether a
275
+ clinician can carry a deep-learning study to a defensible result without an engineer, then answers by
276
+ running a three-rung external-validation ladder on a GPU cluster and logging every point where the
277
+ answer was no.
278
+
279
+ | Rung | Cohort | n scored | Dice median [95% CI] |
280
+ |---|---|---:|---|
281
+ | 1 internal | MSD held-out | 9 | **0.9595** [0.9367–0.9734] |
282
+ | 2 genuine external | AMOS **CT** | 298 / 300 | **0.8932** [0.8633–0.9108] |
283
+ | 3 modality shift | AMOS **MRI** | 59 / 60 | **0.0152** [0.0000–0.0626] |
284
+ | 3b counterfactual | AMOS MRI, **rescaled** | 59 / 60 | **0.3016** [0.1744–0.4048] |
285
+
286
+ Rung 3 is a **constructed** test, and the demo says so: the evaluation plan named the normalisation
287
+ contract and predicted the collapse *before* inference ran. The trained plan carries `CTNormalization`
288
+ into inference and there is no flag that says "this is MRI", so a Hounsfield-unit clip is applied to
289
+ arbitrary-unit images: **0 of 60 MRI cases contain a negative voxel** (against 300 of 300 on CT), and a
290
+ median **23.2 %** of voxels are flattened at the clip ceiling (against 2.7 %). The run exits 0 and
291
+ returns a file for all 60 cases, 20 of them empty. Only ground truth made it loud.
292
+
293
+ A fourth arm changes **only the input intensity scale** — same checkpoint, no retraining — and
294
+ recovers median Dice to **0.3016** (+0.2864 [+0.1204, +0.4048]) while staying **−0.5916** below the
295
+ CT arm. So both mechanisms are real and differently sized: roughly **0.29 Dice is the preprocessing
296
+ contract, 0.59 a representation that does not transfer**. The arm and its prediction were written
297
+ down before it ran.
298
+
299
+ And `/profile-imaging` **had already flagged the mixed intensity scale before training — as a
300
+ Minor**, where it sat in `qc/` for nine days. So the gap this demo found is not detection; it is
301
+ **routing and severity**. A gate that fires correctly into a directory no later step reads is,
302
+ operationally, a gate that did not fire. See [the full demo](demo/05_msd_amos_spleen/) — including
303
+ [`FRICTION.md`](demo/05_msd_amos_spleen/FRICTION.md), which lists every point that needed engineering
304
+ knowledge, because the headline question is not answerable honestly without it.
305
+
306
+ **Pipeline:** `profile-imaging` &rarr; `model-sourcing` &rarr; `preprocess-imaging` (leakage gate, plus the
307
+ counterfactual that must fail) &rarr; `model-validation` (split gate) &rarr; nnU-Net training &rarr;
308
+ `model-evaluation` &rarr; `make-figures` &rarr; write-up. `bash reproduce.sh` re-runs the gates and the whole
309
+ across-cohort analysis on a laptop; training needs ~50 GPU-hours and says so.
310
+
267
311
  ### Project Folder Structure
268
312
 
269
313
  Each demo (and real project) follows this role-based folder layout:
@@ -418,7 +462,7 @@ Earlier in this series: analysis-integrity guards (confounding completeness, cla
418
462
  | **Battle-tested** | Used on real manuscript submissions by a practicing physician-researcher | Unknown provenance and validation |
419
463
  | **Depth per skill** | 150-600 lines of documentation + bundled reference files (curated journal profile library, checklists, formula sheets, code templates) | Typically thin SKILL.md templates |
420
464
 
421
- **MedSci-Audit** — the verification edge in the first rows above is a named suite of **84 deterministic detectors** (citation & reference integrity, cohort & pool arithmetic, scope/estimand contracts, reporting compliance, and more) that catch fabricated or drifted content before a manuscript reaches a reviewer. See **[`MEDSCI_AUDIT.md`](MEDSCI_AUDIT.md)** for the suite, its six families, and its evaluation evidence.
465
+ **MedSci-Audit** — the verification edge in the first rows above is a named suite of **90 deterministic detectors** (citation & reference integrity, cohort & pool arithmetic, scope/estimand contracts, reporting compliance, and more) that catch fabricated or drifted content before a manuscript reaches a reviewer. See **[`MEDSCI_AUDIT.md`](MEDSCI_AUDIT.md)** for the suite, its six families, and its evaluation evidence.
422
466
 
423
467
  ---
424
468
 
@@ -485,11 +529,11 @@ ma-scout -> search-lit -> fulltext-retrieval -> design-study ──> write-proto
485
529
 
486
530
  ### By research stage
487
531
 
488
- All 58 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/).
532
+ All 59 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/).
489
533
 
490
534
  | Stage | Skills |
491
535
  |-------|--------|
492
- | 🔭 **Discover & scope** | `ma-scout` · `find-cohort-gap` · `search-lit` · `fulltext-retrieval` · `lit-sync` · `author-strategy` |
536
+ | 🔭 **Discover & scope** | `ma-scout` · `find-cohort-gap` · `search-lit` · `fulltext-retrieval` · `lit-sync` · `obsidian-paper-vault` · `author-strategy` |
493
537
  | 📐 **Design & plan** | `design-study` · `calc-sample-size` · `define-variables` · `write-protocol` · `fill-protocol` · `design-ai-benchmarking` |
494
538
  | 🧹 **Data & analysis** | `deidentify` · `clean-data` · `generate-codebook` · `version-dataset` · `analyze-stats` · `batch-cohort` · `cross-national` · `replicate-study` |
495
539
  | 🤖 **Medical-AI model engineering** | `profile-imaging` · `preprocess-imaging` · `architecture-zoo` · `model-scaffold` · `model-validation` · `model-evaluation` · `uncertainty-imaging` · `explainability` · `radiomics-ml` · `model-card` · `mllm-eval` |
@@ -507,7 +551,7 @@ All 58 skills, grouped by where they fit in the clinical-manuscript and medical-
507
551
  | **search-lit** | PubMed + Semantic Scholar + bioRxiv search with anti-hallucination citation verification. Token-efficient error handling -- CrossRef failures are silently batched, not repeated. BibTeX output tags each entry with `verified`/`verified_by`/`verified_on` fields so downstream skills can trust the citation provenance. |
508
552
  | **verify-refs** | Pre-submission reference audit for `.md`, `.docx`, `.bib`, or `.tsv` inputs. Extracts references, verifies DOI/PMID via CrossRef/PubMed when available, and writes `qc/reference_audit.json` as the sole output — row-level status (OK / MISMATCH / UNVERIFIED / FABRICATED) lives inside the JSON `records[]` block. `/search-lit` produces candidate BibTeX; `/lit-sync` owns `manuscript/_src/refs.bib`. |
509
553
  | **fulltext-retrieval** | Batch open-access PDF downloader. Unpaywall → PMC → OpenAlex → CrossRef pipeline. OA-only -- no paywall bypass. Input: DOI list or TSV. Optional PDF→Markdown conversion via [pymupdf4llm](https://pymupdf.readthedocs.io/en/latest/pymupdf4llm/) for token-efficient LLM analysis of academic papers. |
510
- | **check-reporting** | Manuscript compliance audit against 47 reporting guidelines and risk of bias tools (STROBE, STROBE-MR, RECORD, GATHER, STARD, STARD-AI, TRIPOD, TRIPOD+AI, TRIPOD-LLM, PGS-RS, CHEERS 2022, CROSS, SRQR, COREQ, PRISMA, PRISMA-DTA, PRISMA-P, PRISMA-ScR, MOOSE, ARRIVE, CONSORT, CONSORT-AI, CARE, SPIRIT, SPIRIT-AI, CLAIM, DECIDE-AI, SQUIRE 2.0, CLEAR, GRRAS, MI-CLEAR-LLM, SWiM, AMSTAR 2, QUADAS-2, QUADAS-C, RoB 2, ROBINS-I, ROBINS-E, ROBIS, ROB-ME, PROBAST, PROBAST+AI, NOS, COSMIN, RoB NMA). Machine-readable JSON summary with `compliance_pct` and `fixable_by_ai` flags for automated pipeline integration. |
554
+ | **check-reporting** | Manuscript compliance audit against 49 reporting guidelines and risk of bias tools (STROBE, STROBE-MR, RECORD, GATHER, STARD, STARD-AI, TRIPOD, TRIPOD+AI, TRIPOD-LLM, PGS-RS, CHEERS 2022, CROSS, SRQR, COREQ, PRISMA, PRISMA 2020 for Abstracts, PRISMA-DTA, PRISMA-P, PRISMA-ScR, MOOSE, ARRIVE, CONSORT, CONSORT-AI, CARE, SPIRIT, SPIRIT-AI, CLAIM, DECIDE-AI, SQUIRE 2.0, CLEAR, GRRAS, MI-CLEAR-LLM, SWiM, AMSTAR 2, QUADAS-3, QUADAS-2, QUADAS-C, RoB 2, ROBINS-I, ROBINS-E, ROBIS, ROB-ME, PROBAST, PROBAST+AI, NOS, COSMIN, RoB NMA). Machine-readable JSON summary with `compliance_pct` and `fixable_by_ai` flags for automated pipeline integration. |
511
555
  | **analyze-stats** | Statistical analysis code generation (Python/R) for diagnostic accuracy, DTA meta-analysis (bivariate/HSROC), inter-rater agreement, survival analysis, demographics tables, regression (logistic/linear), propensity score (matching/IPTW/overlap weighting), and repeated measures (RM ANOVA/GEE/mixed models). Calibration mandatory for prediction models. |
512
556
  | **meta-analysis** | Full systematic review and meta-analysis pipeline (8 phases). DTA (bivariate/HSROC) and intervention meta-analysis. Protocol to submission-ready manuscript with PRISMA-DTA compliance. |
513
557
  | **make-figures** | Publication-ready figures and visual abstracts: ROC curves, forest plots, PRISMA/CONSORT/STARD flow diagrams, Kaplan-Meier curves, Bland-Altman plots, confusion matrices, and journal-specific visual/graphical abstracts (python-pptx template-based). Communication-first design principles (Nat Hum Behav 2026 — key message, audience, cognitive load, figure-vs-table decision) and five flow-diagram production lessons (official-template fidelity, VML fallback PDF export, docx XML escape, sequential placeholder mapping, version freeze); critic rubric Section G adds 5 communication-first checks. `--study-type` auto-generates the full required figure set; structured `_figure_manifest.md` output for downstream pipeline consumption; D2 enforced as default for flow diagrams. |
@@ -548,6 +592,7 @@ All 58 skills, grouped by where they fit in the clinical-manuscript and medical-
548
592
  | **peer-review** | Structured peer review drafting for medical journals. Systematic manuscript analysis, journal-specific formatting (RYAI, INSI, EURE, AJR, KJR), conciseness targets (500-800 words), and pre-submission QC checklist. Constructive developmental tone. |
549
593
  | **ma-scout** | Meta-analysis topic discovery and feasibility assessment. Two modes: (A) Professor-first — profile → pillar analysis → MA gaps, (B) Topic-first — question → landscape scan → co-author matching. Multi-source validation (PubMed, PROSPERO, bioRxiv) with realistic k estimation (15-30% discount). |
550
594
  | **lit-sync** | Sync research references from .bib files to Zotero library + Obsidian literature notes. Concept extraction from 10+ literature notes with cross-cutting theme discovery. Works after `/search-lit` or standalone. |
595
+ | **obsidian-paper-vault** | Turn a folder of research PDFs into an Obsidian vault: templated literature notes with frontmatter, PDF embed links, and atomic concept notes synthesized across papers. Batch notes are written from pre-extracted text, never from PDF paths handed to subagents. Shares vault folders with `/lit-sync` and never overwrites an existing note. |
551
596
  | **academic-aio** | AI search engine (Perplexity / ChatGPT web / Elicit / Consensus / SciSpace) and RAG visibility checklist for medical AI papers. Integrates TRIPOD+AI, CLAIM, STARD-AI, TRIPOD-LLM, DECIDE-AI reporting anchors with generative-engine-optimization (GEO) principles. Covers title, abstract, structured summary boxes (Key Points / Research in Context / Plain-Language Summary), preprints, GitHub README, `CITATION.cff`, Zenodo, and Hugging Face model/dataset cards. Explicit defense against LLM citation fabrication (Agarwal 2025, Nat Commun). Produces a visible PASS/PARTIAL/FAIL checklist; never applies edits silently. Pairs with `write-paper` Phase 4/6/7, runs after `self-review` + `humanize`. |
552
597
  | **polish-language** | Academic English consistency linting and non-native (ESL) clarity polish. A deterministic linter (`lint_consistency.py`) flags abbreviation define-once violations, US/UK spelling drift, hyphen-vs-en-dash numeric ranges, `P`/`p` case and impossible `P = 0.000`, hyphenation variants, small-number style, and value/unit spacing — then a gated, style-only clarity pass fixes wording without ever changing numbers, citations, or scientific meaning. Distinct from `humanize` (AI-tell removal) and `check-reporting` (guideline items); bundles a reproducible challenge card. |
553
598
  | **manage-refs** | Reference lifecycle as a single skill: citekey ↔ `.bib` validation, journal-CSL pandoc rendering (`render_pandoc.sh`), manuscript ↔ rendered DOCX cross-reference QC (`check_xref.py --strict` is the submission gate), `[N]` ↔ `[@key]` marker conversion, and native Zotero CWYW field-code injection for co-author Word workflows. Hybrid 3-phase strategy (pandoc draft → CWYW transition → Zotero CWYW for circulation/revision/submission). Sole writer of `manuscript_final.docx` and `qc/xref_audit.json`. Split out of `write-paper` Phase 7.6 so `revise`, `peer-review`, `sync-submission`, and `find-journal` can render directly without depending on a sibling skill. |
@@ -638,12 +683,31 @@ gh skill install --all Aperivue/medsci-skills # or install all of the
638
683
 
639
684
  - Claude Code: skills are copied to `~/.claude/skills/` (also read by GitHub Copilot and Cursor).
640
685
  - Codex: skills are copied to `~/.agents/skills/` (also read by Cursor and GitHub Copilot).
641
- - Cursor: no separate step needed — Cursor reads `~/.claude/skills/` and `~/.agents/skills/` directly. The installer can still write an optional `.cursor/rules/` steering rule with `--cursor-project`.
686
+ - Cursor: no separate step needed — Cursor reads `~/.claude/skills/` and `~/.agents/skills/` directly. The installer can still write an optional `.cursor/rules/` steering rule with `--cursor-project`; it carries no machine-specific path, so it is safe to commit.
642
687
  - See [`docs/host_compatibility.md`](docs/host_compatibility.md) for the verified per-host install paths and their official sources.
643
688
  - Windows users do not need WSL for the basic classroom workflow. Use WSL only for advanced reproducible Linux toolchains.
644
689
 
645
690
  See [docs/classroom_distribution_plan.md](docs/classroom_distribution_plan.md) and [docs/classroom_materials.md](docs/classroom_materials.md) for instructor distribution, email templates, and first-class exercises.
646
691
 
692
+ ### Optional: let plain-language requests find the skills
693
+
694
+ Typing `/orchestrate` is the reliable way in. If you would rather just describe what you want, the
695
+ installer can write a short routing table into a project's `CLAUDE.md` so Claude Code reaches for
696
+ the right skill on its own whenever you work in that folder:
697
+
698
+ ```bash
699
+ python3 installers/install.py --claude-project ~/research/my-study # this project only
700
+ python3 installers/install.py --claude-user # every project (larger footprint)
701
+ python3 installers/install.py --claude-project ~/research/my-study --remove-routing
702
+ ```
703
+
704
+ Both are **off by default**. The block is ~25 lines between `<!-- BEGIN/END medsci-skills routing -->`
705
+ markers and carries no machine-specific paths. It is spliced in, not written over: an existing
706
+ `CLAUDE.md` keeps its bytes outside the markers — line endings and file permissions included — the
707
+ write is atomic so an interrupted run cannot leave a truncated file, re-running updates the block in
708
+ place, and `--remove-routing` takes it back out. Prefer `--claude-project` — `--claude-user` loads in every project you ever open,
709
+ including work unrelated to research.
710
+
647
711
  > **Tip:** Not sure which skill to use? Start with `/orchestrate` -- it will classify your request and route you to the right tool.
648
712
 
649
713
  ## Updating
@@ -696,8 +760,8 @@ Projects declare their source-of-truth layout in `SSOT.yaml`, and a `qc/migratio
696
760
  ### Meta-Analysis Failure Modes
697
761
  `/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).
698
762
 
699
- ### 47 Reporting Guidelines & RoB Tools Built-in
700
- `check-reporting` includes bundled checklists for 47 guidelines and risk-of-bias tools: STROBE, STROBE-MR, RECORD, GATHER, STARD, STARD-AI, TRIPOD, TRIPOD+AI, TRIPOD-LLM, PGS-RS, CHEERS 2022, CROSS, SRQR, COREQ, PRISMA 2020, PRISMA-DTA, PRISMA-P, PRISMA-ScR, MOOSE, ARRIVE, CONSORT, CONSORT-AI, CARE, SPIRIT, SPIRIT-AI, CLAIM, DECIDE-AI, SQUIRE 2.0, CLEAR, GRRAS, MI-CLEAR-LLM, SWiM, AMSTAR 2, QUADAS-2, QUADAS-C, RoB 2, ROBINS-I, ROBINS-E, ROBIS, ROB-ME, PROBAST, PROBAST+AI, NOS, COSMIN, RoB NMA. Includes Results/Discussion section boundary checks and machine-readable JSON summary for pipeline integration.
763
+ ### 49 Reporting Guidelines & RoB Tools Built-in
764
+ `check-reporting` includes bundled checklists for 49 guidelines and risk-of-bias tools: STROBE, STROBE-MR, RECORD, GATHER, STARD, STARD-AI, TRIPOD, TRIPOD+AI, TRIPOD-LLM, PGS-RS, CHEERS 2022, CROSS, SRQR, COREQ, PRISMA 2020, PRISMA 2020 for Abstracts, PRISMA-DTA, PRISMA-P, PRISMA-ScR, MOOSE, ARRIVE, CONSORT, CONSORT-AI, CARE, SPIRIT, SPIRIT-AI, CLAIM, DECIDE-AI, SQUIRE 2.0, CLEAR, GRRAS, MI-CLEAR-LLM, SWiM, AMSTAR 2, QUADAS-3, QUADAS-2, QUADAS-C, RoB 2, ROBINS-I, ROBINS-E, ROBIS, ROB-ME, PROBAST, PROBAST+AI, NOS, COSMIN, RoB NMA. Includes Results/Discussion section boundary checks and machine-readable JSON summary for pipeline integration.
701
765
 
702
766
  ### Publication-Ready Output
703
767
  `analyze-stats` generates reproducible Python/R code for 13 analysis types -- including regression, propensity score, and repeated measures -- with mandatory calibration for prediction models. `make-figures` produces journal-specification figures (300 DPI, colorblind-safe palettes, proper dimensions), visual/graphical abstracts, and a tool selection guide (D2 for flow diagrams, matplotlib for data plots). `--study-type` auto-generates the complete figure set for each study design.