medsci-skills 5.22.0 → 5.24.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 (415) hide show
  1. package/LICENSE +0 -68
  2. package/README.md +43 -10
  3. package/README_FIRST.md +10 -0
  4. package/THIRD-PARTY-NOTICES.md +65 -0
  5. package/metadata/distribution_files.json +1264 -209
  6. package/metadata/distribution_manifest.json +3 -1
  7. package/metadata/skills_catalog.json +21 -1
  8. package/package.json +3 -2
  9. package/skills/academic-aio/SKILL.md +8 -0
  10. package/skills/analyze-stats/SKILL.md +9 -0
  11. package/skills/analyze-stats/references/analysis_guides/burden_decomposition_forecasting.md +156 -0
  12. package/skills/architecture-zoo/SKILL.md +6 -5
  13. package/skills/architecture-zoo/references/classification.md +21 -2
  14. package/skills/architecture-zoo/references/detection.md +41 -11
  15. package/skills/architecture-zoo/references/foundation_models.md +51 -1
  16. package/skills/architecture-zoo/references/index.md +9 -2
  17. package/skills/architecture-zoo/references/segmentation.md +62 -4
  18. package/skills/architecture-zoo/references/synthesis.md +14 -9
  19. package/skills/calc-sample-size/SKILL.md +111 -0
  20. package/skills/calc-sample-size/references/mrmc_reader_study_sample_size.md +94 -0
  21. package/skills/calc-sample-size/references/multi_model_comparison_sample_size.md +89 -0
  22. package/skills/calc-sample-size/references/segmentation_acceptability_sample_size.md +97 -0
  23. package/skills/calc-sample-size/references/segmentation_metric_sample_size.md +63 -0
  24. package/skills/check-reporting/SKILL.md +12 -2
  25. package/skills/check-reporting/references/checklists/GATHER.md +53 -0
  26. package/skills/check-reporting/scripts/verify_checklist_fidelity.py +13 -0
  27. package/skills/check-reporting/tests/test_checklist_fidelity.sh +1 -0
  28. package/skills/contribute/tests/test_contribution_safety.sh +2 -2
  29. package/skills/define-variables/SKILL.md +8 -0
  30. package/skills/design-study/SKILL.md +6 -1
  31. package/skills/design-study/references/combine_models_ablation_design.md +71 -0
  32. package/skills/design-study/references/multi_model_comparison_design.md +90 -0
  33. package/skills/design-study/references/segmentation_failure_characterization_design.md +84 -0
  34. package/skills/design-study/references/venue_accept_recipe.md +85 -0
  35. package/skills/find-journal/references/journal_profiles/AJKD.md +34 -0
  36. package/skills/find-journal/references/journal_profiles/JASN.md +34 -0
  37. package/skills/find-journal/references/journal_profiles/Kidney_International.md +34 -0
  38. package/skills/humanize/SKILL.md +54 -13
  39. package/skills/humanize/references/ai_patterns.md +136 -9
  40. package/skills/humanize/scripts/check_rewrite_fidelity.py +194 -0
  41. package/skills/humanize/scripts/check_sentence_variety.py +216 -0
  42. package/skills/humanize/skill.yml +4 -2
  43. package/skills/humanize/tests/fixtures/rewrite_after_bounded.md +14 -0
  44. package/skills/humanize/tests/fixtures/rewrite_after_numdrift.md +14 -0
  45. package/skills/humanize/tests/fixtures/rewrite_after_wholesale.md +20 -0
  46. package/skills/humanize/tests/fixtures/rewrite_before.md +16 -0
  47. package/skills/humanize/tests/fixtures/variety_long_within_bound.md +3 -0
  48. package/skills/humanize/tests/fixtures/variety_mixed.md +18 -0
  49. package/skills/humanize/tests/fixtures/variety_overlong.md +3 -0
  50. package/skills/humanize/tests/fixtures/variety_uniform.md +17 -0
  51. package/skills/humanize/tests/test_rewrite_fidelity.sh +60 -0
  52. package/skills/humanize/tests/test_sentence_variety.sh +96 -0
  53. package/skills/make-figures/SKILL.md +33 -1
  54. package/skills/make-figures/references/exemplar_plots/README.md +23 -0
  55. package/skills/make-figures/references/exemplar_plots/ai_assistance_effect.md +47 -0
  56. package/skills/make-figures/references/exemplar_plots/external_validation_comparison.md +44 -0
  57. package/skills/make-figures/references/exemplar_plots/model_comparison_leaderboard.md +53 -0
  58. package/skills/make-figures/references/exemplar_plots/segmentation_failure_panel.md +59 -0
  59. package/skills/make-figures/references/reporting_guideline_figure_map.md +2 -2
  60. package/skills/make-figures/scripts/_strobe_cascade.py +112 -0
  61. package/skills/make-figures/scripts/build_strobe_template.py +14 -0
  62. package/skills/make-figures/scripts/export_portal_tiff.py +170 -0
  63. package/skills/make-figures/scripts/export_portal_tiff_challenge/problem.md +32 -0
  64. package/skills/make-figures/scripts/export_portal_tiff_challenge/verify.sh +74 -0
  65. package/skills/make-figures/skill.yml +1 -0
  66. package/skills/make-figures/tests/fixtures/strobe_cascade_balanced.yaml +7 -0
  67. package/skills/make-figures/tests/fixtures/strobe_cascade_branching.yaml +10 -0
  68. package/skills/make-figures/tests/fixtures/strobe_cascade_imbalanced.yaml +10 -0
  69. package/skills/make-figures/tests/test_strobe_cascade.sh +47 -0
  70. package/skills/manage-refs/SKILL.md +35 -10
  71. package/skills/manage-refs/citation_styles/README.md +31 -3
  72. package/skills/manage-refs/citation_styles/american-medical-association.csl +298 -0
  73. package/skills/manage-refs/references/check_xref_symptoms.md +40 -1
  74. package/skills/manage-refs/scripts/check_citation_keys.py +38 -3
  75. package/skills/manage-refs/scripts/check_citation_keys_challenge/fixture/manuscript.md +4 -0
  76. package/skills/manage-refs/scripts/check_citation_keys_challenge/fixture/refs_clean.bib +2 -0
  77. package/skills/manage-refs/scripts/check_citation_keys_challenge/fixture/refs_undefined.bib +1 -0
  78. package/skills/manage-refs/scripts/check_citation_keys_challenge/verify.sh +30 -0
  79. package/skills/manage-refs/scripts/check_xref.py +122 -15
  80. package/skills/manage-refs/scripts/fill_journal_abbrev.py +11 -2
  81. package/skills/manage-refs/scripts/pre_submission_gate.sh +6 -2
  82. package/skills/manage-refs/tests/fixtures/pre_submission_gate/run.sh +10 -4
  83. package/skills/manage-refs/tests/test_citation_key_boundaries.sh +114 -0
  84. package/skills/manage-refs/tests/test_journal_abbrev_parsing.sh +107 -0
  85. package/skills/manage-refs/tests/test_xref_plural_citations.sh +119 -0
  86. package/skills/manage-refs/tests/test_xref_separate_supplement.sh +140 -0
  87. package/skills/meta-analysis/SKILL.md +5 -1
  88. package/skills/meta-analysis/references/phase3_screening_detail.md +30 -0
  89. package/skills/meta-analysis/references/phase4_extraction_detail.md +1 -1
  90. package/skills/meta-analysis/scripts/check_exclusion_code_validity.py +365 -0
  91. package/skills/meta-analysis/scripts/check_exclusion_code_validity_challenge/fixture/protocol_negative.md +19 -0
  92. package/skills/meta-analysis/scripts/check_exclusion_code_validity_challenge/fixture/protocol_positive.md +18 -0
  93. package/skills/meta-analysis/scripts/check_exclusion_code_validity_challenge/fixture/screening_negative.tsv +6 -0
  94. package/skills/meta-analysis/scripts/check_exclusion_code_validity_challenge/fixture/screening_positive.tsv +7 -0
  95. package/skills/meta-analysis/scripts/check_exclusion_code_validity_challenge/problem.md +44 -0
  96. package/skills/meta-analysis/scripts/check_exclusion_code_validity_challenge/verify.sh +59 -0
  97. package/skills/meta-analysis/scripts/screening_reconcile.py +34 -1
  98. package/skills/meta-analysis/skill.yml +2 -0
  99. package/skills/meta-analysis/tests/test_screening_reconcile.sh +87 -0
  100. package/skills/model-sourcing/SKILL.md +166 -0
  101. package/skills/model-sourcing/scripts/check_model_provenance.py +255 -0
  102. package/skills/model-sourcing/scripts/check_model_provenance_challenge/expected/clean.txt +5 -0
  103. package/skills/model-sourcing/scripts/check_model_provenance_challenge/expected/defect.txt +22 -0
  104. package/skills/model-sourcing/scripts/check_model_provenance_challenge/expected/unstated.txt +10 -0
  105. package/skills/model-sourcing/scripts/check_model_provenance_challenge/fixture/dossier_clean.json +18 -0
  106. package/skills/model-sourcing/scripts/check_model_provenance_challenge/fixture/dossier_defect.json +15 -0
  107. package/skills/model-sourcing/scripts/check_model_provenance_challenge/fixture/dossier_unstated.json +11 -0
  108. package/skills/model-sourcing/scripts/check_model_provenance_challenge/problem.md +48 -0
  109. package/skills/model-sourcing/scripts/check_model_provenance_challenge/verify.sh +43 -0
  110. package/skills/model-sourcing/skill.yml +50 -0
  111. package/skills/model-sourcing/tests/test_model_provenance.sh +103 -0
  112. package/skills/orchestrate/SKILL.md +11 -1
  113. package/skills/peer-review/SKILL.md +47 -5
  114. package/skills/peer-review/references/domain-probes/observational_confounding.md +1 -1
  115. package/skills/peer-review/scripts/check_review_boxes.py +207 -0
  116. package/skills/peer-review/scripts/check_review_length.py +251 -0
  117. package/skills/peer-review/scripts/scan_pdf_layers.py +36 -7
  118. package/skills/peer-review/tests/test_review_draft_gates.sh +198 -0
  119. package/skills/peer-review/tests/test_scan_pdf_layers_xmp.sh +122 -0
  120. package/skills/polish-language/SKILL.md +18 -0
  121. package/skills/polish-language/scripts/lint_challenge/expected/report.txt +4 -1
  122. package/skills/polish-language/scripts/lint_challenge/fixture/manuscript.md +4 -0
  123. package/skills/polish-language/scripts/lint_challenge/problem.md +1 -1
  124. package/skills/polish-language/scripts/lint_challenge/verify.sh +1 -1
  125. package/skills/polish-language/scripts/lint_consistency.py +76 -5
  126. package/skills/polish-language/scripts/lint_figure_locale.py +236 -0
  127. package/skills/polish-language/scripts/lint_figure_locale_challenge/problem.md +39 -0
  128. package/skills/polish-language/scripts/lint_figure_locale_challenge/verify.sh +87 -0
  129. package/skills/polish-language/skill.yml +3 -0
  130. package/skills/polish-language/tests/test_numeral_designators.sh +84 -0
  131. package/skills/preprocess-imaging/SKILL.md +7 -1
  132. package/skills/preprocess-imaging/scripts/check_preprocessing_leakage.py +18 -2
  133. package/skills/preprocess-imaging/tests/test_preprocessing_leakage.sh +27 -1
  134. package/skills/present-paper/SKILL.md +8 -0
  135. package/skills/present-paper/scripts/check_slide_tells.py +26 -2
  136. package/skills/present-paper/tests/test_slide_page_numbers.sh +72 -0
  137. package/skills/profile-imaging/SKILL.md +176 -0
  138. package/skills/profile-imaging/scripts/check_dataset_profile.py +332 -0
  139. package/skills/profile-imaging/scripts/check_dataset_profile_challenge/expected/clean.txt +8 -0
  140. package/skills/profile-imaging/scripts/check_dataset_profile_challenge/expected/defect.txt +21 -0
  141. package/skills/profile-imaging/scripts/check_dataset_profile_challenge/fixture/profile_clean.json +196 -0
  142. package/skills/profile-imaging/scripts/check_dataset_profile_challenge/fixture/profile_defect.json +304 -0
  143. package/skills/profile-imaging/scripts/check_dataset_profile_challenge/problem.md +26 -0
  144. package/skills/profile-imaging/scripts/check_dataset_profile_challenge/verify.sh +41 -0
  145. package/skills/profile-imaging/scripts/profile_imaging_dataset.py +168 -0
  146. package/skills/profile-imaging/skill.yml +48 -0
  147. package/skills/profile-imaging/tests/test_dataset_profile.sh +145 -0
  148. package/skills/render-pdf-doc/SKILL.md +16 -2
  149. package/skills/revise/SKILL.md +14 -2
  150. package/skills/revise/scripts/_quote_match.py +172 -0
  151. package/skills/revise/scripts/check_response_claims.py +70 -7
  152. package/skills/revise/tests/test_response_claims.sh +62 -0
  153. package/skills/self-review/SKILL.md +181 -309
  154. package/skills/self-review/references/domain-probes/observational_confounding.md +1 -1
  155. package/skills/self-review/references/phases/phase2_5a2_design_power.md +62 -0
  156. package/skills/self-review/references/phases/phase2_5c_reference_scans.md +94 -0
  157. package/skills/self-review/references/phases/phase2_5d_xref_qc.md +14 -5
  158. package/skills/self-review/references/phases/phase2_5f_claim_artifact.md +16 -9
  159. package/skills/self-review/references/phases/phase2_6_panel.md +72 -0
  160. package/skills/self-review/references/phases/phase2_systematic_check.md +1 -1
  161. package/skills/self-review/references/phases/phase3c_json_output.md +49 -0
  162. package/skills/self-review/references/phases/phase4_fix_support.md +53 -0
  163. package/skills/self-review/scripts/_frontmatter.py +44 -0
  164. package/skills/self-review/scripts/_prose.py +57 -0
  165. package/skills/self-review/scripts/_qc_findings.py +120 -0
  166. package/skills/self-review/scripts/check_aphorism_density.py +199 -0
  167. package/skills/self-review/scripts/check_baseline_drift.py +251 -0
  168. package/skills/self-review/scripts/check_baseline_drift_challenge/expected/drifted.txt +7 -0
  169. package/skills/self-review/scripts/check_baseline_drift_challenge/expected/nobaseline.txt +4 -0
  170. package/skills/self-review/scripts/check_baseline_drift_challenge/expected/overhedged.txt +5 -0
  171. package/skills/self-review/scripts/check_baseline_drift_challenge/expected/stable.txt +4 -0
  172. package/skills/self-review/scripts/check_baseline_drift_challenge/fixture/baseline.md +18 -0
  173. package/skills/self-review/scripts/check_baseline_drift_challenge/fixture/drifted.md +16 -0
  174. package/skills/self-review/scripts/check_baseline_drift_challenge/fixture/overhedged.md +17 -0
  175. package/skills/self-review/scripts/check_baseline_drift_challenge/fixture/stable.md +18 -0
  176. package/skills/self-review/scripts/check_baseline_drift_challenge/problem.md +41 -0
  177. package/skills/self-review/scripts/check_baseline_drift_challenge/verify.sh +45 -0
  178. package/skills/self-review/scripts/check_citation_order.py +265 -13
  179. package/skills/self-review/scripts/check_claim_artifact.py +80 -3
  180. package/skills/self-review/scripts/check_classical_style.py +81 -15
  181. package/skills/self-review/scripts/check_cohort_arithmetic.py +296 -8
  182. package/skills/self-review/scripts/check_confounding_completeness.py +20 -6
  183. package/skills/self-review/scripts/check_effect_stability.py +243 -0
  184. package/skills/self-review/scripts/check_effect_stability_challenge/expected/bad.txt +9 -0
  185. package/skills/self-review/scripts/check_effect_stability_challenge/expected/ok.txt +8 -0
  186. package/skills/self-review/scripts/check_effect_stability_challenge/fixture/effect_bad.md +9 -0
  187. package/skills/self-review/scripts/check_effect_stability_challenge/fixture/effect_ok.md +7 -0
  188. package/skills/self-review/scripts/check_effect_stability_challenge/problem.md +16 -0
  189. package/skills/self-review/scripts/check_effect_stability_challenge/verify.sh +41 -0
  190. package/skills/self-review/scripts/check_figure_citation.py +125 -14
  191. package/skills/self-review/scripts/check_figure_citation_challenge/fixture/panel_regression.md +15 -0
  192. package/skills/self-review/scripts/check_figure_citation_challenge/fixture/real_orphan.md +13 -0
  193. package/skills/self-review/scripts/check_figure_citation_challenge/problem.md +28 -0
  194. package/skills/self-review/scripts/check_figure_citation_challenge/verify.sh +31 -0
  195. package/skills/self-review/scripts/check_incorporation_bias.py +191 -0
  196. package/skills/self-review/scripts/check_incorporation_bias_challenge/expected/bad.txt +8 -0
  197. package/skills/self-review/scripts/check_incorporation_bias_challenge/expected/ok.txt +8 -0
  198. package/skills/self-review/scripts/check_incorporation_bias_challenge/fixture/incorp_bad.md +11 -0
  199. package/skills/self-review/scripts/check_incorporation_bias_challenge/fixture/incorp_ok.md +10 -0
  200. package/skills/self-review/scripts/check_incorporation_bias_challenge/problem.md +14 -0
  201. package/skills/self-review/scripts/check_incorporation_bias_challenge/verify.sh +30 -0
  202. package/skills/self-review/scripts/check_panel_diversity.py +148 -6
  203. package/skills/self-review/scripts/check_perspective_structure.py +277 -0
  204. package/skills/self-review/scripts/check_perspective_structure_challenge/expected/edge_hardened.txt +8 -0
  205. package/skills/self-review/scripts/check_perspective_structure_challenge/expected/not_perspective.txt +8 -0
  206. package/skills/self-review/scripts/check_perspective_structure_challenge/expected/perspective_bad.txt +11 -0
  207. package/skills/self-review/scripts/check_perspective_structure_challenge/expected/perspective_ok.txt +8 -0
  208. package/skills/self-review/scripts/check_perspective_structure_challenge/fixture/edge_hardened.md +32 -0
  209. package/skills/self-review/scripts/check_perspective_structure_challenge/fixture/not_perspective.md +24 -0
  210. package/skills/self-review/scripts/check_perspective_structure_challenge/fixture/perspective_bad.md +20 -0
  211. package/skills/self-review/scripts/check_perspective_structure_challenge/fixture/perspective_ok.md +16 -0
  212. package/skills/self-review/scripts/check_perspective_structure_challenge/problem.md +42 -0
  213. package/skills/self-review/scripts/check_perspective_structure_challenge/verify.sh +57 -0
  214. package/skills/self-review/scripts/check_reference_adequacy.py +3 -0
  215. package/skills/self-review/scripts/check_rhetorical_density.py +241 -0
  216. package/skills/self-review/scripts/check_scope_coherence.py +144 -1
  217. package/skills/self-review/scripts/check_table_percentages.py +34 -2
  218. package/skills/self-review/scripts/cohort_arith_binding_challenge/fixture/decimal_person_time.md +3 -0
  219. package/skills/self-review/scripts/cohort_arith_binding_challenge/fixture/genuine_defects.md +10 -0
  220. package/skills/self-review/scripts/cohort_arith_binding_challenge/fixture/real_negatives.md +16 -0
  221. package/skills/self-review/scripts/cohort_arith_binding_challenge/verify.sh +84 -0
  222. package/skills/self-review/scripts/confounding_findings_challenge/fixture/adjusted.txt +2 -0
  223. package/skills/self-review/scripts/confounding_findings_challenge/fixture/defining.txt +2 -0
  224. package/skills/self-review/scripts/confounding_findings_challenge/fixture/table1.csv +7 -0
  225. package/skills/self-review/scripts/confounding_findings_challenge/verify.sh +75 -0
  226. package/skills/self-review/scripts/disclosure_placement_challenge/fixture/about_disclosure.md +9 -0
  227. package/skills/self-review/scripts/disclosure_placement_challenge/fixture/manuscript.md +13 -0
  228. package/skills/self-review/scripts/disclosure_placement_challenge/verify.sh +99 -0
  229. package/skills/self-review/scripts/refinement_regression.py +215 -0
  230. package/skills/self-review/scripts/refinement_regression_challenge/expected/churning.txt +5 -0
  231. package/skills/self-review/scripts/refinement_regression_challenge/expected/converged.txt +5 -0
  232. package/skills/self-review/scripts/refinement_regression_challenge/expected/findings_regression.txt +5 -0
  233. package/skills/self-review/scripts/refinement_regression_challenge/expected/firstrun.txt +5 -0
  234. package/skills/self-review/scripts/refinement_regression_challenge/expected/progressing.txt +5 -0
  235. package/skills/self-review/scripts/refinement_regression_challenge/expected/regression.txt +5 -0
  236. package/skills/self-review/scripts/refinement_regression_challenge/fixture/churning/ledger.jsonl +2 -0
  237. package/skills/self-review/scripts/refinement_regression_challenge/fixture/churning/qc/gate.json +1 -0
  238. package/skills/self-review/scripts/refinement_regression_challenge/fixture/converged/ledger.jsonl +1 -0
  239. package/skills/self-review/scripts/refinement_regression_challenge/fixture/converged/qc/gate.json +1 -0
  240. package/skills/self-review/scripts/refinement_regression_challenge/fixture/findings_regression/ledger.jsonl +1 -0
  241. package/skills/self-review/scripts/refinement_regression_challenge/fixture/findings_regression/qc/table_pct.json +1 -0
  242. package/skills/self-review/scripts/refinement_regression_challenge/fixture/firstrun/ledger.jsonl +0 -0
  243. package/skills/self-review/scripts/refinement_regression_challenge/fixture/firstrun/qc/gate.json +1 -0
  244. package/skills/self-review/scripts/refinement_regression_challenge/fixture/progressing/ledger.jsonl +1 -0
  245. package/skills/self-review/scripts/refinement_regression_challenge/fixture/progressing/qc/gate.json +1 -0
  246. package/skills/self-review/scripts/refinement_regression_challenge/fixture/regression/ledger.jsonl +1 -0
  247. package/skills/self-review/scripts/refinement_regression_challenge/fixture/regression/qc/gate.json +1 -0
  248. package/skills/self-review/scripts/refinement_regression_challenge/problem.md +38 -0
  249. package/skills/self-review/scripts/refinement_regression_challenge/verify.sh +53 -0
  250. package/skills/self-review/scripts/refinement_stop.py +218 -0
  251. package/skills/self-review/scripts/refinement_stop_challenge/expected/continue.txt +6 -0
  252. package/skills/self-review/scripts/refinement_stop_challenge/expected/empty.txt +6 -0
  253. package/skills/self-review/scripts/refinement_stop_challenge/expected/findings_major.txt +6 -0
  254. package/skills/self-review/scripts/refinement_stop_challenge/expected/minor_optional.txt +6 -0
  255. package/skills/self-review/scripts/refinement_stop_challenge/expected/overhardening.txt +6 -0
  256. package/skills/self-review/scripts/refinement_stop_challenge/expected/unparsed_gate.txt +7 -0
  257. package/skills/self-review/scripts/refinement_stop_challenge/expected/zero_edit.txt +6 -0
  258. package/skills/self-review/scripts/refinement_stop_challenge/fixture/continue/cohort_arithmetic.json +1 -0
  259. package/skills/self-review/scripts/refinement_stop_challenge/fixture/continue/editorial_impression.json +1 -0
  260. package/skills/self-review/scripts/refinement_stop_challenge/fixture/empty/.gitkeep +1 -0
  261. package/skills/self-review/scripts/refinement_stop_challenge/fixture/findings_major/editorial_impression.json +1 -0
  262. package/skills/self-review/scripts/refinement_stop_challenge/fixture/findings_major/table_pct.json +1 -0
  263. package/skills/self-review/scripts/refinement_stop_challenge/fixture/minor_optional/cohort_arithmetic.json +1 -0
  264. package/skills/self-review/scripts/refinement_stop_challenge/fixture/minor_optional/editorial_impression.json +1 -0
  265. package/skills/self-review/scripts/refinement_stop_challenge/fixture/overhardening/cohort_arithmetic.json +1 -0
  266. package/skills/self-review/scripts/refinement_stop_challenge/fixture/overhardening/editorial_impression.json +1 -0
  267. package/skills/self-review/scripts/refinement_stop_challenge/fixture/unparsed_gate/cohort.json +1 -0
  268. package/skills/self-review/scripts/refinement_stop_challenge/fixture/unparsed_gate/novel.json +1 -0
  269. package/skills/self-review/scripts/refinement_stop_challenge/fixture/zero_edit/cohort_arithmetic.json +1 -0
  270. package/skills/self-review/scripts/refinement_stop_challenge/fixture/zero_edit/editorial_impression.json +1 -0
  271. package/skills/self-review/scripts/refinement_stop_challenge/problem.md +39 -0
  272. package/skills/self-review/scripts/refinement_stop_challenge/verify.sh +45 -0
  273. package/skills/self-review/skill.yml +16 -0
  274. package/skills/self-review/tests/fixtures/aphorism_clean.md +46 -0
  275. package/skills/self-review/tests/fixtures/aphorism_dense.md +28 -0
  276. package/skills/self-review/tests/fixtures/aphorism_frontmatter.md +19 -0
  277. package/skills/self-review/tests/fixtures/citation_order_frontmatter.md +30 -0
  278. package/skills/self-review/tests/fixtures/citation_order_ref_gap.md +20 -0
  279. package/skills/self-review/tests/fixtures/citation_order_ref_good.md +21 -0
  280. package/skills/self-review/tests/fixtures/citation_order_ref_order_bad.md +25 -0
  281. package/skills/self-review/tests/fixtures/citation_order_ref_range_ok.md +31 -0
  282. package/skills/self-review/tests/fixtures/citation_order_section_bad.md +8 -0
  283. package/skills/self-review/tests/fixtures/citation_order_section_good.md +9 -0
  284. package/skills/self-review/tests/fixtures/citation_order_uncited.md +24 -0
  285. package/skills/self-review/tests/fixtures/claim_body_reassign.md +3 -0
  286. package/skills/self-review/tests/fixtures/claim_frontmatter_changelog.md +15 -0
  287. package/skills/self-review/tests/fixtures/claim_registration_bad.md +7 -0
  288. package/skills/self-review/tests/fixtures/claim_registration_clean.md +11 -0
  289. package/skills/self-review/tests/fixtures/cohort_dup_ci.md +9 -0
  290. package/skills/self-review/tests/fixtures/cohort_dup_ci_clean.md +9 -0
  291. package/skills/self-review/tests/fixtures/cohort_followup_criterion.md +2 -0
  292. package/skills/self-review/tests/fixtures/cohort_followup_ok.md +3 -0
  293. package/skills/self-review/tests/fixtures/cohort_nested_models.md +9 -0
  294. package/skills/self-review/tests/fixtures/cohort_nested_models_base.md +9 -0
  295. package/skills/self-review/tests/fixtures/cohort_partition_prose.md +9 -0
  296. package/skills/self-review/tests/fixtures/cohort_partition_prose_clean.md +19 -0
  297. package/skills/self-review/tests/fixtures/figcite_credit_bad.md +9 -0
  298. package/skills/self-review/tests/fixtures/figcite_credit_ok.md +9 -0
  299. package/skills/self-review/tests/fixtures/figcite_embedded.md +13 -0
  300. package/skills/self-review/tests/fixtures/figcite_not_embedded.md +9 -0
  301. package/skills/self-review/tests/fixtures/figure_clean.md +5 -0
  302. package/skills/self-review/tests/fixtures/panel_one_returned.json +13 -0
  303. package/skills/self-review/tests/fixtures/panel_stats_lens.json +31 -0
  304. package/skills/self-review/tests/fixtures/rhetorical_clean.md +31 -0
  305. package/skills/self-review/tests/fixtures/rhetorical_dense.md +22 -0
  306. package/skills/self-review/tests/fixtures/roster_3.json +1 -0
  307. package/skills/self-review/tests/fixtures/roster_4.json +1 -0
  308. package/skills/self-review/tests/fixtures/roster_indep_substrate.json +6 -0
  309. package/skills/self-review/tests/fixtures/roster_mono_substrate.json +6 -0
  310. package/skills/self-review/tests/fixtures/scope_gradient.md +7 -0
  311. package/skills/self-review/tests/fixtures/scope_gradient_tested.md +6 -0
  312. package/skills/self-review/tests/fixtures/scope_universal_negative.md +3 -0
  313. package/skills/self-review/tests/fixtures/scope_universal_negative_ok.md +3 -0
  314. package/skills/self-review/tests/fixtures/supplement_pii_clean.md +1 -1
  315. package/skills/self-review/tests/fixtures/supplement_pii_tie.md +1 -1
  316. package/skills/self-review/tests/test_aphorism_density.sh +51 -0
  317. package/skills/self-review/tests/test_citation_order.sh +88 -0
  318. package/skills/self-review/tests/test_claim_artifact.sh +29 -0
  319. package/skills/self-review/tests/test_cohort_arithmetic.sh +59 -0
  320. package/skills/self-review/tests/test_confounding_completeness.sh +10 -3
  321. package/skills/self-review/tests/test_figure_citation.sh +28 -1
  322. package/skills/self-review/tests/test_figure_citation_labels.sh +122 -0
  323. package/skills/self-review/tests/test_panel_diversity.sh +46 -0
  324. package/skills/self-review/tests/test_panel_mode.sh +7 -1
  325. package/skills/self-review/tests/test_qc_severity_vocabulary.sh +94 -0
  326. package/skills/self-review/tests/test_rhetorical_density.sh +56 -0
  327. package/skills/self-review/tests/test_scope_coherence.sh +29 -0
  328. package/skills/self-review/tests/test_table_percent_denominator.sh +116 -0
  329. package/skills/sync-submission/SKILL.md +84 -0
  330. package/skills/sync-submission/scripts/_quote_match.py +172 -0
  331. package/skills/sync-submission/scripts/check_asset_anonymization.py +15 -2
  332. package/skills/sync-submission/scripts/check_credit_integrity.py +402 -0
  333. package/skills/sync-submission/scripts/check_disclosure_availability.py +31 -4
  334. package/skills/sync-submission/scripts/check_portal_field_residue.py +193 -0
  335. package/skills/sync-submission/scripts/check_portal_field_residue_challenge/fixture/negative/abstract.txt +4 -0
  336. package/skills/sync-submission/scripts/check_portal_field_residue_challenge/fixture/negative/keywords.txt +3 -0
  337. package/skills/sync-submission/scripts/check_portal_field_residue_challenge/fixture/positive/abstract.txt +6 -0
  338. package/skills/sync-submission/scripts/check_portal_field_residue_challenge/fixture/positive/take_home.txt +3 -0
  339. package/skills/sync-submission/scripts/check_portal_field_residue_challenge/problem.md +33 -0
  340. package/skills/sync-submission/scripts/check_portal_field_residue_challenge/verify.sh +53 -0
  341. package/skills/sync-submission/scripts/check_portal_mirror.py +436 -0
  342. package/skills/sync-submission/scripts/check_wordcount_cap.py +23 -3
  343. package/skills/sync-submission/scripts/cover_letter_drift_check.py +80 -3
  344. package/skills/sync-submission/scripts/credit_integrity_challenge/fixture/manuscript_bad.md +16 -0
  345. package/skills/sync-submission/scripts/credit_integrity_challenge/fixture/manuscript_good.md +20 -0
  346. package/skills/sync-submission/scripts/credit_integrity_challenge/verify.sh +156 -0
  347. package/skills/sync-submission/scripts/figure_portal_readiness_challenge/problem.md +27 -0
  348. package/skills/sync-submission/scripts/figure_portal_readiness_challenge/verify.sh +78 -0
  349. package/skills/sync-submission/scripts/figure_portal_readiness_check.py +140 -0
  350. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/manuscript.md +37 -0
  351. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_complete/acknowledgements.txt +3 -0
  352. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_complete/author_contributions.txt +3 -0
  353. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_complete/competing_interests.txt +1 -0
  354. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_complete/data_availability.txt +4 -0
  355. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_dropped/acknowledgements.txt +2 -0
  356. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_dropped/author_contributions.txt +2 -0
  357. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_dropped/data_availability.txt +4 -0
  358. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_reflowed/acknowledgements.txt +1 -0
  359. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_reflowed/author_contributions.txt +5 -0
  360. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_reflowed/competing_interests.txt +1 -0
  361. package/skills/sync-submission/scripts/portal_mirror_challenge/fixture/portal_reflowed/data_availability.txt +1 -0
  362. package/skills/sync-submission/scripts/portal_mirror_challenge/verify.sh +127 -0
  363. package/skills/sync-submission/scripts/preflight_gate.py +119 -1
  364. package/skills/sync-submission/skill.yml +3 -0
  365. package/skills/sync-submission/tests/test_anonymization_config_scan.sh +74 -0
  366. package/skills/sync-submission/tests/test_cover_letter_title_drift.sh +65 -0
  367. package/skills/sync-submission/tests/test_disclosure_availability.sh +73 -0
  368. package/skills/sync-submission/tests/test_wordcount_heading_forms.sh +85 -0
  369. package/skills/verify-refs/SKILL.md +37 -0
  370. package/skills/verify-refs/scripts/_quote_match.py +172 -0
  371. package/skills/verify-refs/scripts/check_claim_fidelity.py +644 -0
  372. package/skills/verify-refs/scripts/claim_fidelity_challenge/fixture/fulltext/10.1000_synthetic.oversight.md +61 -0
  373. package/skills/verify-refs/scripts/claim_fidelity_challenge/fixture/fulltext/10.1000_synthetic.stub.md +16 -0
  374. package/skills/verify-refs/scripts/claim_fidelity_challenge/fixture/manuscript_numbered.md +17 -0
  375. package/skills/verify-refs/scripts/claim_fidelity_challenge/fixture/manuscript_shortsource.md +12 -0
  376. package/skills/verify-refs/scripts/claim_fidelity_challenge/fixture/manuscript_supported.md +16 -0
  377. package/skills/verify-refs/scripts/claim_fidelity_challenge/fixture/manuscript_unsupported.md +15 -0
  378. package/skills/verify-refs/scripts/claim_fidelity_challenge/fixture/refs.bib +19 -0
  379. package/skills/verify-refs/scripts/claim_fidelity_challenge/verify.sh +157 -0
  380. package/skills/verify-refs/scripts/verify_refs.py +78 -21
  381. package/skills/verify-refs/skill.yml +6 -0
  382. package/skills/verify-refs/tests/test_bib_last_field.sh +137 -0
  383. package/skills/verify-refs/tests/test_bibtex_et_al.sh +101 -0
  384. package/skills/write-paper/SKILL.md +9 -1
  385. package/skills/write-paper/references/journal_profiles/AJKD.md +138 -0
  386. package/skills/write-paper/references/journal_profiles/Academic_Radiology.md +3 -0
  387. package/skills/write-paper/references/journal_profiles/British_Journal_of_Radiology.md +3 -0
  388. package/skills/write-paper/references/journal_profiles/Diabetes_Metabolism_Journal.md +3 -0
  389. package/skills/write-paper/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +3 -0
  390. package/skills/write-paper/references/journal_profiles/Hepatology_Communications.md +3 -0
  391. package/skills/write-paper/references/journal_profiles/Investigative_Radiology.md +3 -0
  392. package/skills/write-paper/references/journal_profiles/JACC_Advances.md +3 -0
  393. package/skills/write-paper/references/journal_profiles/JASN.md +131 -0
  394. package/skills/write-paper/references/journal_profiles/JKMS.md +3 -0
  395. package/skills/write-paper/references/journal_profiles/JNIS.md +3 -0
  396. package/skills/write-paper/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +3 -0
  397. package/skills/write-paper/references/journal_profiles/Journal_of_Stroke.md +3 -0
  398. package/skills/write-paper/references/journal_profiles/KJR.md +3 -0
  399. package/skills/write-paper/references/journal_profiles/Kidney_International.md +122 -0
  400. package/skills/write-paper/references/journal_profiles/Korean_Circulation_Journal.md +3 -0
  401. package/skills/write-paper/references/journal_profiles/Korean_Journal_of_Internal_Medicine.md +3 -0
  402. package/skills/write-paper/references/journal_profiles/Lancet_Gastroenterology_and_Hepatology.md +3 -0
  403. package/skills/write-paper/references/journal_profiles/Liver_International.md +3 -0
  404. package/skills/write-paper/references/journal_profiles/PLOS_Medicine.md +3 -0
  405. package/skills/write-paper/references/journal_profiles/RYAI.md +3 -0
  406. package/skills/write-paper/references/journal_profiles/The_Lancet.md +3 -0
  407. package/skills/write-paper/references/journal_profiles/The_Lancet_Digital_Health.md +3 -0
  408. package/skills/write-paper/references/journal_profiles/World_Journal_of_Hepatology.md +3 -0
  409. package/skills/write-paper/references/journal_profiles/npj_Digital_Medicine.md +32 -0
  410. package/skills/write-paper/references/phase7_polish_detail.md +12 -5
  411. package/skills/write-paper/scripts/build_title_page_affiliations.py +6 -6
  412. package/skills/write-paper/scripts/check_placeholders.py +27 -0
  413. package/skills/write-paper/tests/test_placeholders.sh +17 -0
  414. package/skills/write-paper/tests/test_title_page_affiliations.sh +11 -11
  415. package/skills/write-protocol/SKILL.md +8 -0
package/LICENSE CHANGED
@@ -19,71 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  SOFTWARE.
22
-
23
- ---
24
-
25
- ## Third-Party Content Licenses
26
-
27
- Parts of this package are not ours, and are bundled under their own licenses (NOT under MIT).
28
- This section is the index of them. It is checked against the tree on every build by
29
- `scripts/check_third_party_index.py` — a license file that describes a package other than the one
30
- you downloaded is worse than no license file at all.
31
-
32
- ### Reporting guideline checklists — our summaries (`skills/*/references/checklists/*.md`)
33
-
34
- These are educational summaries written in our own words, each citing its source. They do not
35
- relicense the underlying guideline.
36
-
37
- - STROBE: CC BY (https://www.strobe-statement.org)
38
- - STARD 2015 / STARD-AI: CC BY 4.0 (https://www.equator-network.org/reporting-guidelines/stard/)
39
- - TRIPOD / TRIPOD+AI: CC BY 4.0 (https://www.tripod-statement.org)
40
- - PRISMA 2020 / PRISMA-DTA: CC BY (https://www.prisma-statement.org)
41
- - ARRIVE 2.0: CC0 (https://arriveguidelines.org)
42
- - CONSORT 2025, SPIRIT 2025: CC BY 4.0 (https://www.consort-spirit.org)
43
-
44
- **Non-commercial restrictions.** The following summaries derive from instruments whose materials are
45
- CC BY-NC, and are therefore free to use and redistribute **for non-commercial purposes with
46
- attribution**; commercial use requires permission from the rights holders:
47
-
48
- - CARE, MI-CLEAR-LLM, DECIDE-AI: CC BY-NC 4.0
49
- - CLAIM 2024: educational summary of an RSNA open-access checklist (© RSNA)
50
-
51
- See `skills/check-reporting/references/LICENSES.md` for the per-file detail.
52
-
53
- ### Official guideline templates, verbatim (`skills/make-figures/templates/official/`)
54
-
55
- These are the guideline authors' own documents, redistributed unmodified:
56
-
57
- - CONSORT 2025 checklist + flow diagram (`.docx`): CC BY 4.0.
58
- © 2025 Hopewell S et al. *BMJ* 2025;388:e081123. doi:10.1136/bmj-2024-081123
59
- - SPIRIT 2025 checklist + participant timeline (`.docx`): CC BY 4.0.
60
- © 2025 Chan A-W et al. *BMJ* 2025;389:e081477. doi:10.1136/bmj-2024-081477
61
- - STARD 2015 checklist (`.docx`) and flow diagram (`.pdf`): CC BY 4.0.
62
- Bossuyt PM et al. *BMJ* 2015;351:h5527
63
- - PRISMA 2020 flow diagrams (`.pptx`): built by us with
64
- `skills/make-figures/scripts/build_prisma2020_template.py`, reproducing the published layout
65
- (Page MJ et al. *BMJ* 2021;372:n71, Fig 1, CC BY 4.0)
66
-
67
- The CONSORT and SPIRIT **2025** updates are CC BY 4.0 — "unrestricted use, distribution, and
68
- reproduction in any medium, provided the original work is properly cited". Their 2010 / 2013
69
- predecessors were CC BY-NC / CC BY-NC-ND and could not have been bundled; this file said so for a
70
- long time after the 2025 versions had replaced them.
71
-
72
- ### Citation styles (`skills/manage-refs/citation_styles/*.csl`)
73
-
74
- 15 CSL files from the Citation Style Language project: **CC BY-SA 3.0**, unmodified, each retaining
75
- its own `<rights>` element. See `skills/manage-refs/NOTICE.md`.
76
-
77
- ### Not bundled — download these yourself
78
-
79
- - **European Radiology graphical-abstract template** (`EURA-GA-Jan2025.pptx`):
80
- https://www.springer.com/journal/330 — the journal's own file, with no license permitting
81
- redistribution. `/make-figures` accepts it via `--template /absolute/path.pptx`.
82
-
83
- ## Optional Dependencies
84
-
85
- The following external packages are NOT bundled but may be installed separately by the user:
86
-
87
- - pymupdf4llm: AGPL-3.0 or Artifex Commercial License (https://pymupdf.readthedocs.io)
88
- Used by: fulltext-retrieval/pdf_to_md.py (optional PDF→Markdown conversion)
89
- Install: pip install pymupdf4llm
package/README.md CHANGED
@@ -2,14 +2,14 @@
2
2
 
3
3
  # MedSci Skills
4
4
 
5
- **56 skills that actually work.** Built by a physician-researcher, tested on real publications.
5
+ **58 skills that actually work.** Built by a physician-researcher, tested on real publications.
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 — 46 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
+ *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.*
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-56-brightgreen?style=flat-square)
12
+ ![Skills](https://img.shields.io/badge/Skills-58-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
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)
15
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)
@@ -92,6 +92,19 @@ cp -r medsci-skills/skills/* ~/.claude/skills/
92
92
 
93
93
  Restart Claude Code, then start with **`/orchestrate`** — it classifies your request and routes you to the right skill. Full install options (Codex, Cursor, individual skills) are in [Installation](#installation).
94
94
 
95
+ ### Install with `gh skill`
96
+
97
+ MedSci Skills follows the [Agent Skills standard](https://agentskills.io), so GitHub CLI ≥ 2.90 can search, preview, and install any skill straight from this repo — no clone (a `gh` preview feature):
98
+
99
+ ```bash
100
+ gh skill search medsci # list the whole collection
101
+ gh skill preview Aperivue/medsci-skills check-reporting # read a skill before installing
102
+ gh skill install Aperivue/medsci-skills check-reporting # install just that one
103
+ gh skill install --all Aperivue/medsci-skills # or install every skill
104
+ ```
105
+
106
+ Search by a skill's own name (`check-reporting`, `verify-refs`, `meta-analysis`) or by `medsci` to list them all — both return this repo directly. A broad topic word like `systematic review` is shared by hundreds of skills across GitHub, so add `--owner Aperivue` to see only ours.
107
+
95
108
  ### Install as a Claude Code plugin
96
109
 
97
110
  Prefer plugins? One line adds the marketplace; `/plugin` then lets you browse nine category plugins and enable the ones you want:
@@ -120,7 +133,7 @@ Install a single category and invoke its skills under that namespace:
120
133
  /medsci-analysis:analyze-stats
121
134
  ```
122
135
 
123
- All eight 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.
136
+ 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.
124
137
 
125
138
  **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>`:
126
139
 
@@ -288,6 +301,8 @@ The E2E pipeline (`orchestrate --e2e`) produces everything up to `qc/`. The `sub
288
301
 
289
302
  ## What's New
290
303
 
304
+ **v5.24.0** — a precision release: the gates were wrong about correct work. Fourteen shipped detectors were telling users something false, and the pattern behind most of them is one thing — a checker that accepts only its own generator's output and rejects the notation the world actually uses. `check_xref` did not recognise **"Figures 1 and 2"**, so a float cited the ordinary way scored `UNCITED` and the submission blocker **turned itself off** (`submission_safe: true` on a package missing a figure). `verify_refs` read BibTeX's own **`and others`** — the et-al. every reference manager writes — as `AUTHOR MISMATCH`, the render-aborting verdict, on correct consortium references; and an entry whose **last** field was the DOI parsed as having none, silently disabling the CrossRef and author cross-checks that skill exists to perform. `check_table_percentages` **invented a denominator** for the most common table in clinical research and printed specific wrong replacement percentages at MAJOR. `lint_consistency` advised writing **"type two diabetes"**. `check_asset_anonymization` passed a **double-blind institution leak** because it sat in a `.yaml`. `check_slide_tells` flagged the page numbers **this repository's own template generator** writes. `fill_journal_abbrev.py` had **never run** — it raised on its first entry, for every input, while another gate named it to the user as the remedy. And `refinement_stop` called a leftover `TODO` an *optional Minor* and told the loop to stop. Also: the release job's own failure had left v5.23.0 with **zero assets** and npm a version behind, with no way to retry a pushed tag — now create-or-update, outcome-asserted, and dispatchable; two of the four documented install paths were broken, and the worse one **succeeded** while making `~/.claude/skills` itself the skill; and the front page said **36** detectors while the catalog, the audit document and the paper said 84. Every fix ships a regression test that goes red against the previous behaviour. No new skill or detector; **58 skills / 47 guidelines / 84 integrity detectors / 23 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.23.)
305
+
291
306
  **v5.21** — verification-layer batch, mostly promoted from real submission failures. A **marked (tracked-changes) manuscript** is now built by driving Word's Compare from the command line and proved by a **round trip** — accepting every revision must reproduce the revised paper exactly, rejecting every revision must reproduce the original — and the gate is **move-aware**, because Word encodes a relocated paragraph as `w:moveFrom`/`w:moveTo` and an insert-and-delete-only verifier calls a good file corrupt. Every detector's `qc/*.json` now **names the detector that wrote it**, so an artifact can be traced back to the check that produced it (a CI-enforced contract). Two `/verify-refs` precision defects: a Unicode hyphen in a surname fired `MISMATCH` — the verdict that means *fabricated author* — on a correct reference, and a Better BibTeX brace-protected surname was read as a corporate author, **silently skipping** the author check the tool exists to perform. New gates: publisher markup in a `.bib` title (`<scp>WHO</scp>` renders as garbage and no gate looked at the printed title), **complete/quasi separation** before a logistic model is fitted (a pathognomonic sign has an empty cell by construction; `glm` returns OR = 0.00, *p* = 0.99, and an AUC that gets reported), and a probe + gate for manuscripts claiming a system **improved itself** (which rung of the verification hierarchy said so?). `/find-cohort-gap` now accepts a **local codebook** — an institutional registry or EMR export, not only a named public cohort — enumerating variables verbatim with provenance rather than letting a model summarise them. Additive and backward-compatible; **55 skills / 46 guidelines / 61 integrity detectors / 23 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.20.)
292
307
 
293
308
  **v5.20.1** — audit-driven coherence fixes. A real `/orchestrate --e2e` state-transition bug (the pipeline halted at step 3 because it required a DOCX that is only rendered at step 7), all 55 skills made routable from the single entry point with a CI reachability gate, and a README plugin-count that had drifted from the marketplace SSOT (now gated). No skill/detector change.
@@ -403,7 +418,7 @@ Earlier in this series: analysis-integrity guards (confounding completeness, cla
403
418
  | **Battle-tested** | Used on real manuscript submissions by a practicing physician-researcher | Unknown provenance and validation |
404
419
  | **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 |
405
420
 
406
- **MedSci-Audit** — the verification edge in the first rows above is a named suite of **36 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.
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.
407
422
 
408
423
  ---
409
424
 
@@ -470,14 +485,14 @@ ma-scout -> search-lit -> fulltext-retrieval -> design-study ──> write-proto
470
485
 
471
486
  ### By research stage
472
487
 
473
- 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/).
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/).
474
489
 
475
490
  | Stage | Skills |
476
491
  |-------|--------|
477
492
  | 🔭 **Discover & scope** | `ma-scout` · `find-cohort-gap` · `search-lit` · `fulltext-retrieval` · `lit-sync` · `author-strategy` |
478
493
  | 📐 **Design & plan** | `design-study` · `calc-sample-size` · `define-variables` · `write-protocol` · `fill-protocol` · `design-ai-benchmarking` |
479
494
  | 🧹 **Data & analysis** | `deidentify` · `clean-data` · `generate-codebook` · `version-dataset` · `analyze-stats` · `batch-cohort` · `cross-national` · `replicate-study` |
480
- | 🤖 **Medical-AI model engineering** | `preprocess-imaging` · `architecture-zoo` · `model-scaffold` · `model-validation` · `model-evaluation` · `uncertainty-imaging` · `explainability` · `radiomics-ml` · `model-card` · `mllm-eval` |
495
+ | 🤖 **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` |
481
496
  | ✍️ **Write & visualize** | `write-paper` · `make-figures` · `review-paper` · `present-paper` · `humanize` · `polish-language` · `academic-aio` |
482
497
  | ✅ **Comply & verify** | `check-reporting` · `self-review` · `verify-refs` · `manage-refs` |
483
498
  | 📤 **Submit & respond** | `find-journal` · `add-journal` · `sync-submission` · `revise` · `peer-review` · `fill-icmje-coi` |
@@ -492,13 +507,14 @@ All 55 skills, grouped by where they fit in the clinical-manuscript and medical-
492
507
  | **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. |
493
508
  | **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`. |
494
509
  | **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. |
495
- | **check-reporting** | Manuscript compliance audit against 46 reporting guidelines and risk of bias tools (STROBE, STROBE-MR, RECORD, 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. |
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. |
496
511
  | **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. |
497
512
  | **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. |
498
513
  | **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. |
499
514
  | **design-study** | Study design review: identifies analysis unit, cohort logic, data leakage risks, comparator design, validation strategy, and reporting guideline fit. |
500
515
  | **design-ai-benchmarking** | Design and validity review for benchmarking AI system(s) against a human-expert panel: evaluation-question and arm definition, decoupled multi-dimensional rubrics with anchors, planted calibration probes (positive-control / known-bad / instability / mechanism-contradiction), reviewer-panel construction with per-reviewer randomization, inter-rater reliability targets with separate control-item reliability, LLM-as-judge vs human-as-judge adjudication, construct-independence guards, and a structured JSON rating-export schema. Locks the rubric before data collection. |
501
516
  | **model-validation** | Design or audit the clinical-validation study for an engineer-built medical-imaging model (segmentation / classification / detection): patient-level split disjointness and the data-leakage taxonomy, tuning-on-test, internal vs genuine external validation, comparator design, single-run vs multi-seed variance, task-correct metric selection (Metrics Reloaded), test-set sizing, and CLAIM 2024 / TRIPOD+AI / STARD-AI reporting fit. Ships a deterministic split-leakage gate that proves patient disjointness by set arithmetic on the emitted split table. Integrates with MONAI / nnU-Net — does not replace them. |
517
+ | **profile-imaging** | Profile a medical-imaging dataset before any modelling decision — acquisition grid, voxel spacing and orientation spread, intensity domain, the label values actually present, foreground fraction and target volume — then gate that profile against the declared plan. Catches, while it is still cheap, what otherwise surfaces after a training run: a "test set" carrying no ground truth (`TEST_SET_UNLABELLED`), a label grid that does not match its image (`LABEL_SHAPE_MISMATCH`), a stray label index (`LABEL_VALUE_UNEXPECTED`), accuracy planned against a sliver-sized target (`ACCURACY_UNDER_IMBALANCE`), and acquisition heterogeneity with no declared resampling decision (`SPACING_HETEROGENEOUS`). The gate flags an *undeclared* decision, not variability itself. |
502
518
  | **preprocess-imaging** | Design or audit the data-preparation stage of a medical-imaging model — DICOM/NIfTI intake, resampling, intensity normalization, and the augmentation plan — so the pipeline is leakage-safe before `model-scaffold` builds the training repo. Emits a declarative preprocessing manifest and a deterministic data-stage leakage gate (`check_preprocessing_leakage`) that catches what the split table cannot see: a dataset-level normaliser fit on non-train data (`NORMALIZATION_LEAKAGE`), a data-fitted transform run before the split (`PREPROCESS_BEFORE_SPLIT`), and a patient's slices crossing splits (`PATIENT_CROSS_SPLIT`). Integrates MONAI / TorchIO transforms; never reimplements them or touches real patient data. |
503
519
  | **model-scaffold** | Generate a reproducible, runnable PyTorch training repo for a medical-imaging task — segmentation (U-Net), classification, detection, image-to-image synthesis, self-supervised pretraining, or fine-tuning a pretrained backbone (transfer learning) — the missing middle link between choosing an architecture and validating a trained model. Emits a patient-level seed-locked split as an auditable artifact, a task-appropriate model, train/evaluate scripts that seed every RNG and infer under eval mode, a config, requirements, a reproducibility record, and a Methods stub with VERIFY placeholders (no fabricated numbers). Fine-tuning mode (`--task finetune`) adds a frozen→unfrozen schedule, discriminative learning rates, and a pretrained-weight provenance record (`PRETRAINED.md`), with a MedSAM-adaptation + train-only diffusion-augmentation guide. Reproducibility holds by construction; ships a `check_training_hygiene` AST gate (RNG seeding, eval-mode inference, train-split-only loaders, pretrained-provenance) + a network-free build→validate challenge. Integrates with MONAI / nnU-Net / TorchIO / timm / torchvision for production-grade models. |
504
520
  | **architecture-zoo** | "Which architecture for which research question" decision tool: maps task (classification / segmentation / detection / transfer), modality, data scale, and class imbalance to a paper-grounded architecture shortlist. Curates the foundational curriculum (ResNet / DenseNet / EfficientNet / ViT / Swin; U-Net / 3-D U-Net / Attention & Residual U-Net / nnU-Net / Mask R-CNN; SAM/MedSAM / TotalSegmentator / BiomedCLIP / DINO / MAE / SimCLR) — each with core idea, when-to-use, medical-imaging use, reference implementation, validation setup, and the matching model-scaffold template. Advisory; teaches archetypes, not a live SOTA leaderboard. |
@@ -578,6 +594,7 @@ MedSci Skills가 설치됐는지 확인하고, 오늘 실습에 쓸 대표 스
578
594
 
579
595
  ```bash
580
596
  git clone https://github.com/Aperivue/medsci-skills.git
597
+ mkdir -p ~/.claude/skills
581
598
  cp -r medsci-skills/skills/* ~/.claude/skills/
582
599
  ```
583
600
 
@@ -585,6 +602,7 @@ cp -r medsci-skills/skills/* ~/.claude/skills/
585
602
 
586
603
  ```bash
587
604
  git clone https://github.com/Aperivue/medsci-skills.git
605
+ mkdir -p ~/.claude/skills
588
606
  cp -r medsci-skills/skills/check-reporting ~/.claude/skills/
589
607
  ```
590
608
 
@@ -603,6 +621,19 @@ npx medsci-skills doctor # quick Node/Python/skill-folder check
603
621
 
604
622
  Requires Node 18+ and (for `install`/`doctor`) `python3` on your PATH.
605
623
 
624
+ ### Option 5: GitHub CLI (`gh skill`)
625
+
626
+ If you use [GitHub CLI](https://cli.github.com/) ≥ 2.90, `gh skill` installs skills from any Agent-Skills repo — this one included — without cloning. It is a `gh` **preview** feature, so the exact flags may change.
627
+
628
+ ```bash
629
+ gh skill search medsci # list every MedSci skill
630
+ gh skill preview Aperivue/medsci-skills check-reporting # inspect one first
631
+ gh skill install Aperivue/medsci-skills check-reporting # install a single skill
632
+ gh skill install --all Aperivue/medsci-skills # or install all of them
633
+ ```
634
+
635
+ `gh skill install` places skills in the host-specific folder for the agent you pick with `--agent` (`claude-code` → `~/.claude/skills/`, `codex` → `~/.agents/skills/`, and many others), at user or project `--scope` — the same folders the npx and git paths above populate. Discovery works best by a skill's exact name or by `medsci`; for a broad topic word, scope with `--owner Aperivue`.
636
+
606
637
  ### Platform notes
607
638
 
608
639
  - Claude Code: skills are copied to `~/.claude/skills/` (also read by GitHub Copilot and Cursor).
@@ -665,8 +696,8 @@ Projects declare their source-of-truth layout in `SSOT.yaml`, and a `qc/migratio
665
696
  ### Meta-Analysis Failure Modes
666
697
  `/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).
667
698
 
668
- ### 46 Reporting Guidelines & RoB Tools Built-in
669
- `check-reporting` includes bundled checklists for 46 guidelines and risk-of-bias tools: STROBE, STROBE-MR, RECORD, 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.
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.
670
701
 
671
702
  ### Publication-Ready Output
672
703
  `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.
@@ -954,6 +985,8 @@ These skills are research productivity tools. They do **not** provide clinical d
954
985
 
955
986
  MIT License. See [LICENSE](LICENSE) for details.
956
987
 
988
+ Some bundled material is **not** ours and is not MIT: the official guideline templates, the CSL citation styles, and a few checklist summaries carry their own terms — including CC BY-NC, which restricts commercial use. Those are indexed in [THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md), which ships with every copy and is checked against the tree on every build.
989
+
957
990
  Bundled reporting guideline checklists retain their original Creative Commons licenses. See each checklist file for attribution.
958
991
 
959
992
  Optional dependency: `pdf_to_md.py` uses [pymupdf4llm](https://pymupdf.readthedocs.io) (AGPL-3.0). Not bundled -- installed separately by the user via `pip install pymupdf4llm`.
package/README_FIRST.md CHANGED
@@ -25,3 +25,13 @@ an install log in this folder.
25
25
  4. Paste the same first test prompt above.
26
26
 
27
27
  If macOS blocks the file, right-click it, choose **Open**, and confirm once.
28
+
29
+ ## Licence
30
+
31
+ MedSci Skills is MIT — see `LICENSE`.
32
+
33
+ Some material bundled here is **not** ours and is not MIT. A few reporting-checklist
34
+ summaries carry **CC BY-NC** terms, which permit use and redistribution **with attribution
35
+ for non-commercial purposes only**; commercial use needs permission from the rights holders.
36
+ The full index is in `THIRD-PARTY-NOTICES.md`, next to this file. Read it before using these
37
+ skills in paid or commercial work.
@@ -0,0 +1,65 @@
1
+ # Third-Party Content Licenses
2
+
3
+ Parts of this package are not ours, and are bundled under their own licenses (NOT under MIT).
4
+ This file is the index of them. It is checked against the tree on every build by
5
+ `scripts/check_third_party_index.py` — a notices file that describes a package other than the one
6
+ you downloaded is worse than no notices file at all.
7
+
8
+ ### Reporting guideline checklists — our summaries (`skills/*/references/checklists/*.md`)
9
+
10
+ These are educational summaries written in our own words, each citing its source. They do not
11
+ relicense the underlying guideline.
12
+
13
+ - STROBE: CC BY (https://www.strobe-statement.org)
14
+ - STARD 2015 / STARD-AI: CC BY 4.0 (https://www.equator-network.org/reporting-guidelines/stard/)
15
+ - TRIPOD / TRIPOD+AI: CC BY 4.0 (https://www.tripod-statement.org)
16
+ - PRISMA 2020 / PRISMA-DTA: CC BY (https://www.prisma-statement.org)
17
+ - ARRIVE 2.0: CC0 (https://arriveguidelines.org)
18
+ - CONSORT 2025, SPIRIT 2025: CC BY 4.0 (https://www.consort-spirit.org)
19
+
20
+ **Non-commercial restrictions.** The following summaries derive from instruments whose materials are
21
+ CC BY-NC, and are therefore free to use and redistribute **for non-commercial purposes with
22
+ attribution**; commercial use requires permission from the rights holders:
23
+
24
+ - CARE, MI-CLEAR-LLM, DECIDE-AI: CC BY-NC 4.0
25
+ - CLAIM 2024: educational summary of an RSNA open-access checklist (© RSNA)
26
+
27
+ See `skills/check-reporting/references/LICENSES.md` for the per-file detail.
28
+
29
+ ### Official guideline templates, verbatim (`skills/make-figures/templates/official/`)
30
+
31
+ These are the guideline authors' own documents, redistributed unmodified:
32
+
33
+ - CONSORT 2025 checklist + flow diagram (`.docx`): CC BY 4.0.
34
+ © 2025 Hopewell S et al. *BMJ* 2025;388:e081123. doi:10.1136/bmj-2024-081123
35
+ - SPIRIT 2025 checklist + participant timeline (`.docx`): CC BY 4.0.
36
+ © 2025 Chan A-W et al. *BMJ* 2025;389:e081477. doi:10.1136/bmj-2024-081477
37
+ - STARD 2015 checklist (`.docx`) and flow diagram (`.pdf`): CC BY 4.0.
38
+ Bossuyt PM et al. *BMJ* 2015;351:h5527
39
+ - PRISMA 2020 flow diagrams (`.pptx`): built by us with
40
+ `skills/make-figures/scripts/build_prisma2020_template.py`, reproducing the published layout
41
+ (Page MJ et al. *BMJ* 2021;372:n71, Fig 1, CC BY 4.0)
42
+
43
+ The CONSORT and SPIRIT **2025** updates are CC BY 4.0 — "unrestricted use, distribution, and
44
+ reproduction in any medium, provided the original work is properly cited". Their 2010 / 2013
45
+ predecessors were CC BY-NC / CC BY-NC-ND and could not have been bundled; this file said so for a
46
+ long time after the 2025 versions had replaced them.
47
+
48
+ ### Citation styles (`skills/manage-refs/citation_styles/*.csl`)
49
+
50
+ 15 CSL files from the Citation Style Language project: **CC BY-SA 3.0**, unmodified, each retaining
51
+ its own `<rights>` element. See `skills/manage-refs/NOTICE.md`.
52
+
53
+ ### Not bundled — download these yourself
54
+
55
+ - **European Radiology graphical-abstract template** (`EURA-GA-Jan2025.pptx`):
56
+ https://www.springer.com/journal/330 — the journal's own file, with no license permitting
57
+ redistribution. `/make-figures` accepts it via `--template /absolute/path.pptx`.
58
+
59
+ ## Optional Dependencies
60
+
61
+ The following external packages are NOT bundled but may be installed separately by the user:
62
+
63
+ - pymupdf4llm: AGPL-3.0 or Artifex Commercial License (https://pymupdf.readthedocs.io)
64
+ Used by: fulltext-retrieval/pdf_to_md.py (optional PDF→Markdown conversion)
65
+ Install: pip install pymupdf4llm