medsci-skills 5.24.0 → 5.25.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 (180) hide show
  1. package/README.md +54 -11
  2. package/README.zh-CN.md +1048 -0
  3. package/metadata/distribution_files.json +449 -244
  4. package/metadata/distribution_manifest.json +2 -1
  5. package/metadata/skills_catalog.json +11 -1
  6. package/package.json +1 -1
  7. package/skills/academic-aio/SKILL.md +1 -1
  8. package/skills/check-reporting/SKILL.md +46 -15
  9. package/skills/check-reporting/references/LICENSES.md +76 -52
  10. package/skills/check-reporting/references/checklists/AMSTAR2.md +17 -1
  11. package/skills/check-reporting/references/checklists/ARRIVE_2.md +95 -118
  12. package/skills/check-reporting/references/checklists/CARE.md +9 -1
  13. package/skills/check-reporting/references/checklists/CHEERS_2022.md +4 -0
  14. package/skills/check-reporting/references/checklists/CLAIM_2024.md +7 -0
  15. package/skills/check-reporting/references/checklists/CLEAR.md +3 -0
  16. package/skills/check-reporting/references/checklists/CONSORT.md +7 -1
  17. package/skills/check-reporting/references/checklists/CONSORT_AI.md +14 -3
  18. package/skills/check-reporting/references/checklists/COREQ.md +2 -1
  19. package/skills/check-reporting/references/checklists/COSMIN_RoB.md +65 -61
  20. package/skills/check-reporting/references/checklists/CROSS.md +78 -58
  21. package/skills/check-reporting/references/checklists/DECIDE_AI.md +13 -4
  22. package/skills/check-reporting/references/checklists/GATHER.md +42 -23
  23. package/skills/check-reporting/references/checklists/GRRAS.md +42 -21
  24. package/skills/check-reporting/references/checklists/MI_CLEAR_LLM.md +6 -1
  25. package/skills/check-reporting/references/checklists/MOOSE.md +10 -3
  26. package/skills/check-reporting/references/checklists/NOS.md +28 -8
  27. package/skills/check-reporting/references/checklists/PGS_RS.md +8 -1
  28. package/skills/check-reporting/references/checklists/PRISMA_2020.md +18 -7
  29. package/skills/check-reporting/references/checklists/PRISMA_2020_Abstracts.md +96 -0
  30. package/skills/check-reporting/references/checklists/PRISMA_DTA.md +123 -36
  31. package/skills/check-reporting/references/checklists/PRISMA_P.md +6 -0
  32. package/skills/check-reporting/references/checklists/PRISMA_ScR.md +65 -20
  33. package/skills/check-reporting/references/checklists/PROBAST.md +60 -35
  34. package/skills/check-reporting/references/checklists/PROBAST_AI.md +4 -0
  35. package/skills/check-reporting/references/checklists/QUADAS2.md +107 -45
  36. package/skills/check-reporting/references/checklists/QUADAS3.md +242 -0
  37. package/skills/check-reporting/references/checklists/QUADAS_C.md +29 -6
  38. package/skills/check-reporting/references/checklists/RECORD.md +6 -1
  39. package/skills/check-reporting/references/checklists/REMARK.md +21 -13
  40. package/skills/check-reporting/references/checklists/ROBINS_E.md +14 -3
  41. package/skills/check-reporting/references/checklists/ROBINS_I.md +34 -8
  42. package/skills/check-reporting/references/checklists/ROBIS.md +26 -4
  43. package/skills/check-reporting/references/checklists/ROB_ME.md +15 -1
  44. package/skills/check-reporting/references/checklists/RoB2.md +106 -52
  45. package/skills/check-reporting/references/checklists/RoB_NMA.md +91 -68
  46. package/skills/check-reporting/references/checklists/SPIRIT.md +8 -2
  47. package/skills/check-reporting/references/checklists/SPIRIT_AI.md +14 -3
  48. package/skills/check-reporting/references/checklists/SQUIRE_2.md +6 -1
  49. package/skills/check-reporting/references/checklists/SRQR.md +2 -1
  50. package/skills/check-reporting/references/checklists/STARD.md +115 -124
  51. package/skills/check-reporting/references/checklists/STROBE.md +8 -0
  52. package/skills/check-reporting/references/checklists/STROBE_MR.md +128 -62
  53. package/skills/check-reporting/references/checklists/SWiM.md +20 -9
  54. package/skills/check-reporting/references/checklists/TARGET.md +10 -3
  55. package/skills/check-reporting/references/checklists/TRIPOD.md +10 -2
  56. package/skills/check-reporting/references/checklists/TRIPOD_AI.md +14 -7
  57. package/skills/check-reporting/references/checklists/TRIPOD_LLM.md +12 -1
  58. package/skills/clean-data/SKILL.md +1 -1
  59. package/skills/contribute/scripts/check_contribution_safety.py +30 -4
  60. package/skills/contribute/tests/test_contribution_safety.sh +38 -1
  61. package/skills/fill-protocol/scripts/fill_form.py +48 -23
  62. package/skills/fill-protocol/tests/test_fill_form_newlines.sh +141 -0
  63. package/skills/find-journal/SKILL.md +1 -1
  64. package/skills/find-journal/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +1 -1
  65. package/skills/find-journal/references/journal_profiles/JACC_Advances.md +2 -2
  66. package/skills/find-journal/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +1 -1
  67. package/skills/find-journal/references/journal_profiles/Korean_Circulation_Journal.md +1 -1
  68. package/skills/find-journal/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +1 -1
  69. package/skills/lit-sync/SKILL.md +46 -8
  70. package/skills/lit-sync/references/bbt_lookup.md +57 -0
  71. package/skills/lit-sync/scripts/check_citekey_provenance.py +210 -0
  72. package/skills/lit-sync/skill.yml +2 -0
  73. package/skills/lit-sync/tests/citekey_provenance_challenge.sh +117 -0
  74. package/skills/lit-sync/tests/citekey_provenance_challenge_selftest.sh +85 -0
  75. package/skills/lit-sync/tests/test_poll_logic.sh +14 -4
  76. package/skills/make-figures/references/reporting_guideline_figure_map.md +2 -2
  77. package/skills/meta-analysis/SKILL.md +93 -16
  78. package/skills/meta-analysis/references/checklists/NOS.md +28 -8
  79. package/skills/meta-analysis/references/checklists/PRISMA_DTA.md +123 -36
  80. package/skills/meta-analysis/references/checklists/PROBAST.md +60 -35
  81. package/skills/meta-analysis/references/checklists/QUADAS2.md +107 -45
  82. package/skills/meta-analysis/references/checklists/QUADAS3.md +242 -0
  83. package/skills/meta-analysis/references/checklists/ROBINS_I.md +34 -8
  84. package/skills/meta-analysis/references/checklists/RoB2.md +106 -52
  85. package/skills/meta-analysis/references/empirical_lessons.md +2 -1
  86. package/skills/meta-analysis/references/phase6_statistical_synthesis.md +131 -7
  87. package/skills/model-validation/SKILL.md +3 -3
  88. package/skills/model-validation/references/validation_design.md +1 -1
  89. package/skills/obsidian-paper-vault/SKILL.md +144 -0
  90. package/skills/obsidian-paper-vault/assets/example_concept_note.md +50 -0
  91. package/skills/obsidian-paper-vault/assets/example_paper_note.md +51 -0
  92. package/skills/obsidian-paper-vault/assets/example_queue.md +52 -0
  93. package/skills/obsidian-paper-vault/references/concept-extraction.md +91 -0
  94. package/skills/obsidian-paper-vault/references/locale/ko/note_templates.md +127 -0
  95. package/skills/obsidian-paper-vault/references/subagent-prompt.md +100 -0
  96. package/skills/obsidian-paper-vault/references/tag-vocabulary.md +60 -0
  97. package/skills/obsidian-paper-vault/references/templates.md +145 -0
  98. package/skills/obsidian-paper-vault/references/workflow.md +85 -0
  99. package/skills/obsidian-paper-vault/scripts/extract_pdfs.py +85 -0
  100. package/skills/obsidian-paper-vault/skill.yml +54 -0
  101. package/skills/orchestrate/SKILL.md +3 -1
  102. package/skills/peer-review/SKILL.md +57 -170
  103. package/skills/peer-review/references/domain-probes/ai_overclaiming.md +2 -2
  104. package/skills/peer-review/references/domain-probes/clinical_prediction_model.md +2 -2
  105. package/skills/peer-review/references/domain-probes/diagnostic_accuracy.md +8 -2
  106. package/skills/peer-review/references/domain-probes/model_development.md +18 -2
  107. package/skills/peer-review/references/domain-probes/narrative_review.md +10 -0
  108. package/skills/peer-review/references/domain-probes/observational_confounding.md +12 -2
  109. package/skills/peer-review/references/domain-probes/radiomics.md +10 -0
  110. package/skills/peer-review/references/domain-probes/sr_ma.md +2 -2
  111. package/skills/peer-review/references/domain-probes/survival_prognostic.md +10 -0
  112. package/skills/peer-review/references/reviewer_calibration/recommendation_calibration.md +92 -0
  113. package/skills/peer-review/references/reviewer_profiles/EURE.md +12 -5
  114. package/skills/peer-review/references/reviewer_profiles/INSI.md +1 -1
  115. package/skills/peer-review/references/reviewer_profiles/README.md +41 -3
  116. package/skills/peer-review/references/reviewer_profiles/RYAI.md +28 -4
  117. package/skills/preprocess-imaging/SKILL.md +15 -0
  118. package/skills/preprocess-imaging/scripts/check_normalizer_domain.py +196 -0
  119. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/expected/arbitrary_mismatch.txt +10 -0
  120. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/expected/hu_clean.txt +9 -0
  121. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/fixture/plan_ct.json +25 -0
  122. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/fixture/profile_arbitrary.json +236 -0
  123. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/fixture/profile_hu.json +144 -0
  124. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/problem.md +42 -0
  125. package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/verify.sh +46 -0
  126. package/skills/present-paper/SKILL.md +193 -4
  127. package/skills/present-paper/references/ai_slide_tells.md +49 -0
  128. package/skills/present-paper/references/generate_pptx_templates.py +6 -1
  129. package/skills/present-paper/scripts/check_deck_budget.py +23 -2
  130. package/skills/present-paper/scripts/check_deck_budget_challenge/make_fixtures.py +59 -2
  131. package/skills/present-paper/scripts/check_deck_budget_challenge/verify.sh +40 -0
  132. package/skills/present-paper/scripts/check_diagram_edges.py +160 -0
  133. package/skills/present-paper/scripts/check_diagram_edges_challenge/make_fixtures.py +65 -0
  134. package/skills/present-paper/scripts/check_diagram_edges_challenge/verify.sh +84 -0
  135. package/skills/present-paper/scripts/check_font_portability.py +353 -0
  136. package/skills/present-paper/scripts/check_font_portability_challenge/make_fixtures.py +111 -0
  137. package/skills/present-paper/scripts/check_font_portability_challenge/verify.sh +99 -0
  138. package/skills/present-paper/scripts/check_slide_tells.py +64 -0
  139. package/skills/present-paper/scripts/check_text_overflow.py +266 -0
  140. package/skills/present-paper/scripts/check_text_overflow_challenge/make_fixtures.py +103 -0
  141. package/skills/present-paper/scripts/check_text_overflow_challenge/verify.sh +100 -0
  142. package/skills/present-paper/skill.yml +11 -0
  143. package/skills/publish-skill/scripts/audit_skill.sh +5 -2
  144. package/skills/search-lit/SKILL.md +67 -0
  145. package/skills/search-lit/scripts/check_doi_record_match.py +276 -0
  146. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fmarkup.005.json +9 -0
  147. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fmatch.001.json +9 -0
  148. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fother.002.json +9 -0
  149. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fsuppl.003.json +9 -0
  150. package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/screening.tsv +7 -0
  151. package/skills/search-lit/scripts/check_doi_record_match_challenge/verify.sh +110 -0
  152. package/skills/search-lit/skill.yml +4 -0
  153. package/skills/self-review/SKILL.md +3 -3
  154. package/skills/self-review/references/domain-probes/ai_overclaiming.md +2 -2
  155. package/skills/self-review/references/domain-probes/clinical_prediction_model.md +2 -2
  156. package/skills/self-review/references/domain-probes/diagnostic_accuracy.md +8 -2
  157. package/skills/self-review/references/domain-probes/model_development.md +18 -2
  158. package/skills/self-review/references/domain-probes/narrative_review.md +10 -0
  159. package/skills/self-review/references/domain-probes/observational_confounding.md +12 -2
  160. package/skills/self-review/references/domain-probes/radiomics.md +10 -0
  161. package/skills/self-review/references/domain-probes/sr_ma.md +2 -2
  162. package/skills/self-review/references/domain-probes/survival_prognostic.md +10 -0
  163. package/skills/self-review/references/panel_review_template.md +30 -0
  164. package/skills/self-review/references/phases/phase2_5b_screening_counts.md +4 -2
  165. package/skills/self-review/scripts/check_binning_consistency.py +5 -2
  166. package/skills/self-review/scripts/check_panel_diversity.py +30 -2
  167. package/skills/self-review/tests/fixtures/cv_leakage_bad.md +2 -1
  168. package/skills/self-review/tests/test_panel_diversity.sh +34 -0
  169. package/skills/sync-submission/scripts/build_marked_manuscript.py +36 -4
  170. package/skills/sync-submission/tests/test_cross_artifact_stale.sh +3 -3
  171. package/skills/sync-submission/tests/test_marked_build_failure.sh +126 -0
  172. package/skills/verify-refs/scripts/verify_refs.py +25 -1
  173. package/skills/verify-refs/tests/test_audit_source_path.sh +100 -0
  174. package/skills/write-paper/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +1 -1
  175. package/skills/write-paper/references/journal_profiles/JACC_Advances.md +1 -1
  176. package/skills/write-paper/references/journal_profiles/JKMS.md +4 -4
  177. package/skills/write-paper/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +1 -1
  178. package/skills/write-paper/references/journal_profiles/Korean_Circulation_Journal.md +1 -1
  179. package/skills/write-paper/references/journal_profiles/Liver_International.md +2 -2
  180. package/skills/write-paper/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +1 -1
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)
@@ -170,9 +172,9 @@ protocol scaffolding, screening/extraction structure, PRISMA-consistent counts a
170
172
  diagram, pooled-estimate figures, and a manuscript draft. *Safety:* screening and
171
173
  extraction decisions stay with the human review team.
172
174
 
173
- ## Live Demos: Four Study Types, Four Full Pipelines
175
+ ## Live Demos: Five Study Types, Five Full Pipelines
174
176
 
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).
177
+ 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
178
 
177
179
  | Demo | Dataset | Study Type | Compliance |
178
180
  |------|---------|------------|------------|
@@ -180,6 +182,7 @@ Four public datasets. Four study types. Demos 1–3 each produce a complete manu
180
182
  | [Demo 2: BCG Vaccine](demo/02_metafor_bcg/) | `metafor::dat.bcg` (13 RCTs) | Meta-analysis | PRISMA 2020 |
181
183
  | [Demo 3: NHANES Obesity](demo/03_nhanes_obesity/) | CDC NHANES 2017-18 | Epidemiology (survey) | STROBE |
182
184
  | [Demo 4: PneumoniaMNIST CNN](demo/04_pneumoniamnist_cnn/) | `medmnist` (CC BY 4.0) | Medical-AI model engineering (CNN) | CLAIM / TRIPOD+AI |
185
+ | [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
186
 
184
187
  ### Demo 1: Diagnostic Accuracy — Wisconsin Breast Cancer
185
188
 
@@ -264,6 +267,45 @@ data(dat.bcg) # 13 RCTs, 357,347 participants (Colditz et al. 1994)
264
267
 
265
268
  **Pipeline:** `analyze-stats` → `make-figures` → `write-paper` → AI pattern scan → `check-reporting` (STROBE) → `self-review` → DOCX build → `present-paper`
266
269
 
270
+ ### Demo 5: External Validation — MSD → AMOS spleen segmentation
271
+
272
+ The only demo that leaves the laptop, and the only one that reports a **failure**. It asks whether a
273
+ clinician can carry a deep-learning study to a defensible result without an engineer, then answers by
274
+ running a three-rung external-validation ladder on a GPU cluster and logging every point where the
275
+ answer was no.
276
+
277
+ | Rung | Cohort | n scored | Dice median [95% CI] |
278
+ |---|---|---:|---|
279
+ | 1 internal | MSD held-out | 9 | **0.9595** [0.9367–0.9734] |
280
+ | 2 genuine external | AMOS **CT** | 298 / 300 | **0.8932** [0.8633–0.9108] |
281
+ | 3 modality shift | AMOS **MRI** | 59 / 60 | **0.0152** [0.0000–0.0626] |
282
+ | 3b counterfactual | AMOS MRI, **rescaled** | 59 / 60 | **0.3016** [0.1744–0.4048] |
283
+
284
+ Rung 3 is a **constructed** test, and the demo says so: the evaluation plan named the normalisation
285
+ contract and predicted the collapse *before* inference ran. The trained plan carries `CTNormalization`
286
+ into inference and there is no flag that says "this is MRI", so a Hounsfield-unit clip is applied to
287
+ arbitrary-unit images: **0 of 60 MRI cases contain a negative voxel** (against 300 of 300 on CT), and a
288
+ median **23.2 %** of voxels are flattened at the clip ceiling (against 2.7 %). The run exits 0 and
289
+ returns a file for all 60 cases, 20 of them empty. Only ground truth made it loud.
290
+
291
+ A fourth arm changes **only the input intensity scale** — same checkpoint, no retraining — and
292
+ recovers median Dice to **0.3016** (+0.2864 [+0.1204, +0.4048]) while staying **−0.5916** below the
293
+ CT arm. So both mechanisms are real and differently sized: roughly **0.29 Dice is the preprocessing
294
+ contract, 0.59 a representation that does not transfer**. The arm and its prediction were written
295
+ down before it ran.
296
+
297
+ And `/profile-imaging` **had already flagged the mixed intensity scale before training — as a
298
+ Minor**, where it sat in `qc/` for nine days. So the gap this demo found is not detection; it is
299
+ **routing and severity**. A gate that fires correctly into a directory no later step reads is,
300
+ operationally, a gate that did not fire. See [the full demo](demo/05_msd_amos_spleen/) — including
301
+ [`FRICTION.md`](demo/05_msd_amos_spleen/FRICTION.md), which lists every point that needed engineering
302
+ knowledge, because the headline question is not answerable honestly without it.
303
+
304
+ **Pipeline:** `profile-imaging` → `model-sourcing` → `preprocess-imaging` (leakage gate, plus the
305
+ counterfactual that must fail) → `model-validation` (split gate) → nnU-Net training →
306
+ `model-evaluation` → `make-figures` → write-up. `bash reproduce.sh` re-runs the gates and the whole
307
+ across-cohort analysis on a laptop; training needs ~50 GPU-hours and says so.
308
+
267
309
  ### Project Folder Structure
268
310
 
269
311
  Each demo (and real project) follows this role-based folder layout:
@@ -418,7 +460,7 @@ Earlier in this series: analysis-integrity guards (confounding completeness, cla
418
460
  | **Battle-tested** | Used on real manuscript submissions by a practicing physician-researcher | Unknown provenance and validation |
419
461
  | **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
462
 
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.
463
+ **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
464
 
423
465
  ---
424
466
 
@@ -485,11 +527,11 @@ ma-scout -> search-lit -> fulltext-retrieval -> design-study ──> write-proto
485
527
 
486
528
  ### By research stage
487
529
 
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/).
530
+ 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
531
 
490
532
  | Stage | Skills |
491
533
  |-------|--------|
492
- | 🔭 **Discover & scope** | `ma-scout` · `find-cohort-gap` · `search-lit` · `fulltext-retrieval` · `lit-sync` · `author-strategy` |
534
+ | 🔭 **Discover & scope** | `ma-scout` · `find-cohort-gap` · `search-lit` · `fulltext-retrieval` · `lit-sync` · `obsidian-paper-vault` · `author-strategy` |
493
535
  | 📐 **Design & plan** | `design-study` · `calc-sample-size` · `define-variables` · `write-protocol` · `fill-protocol` · `design-ai-benchmarking` |
494
536
  | 🧹 **Data & analysis** | `deidentify` · `clean-data` · `generate-codebook` · `version-dataset` · `analyze-stats` · `batch-cohort` · `cross-national` · `replicate-study` |
495
537
  | 🤖 **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 +549,7 @@ All 58 skills, grouped by where they fit in the clinical-manuscript and medical-
507
549
  | **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
550
  | **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
551
  | **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. |
552
+ | **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
553
  | **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
554
  | **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
555
  | **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 +590,7 @@ All 58 skills, grouped by where they fit in the clinical-manuscript and medical-
548
590
  | **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
591
  | **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
592
  | **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. |
593
+ | **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
594
  | **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
595
  | **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
596
  | **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. |
@@ -696,8 +739,8 @@ Projects declare their source-of-truth layout in `SSOT.yaml`, and a `qc/migratio
696
739
  ### Meta-Analysis Failure Modes
697
740
  `/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
741
 
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.
742
+ ### 49 Reporting Guidelines & RoB Tools Built-in
743
+ `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
744
 
702
745
  ### Publication-Ready Output
703
746
  `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.