medsci-skills 4.1.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 (702) hide show
  1. package/LICENSE +50 -0
  2. package/README.md +602 -0
  3. package/README_FIRST.md +27 -0
  4. package/bin/medsci-skills.js +159 -0
  5. package/installers/install-macos.command +19 -0
  6. package/installers/install-windows.cmd +26 -0
  7. package/installers/install-windows.ps1 +17 -0
  8. package/installers/install.py +218 -0
  9. package/metadata/skills_catalog.json +452 -0
  10. package/package.json +48 -0
  11. package/skills/academic-aio/SKILL.md +408 -0
  12. package/skills/academic-aio/references/case_studies/kjr_mllm_2025.md +82 -0
  13. package/skills/academic-aio/references/checklists/AIO_GENERAL.md +354 -0
  14. package/skills/academic-aio/references/journal_summarybox_templates.yaml +126 -0
  15. package/skills/academic-aio/references/oac_funding_checklist.yaml +129 -0
  16. package/skills/academic-aio/references/reporting_guideline_mapping.md +39 -0
  17. package/skills/academic-aio/references/schema_markup_templates/CodeRepository.jsonld +32 -0
  18. package/skills/academic-aio/references/schema_markup_templates/Dataset.jsonld +36 -0
  19. package/skills/academic-aio/references/schema_markup_templates/Person.jsonld +30 -0
  20. package/skills/academic-aio/references/schema_markup_templates/README.md +43 -0
  21. package/skills/academic-aio/references/schema_markup_templates/ScholarlyArticle.jsonld +55 -0
  22. package/skills/academic-aio/scripts/batch_metadata_audit.py +169 -0
  23. package/skills/academic-aio/scripts/validate_schema.py +118 -0
  24. package/skills/academic-aio/skill.yml +36 -0
  25. package/skills/academic-aio/templates/aio_audit_checklist.md.j2 +108 -0
  26. package/skills/add-journal/SKILL.md +482 -0
  27. package/skills/add-journal/skill.yml +33 -0
  28. package/skills/analyze-stats/SKILL.md +598 -0
  29. package/skills/analyze-stats/references/analysis_guides/missing_data.md +109 -0
  30. package/skills/analyze-stats/references/analysis_guides/nhis_icd10_mapping.md +247 -0
  31. package/skills/analyze-stats/references/analysis_guides/propensity_score.md +132 -0
  32. package/skills/analyze-stats/references/analysis_guides/regression.md +115 -0
  33. package/skills/analyze-stats/references/analysis_guides/repeated_measures.md +160 -0
  34. package/skills/analyze-stats/references/analysis_guides/survey_weighted.md +366 -0
  35. package/skills/analyze-stats/references/analysis_guides/test_selection.md +86 -0
  36. package/skills/analyze-stats/references/style/figure_style.mplstyle +69 -0
  37. package/skills/analyze-stats/references/style/theme_publication.R +147 -0
  38. package/skills/analyze-stats/references/table-standards/journal-profiles/ajr.yaml +51 -0
  39. package/skills/analyze-stats/references/table-standards/journal-profiles/european_radiology.yaml +55 -0
  40. package/skills/analyze-stats/references/table-standards/journal-profiles/jama.yaml +66 -0
  41. package/skills/analyze-stats/references/table-standards/journal-profiles/lancet.yaml +57 -0
  42. package/skills/analyze-stats/references/table-standards/journal-profiles/nejm.yaml +51 -0
  43. package/skills/analyze-stats/references/table-standards/journal-profiles/radiology.yaml +66 -0
  44. package/skills/analyze-stats/references/table-standards/table-standards.md +287 -0
  45. package/skills/analyze-stats/references/table-standards/table-types/diagnostic_accuracy.md +36 -0
  46. package/skills/analyze-stats/references/table-standards/table-types/meta_analysis.md +58 -0
  47. package/skills/analyze-stats/references/table-standards/table-types/model_comparison.md +36 -0
  48. package/skills/analyze-stats/references/table-standards/table-types/regression_results.md +50 -0
  49. package/skills/analyze-stats/references/table-standards/table-types/table1_demographics.md +51 -0
  50. package/skills/analyze-stats/references/table-standards/tool-comparison.md +79 -0
  51. package/skills/analyze-stats/references/templates/agreement_analysis.py +436 -0
  52. package/skills/analyze-stats/references/templates/dca_plot.R +237 -0
  53. package/skills/analyze-stats/references/templates/diagnostic_accuracy.py +401 -0
  54. package/skills/analyze-stats/references/templates/dta_meta_analysis.R +384 -0
  55. package/skills/analyze-stats/references/templates/forest_plot.py +412 -0
  56. package/skills/analyze-stats/references/templates/likert_summary.py +356 -0
  57. package/skills/analyze-stats/references/templates/meta_analysis.R +365 -0
  58. package/skills/analyze-stats/references/templates/propensity_score.py +478 -0
  59. package/skills/analyze-stats/references/templates/regression.py +425 -0
  60. package/skills/analyze-stats/references/templates/repeated_measures.py +434 -0
  61. package/skills/analyze-stats/references/templates/sample_size.R +382 -0
  62. package/skills/analyze-stats/references/templates/survey_weighted_analysis.py +411 -0
  63. package/skills/analyze-stats/references/templates/survival_analysis.py +325 -0
  64. package/skills/analyze-stats/references/templates/table1_demographics.py +287 -0
  65. package/skills/analyze-stats/scripts/check_generated_code.py +335 -0
  66. package/skills/analyze-stats/skill.yml +38 -0
  67. package/skills/analyze-stats/tests/fixtures/gen_bad.R +16 -0
  68. package/skills/analyze-stats/tests/fixtures/gen_bad.py +24 -0
  69. package/skills/analyze-stats/tests/fixtures/gen_clean.py +21 -0
  70. package/skills/analyze-stats/tests/test_generated_code.sh +59 -0
  71. package/skills/analyze-stats/tests/test_survival_template.sh +53 -0
  72. package/skills/author-strategy/SKILL.md +117 -0
  73. package/skills/author-strategy/analyze_patterns.py +303 -0
  74. package/skills/author-strategy/fetch_pubmed.py +374 -0
  75. package/skills/author-strategy/skill.yml +34 -0
  76. package/skills/batch-cohort/SKILL.md +223 -0
  77. package/skills/batch-cohort/references/base_template_knhanes.R +210 -0
  78. package/skills/batch-cohort/references/batch_template_generator.R +222 -0
  79. package/skills/batch-cohort/references/variable_coding_registry.md +136 -0
  80. package/skills/batch-cohort/skill.yml +35 -0
  81. package/skills/calc-sample-size/SKILL.md +491 -0
  82. package/skills/calc-sample-size/references/formulas.md +655 -0
  83. package/skills/calc-sample-size/references/observational_cohort.md +49 -0
  84. package/skills/calc-sample-size/skill.yml +51 -0
  85. package/skills/check-reporting/SKILL.md +534 -0
  86. package/skills/check-reporting/references/LICENSES.md +41 -0
  87. package/skills/check-reporting/references/checklists/AMSTAR2.md +54 -0
  88. package/skills/check-reporting/references/checklists/ARRIVE_2.md +234 -0
  89. package/skills/check-reporting/references/checklists/CARE.md +102 -0
  90. package/skills/check-reporting/references/checklists/CLAIM_2024.md +128 -0
  91. package/skills/check-reporting/references/checklists/CLEAR.md +113 -0
  92. package/skills/check-reporting/references/checklists/CONSORT.md +86 -0
  93. package/skills/check-reporting/references/checklists/COSMIN_RoB.md +136 -0
  94. package/skills/check-reporting/references/checklists/GRRAS.md +61 -0
  95. package/skills/check-reporting/references/checklists/MI_CLEAR_LLM.md +167 -0
  96. package/skills/check-reporting/references/checklists/MOOSE.md +85 -0
  97. package/skills/check-reporting/references/checklists/NOS.md +88 -0
  98. package/skills/check-reporting/references/checklists/PRISMA_2020.md +135 -0
  99. package/skills/check-reporting/references/checklists/PRISMA_DTA.md +36 -0
  100. package/skills/check-reporting/references/checklists/PRISMA_P.md +56 -0
  101. package/skills/check-reporting/references/checklists/PROBAST.md +75 -0
  102. package/skills/check-reporting/references/checklists/PROBAST_AI.md +130 -0
  103. package/skills/check-reporting/references/checklists/QUADAS2.md +77 -0
  104. package/skills/check-reporting/references/checklists/QUADAS_C.md +131 -0
  105. package/skills/check-reporting/references/checklists/ROBINS_E.md +179 -0
  106. package/skills/check-reporting/references/checklists/ROBINS_I.md +87 -0
  107. package/skills/check-reporting/references/checklists/ROBIS.md +114 -0
  108. package/skills/check-reporting/references/checklists/ROB_ME.md +126 -0
  109. package/skills/check-reporting/references/checklists/RoB2.md +79 -0
  110. package/skills/check-reporting/references/checklists/RoB_NMA.md +96 -0
  111. package/skills/check-reporting/references/checklists/SPIRIT.md +112 -0
  112. package/skills/check-reporting/references/checklists/SQUIRE_2.md +68 -0
  113. package/skills/check-reporting/references/checklists/STARD.md +129 -0
  114. package/skills/check-reporting/references/checklists/STARD_AI.md +211 -0
  115. package/skills/check-reporting/references/checklists/STROBE.md +80 -0
  116. package/skills/check-reporting/references/checklists/SWiM.md +33 -0
  117. package/skills/check-reporting/references/checklists/TRIPOD.md +157 -0
  118. package/skills/check-reporting/references/checklists/TRIPOD_AI.md +140 -0
  119. package/skills/check-reporting/references/step4c_registration_timing.md +93 -0
  120. package/skills/check-reporting/references/step4d_prisma_figure_audit.md +137 -0
  121. package/skills/check-reporting/scripts/check_checklist_exists.py +183 -0
  122. package/skills/check-reporting/scripts/check_checklist_version.py +168 -0
  123. package/skills/check-reporting/scripts/check_framework_naming.py +206 -0
  124. package/skills/check-reporting/scripts/check_prisma_figure.py +209 -0
  125. package/skills/check-reporting/scripts/prisma_cascade_check.py +274 -0
  126. package/skills/check-reporting/skill.yml +41 -0
  127. package/skills/check-reporting/tests/fixtures/framework_bad.md +8 -0
  128. package/skills/check-reporting/tests/fixtures/framework_clean.md +7 -0
  129. package/skills/check-reporting/tests/test_checklist_fail_fast.sh +77 -0
  130. package/skills/check-reporting/tests/test_checklist_version.sh +72 -0
  131. package/skills/check-reporting/tests/test_framework_naming.sh +45 -0
  132. package/skills/check-reporting/tests/test_prisma_cascade.sh +104 -0
  133. package/skills/clean-data/SKILL.md +180 -0
  134. package/skills/clean-data/references/cleaning_patterns.md +299 -0
  135. package/skills/clean-data/references/profiling_template.py +304 -0
  136. package/skills/clean-data/scripts/check_structural_zero.py +174 -0
  137. package/skills/clean-data/skill.yml +35 -0
  138. package/skills/clean-data/tests/fixtures/smoking.csv +8 -0
  139. package/skills/clean-data/tests/test_structural_zero.sh +49 -0
  140. package/skills/cross-national/SKILL.md +264 -0
  141. package/skills/cross-national/skill.yml +37 -0
  142. package/skills/define-variables/SKILL.md +146 -0
  143. package/skills/define-variables/references/common_definitions.md +190 -0
  144. package/skills/define-variables/skill.yml +34 -0
  145. package/skills/define-variables/templates/variable_operationalization.md +64 -0
  146. package/skills/deidentify/SKILL.md +203 -0
  147. package/skills/deidentify/deidentify.py +1224 -0
  148. package/skills/deidentify/locales/_template.json +45 -0
  149. package/skills/deidentify/locales/au.json +43 -0
  150. package/skills/deidentify/locales/ca.json +44 -0
  151. package/skills/deidentify/locales/cn.json +47 -0
  152. package/skills/deidentify/locales/de.json +48 -0
  153. package/skills/deidentify/locales/fr.json +48 -0
  154. package/skills/deidentify/locales/in.json +48 -0
  155. package/skills/deidentify/locales/jp.json +48 -0
  156. package/skills/deidentify/locales/kr.json +48 -0
  157. package/skills/deidentify/locales/uk.json +45 -0
  158. package/skills/deidentify/locales/us.json +43 -0
  159. package/skills/deidentify/references/date_shift_guide.md +82 -0
  160. package/skills/deidentify/references/hipaa_18_identifiers.md +48 -0
  161. package/skills/deidentify/references/korean_phi_patterns.md +135 -0
  162. package/skills/deidentify/skill.yml +43 -0
  163. package/skills/deidentify/tests/README.md +26 -0
  164. package/skills/deidentify/tests/test_clean.csv +16 -0
  165. package/skills/deidentify/tests/test_edge_cases.csv +11 -0
  166. package/skills/deidentify/tests/test_phi_korean.csv +11 -0
  167. package/skills/design-ai-benchmarking/SKILL.md +214 -0
  168. package/skills/design-ai-benchmarking/references/benchmark_export_schema.json +69 -0
  169. package/skills/design-ai-benchmarking/references/elicitation_rubric_template.md +37 -0
  170. package/skills/design-ai-benchmarking/skill.yml +38 -0
  171. package/skills/design-study/SKILL.md +298 -0
  172. package/skills/design-study/skill.yml +33 -0
  173. package/skills/fill-icmje-coi/SKILL.md +216 -0
  174. package/skills/fill-icmje-coi/scripts/fill_icmje_coi.py +140 -0
  175. package/skills/fill-icmje-coi/skill.yml +35 -0
  176. package/skills/fill-icmje-coi/templates/icmje_coi_seed_synthetic.docx +0 -0
  177. package/skills/fill-protocol/SKILL.md +248 -0
  178. package/skills/fill-protocol/examples/example_irb_template.yaml +53 -0
  179. package/skills/fill-protocol/references/best_practices.md +121 -0
  180. package/skills/fill-protocol/scripts/doc_to_docx.py +111 -0
  181. package/skills/fill-protocol/scripts/fill_form.py +611 -0
  182. package/skills/fill-protocol/scripts/inspect_template.py +61 -0
  183. package/skills/fill-protocol/setup.sh +162 -0
  184. package/skills/fill-protocol/skill.yml +37 -0
  185. package/skills/find-cohort-gap/SKILL.md +309 -0
  186. package/skills/find-cohort-gap/references/cohort_profile_template.md +93 -0
  187. package/skills/find-cohort-gap/references/onepager_template.md +84 -0
  188. package/skills/find-cohort-gap/references/pattern_scoring_rubric.md +169 -0
  189. package/skills/find-cohort-gap/references/saturation_query_templates.md +143 -0
  190. package/skills/find-cohort-gap/skill.yml +35 -0
  191. package/skills/find-journal/POLICY.md +87 -0
  192. package/skills/find-journal/SKILL.md +340 -0
  193. package/skills/find-journal/references/journal_profiles/AJNR.md +29 -0
  194. package/skills/find-journal/references/journal_profiles/AJR.md +30 -0
  195. package/skills/find-journal/references/journal_profiles/Abdominal_Radiology.md +30 -0
  196. package/skills/find-journal/references/journal_profiles/Academic_Radiology.md +30 -0
  197. package/skills/find-journal/references/journal_profiles/Annals_of_Internal_Medicine.md +33 -0
  198. package/skills/find-journal/references/journal_profiles/Artificial_Intelligence_in_Medicine.md +28 -0
  199. package/skills/find-journal/references/journal_profiles/BMC_Medicine.md +31 -0
  200. package/skills/find-journal/references/journal_profiles/British_Journal_of_Radiology.md +39 -0
  201. package/skills/find-journal/references/journal_profiles/CVIR.md +30 -0
  202. package/skills/find-journal/references/journal_profiles/Chest.md +39 -0
  203. package/skills/find-journal/references/journal_profiles/Clinical_Radiology.md +30 -0
  204. package/skills/find-journal/references/journal_profiles/Clinical_and_Molecular_Hepatology.md +32 -0
  205. package/skills/find-journal/references/journal_profiles/Diabetes_Metabolism_Journal.md +36 -0
  206. package/skills/find-journal/references/journal_profiles/Diagnostic_and_Interventional_Radiology.md +32 -0
  207. package/skills/find-journal/references/journal_profiles/Endocrinology_and_Metabolism.md +37 -0
  208. package/skills/find-journal/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +39 -0
  209. package/skills/find-journal/references/journal_profiles/European_Radiology.md +29 -0
  210. package/skills/find-journal/references/journal_profiles/Hepatology_Communications.md +40 -0
  211. package/skills/find-journal/references/journal_profiles/Hepatology_International.md +37 -0
  212. package/skills/find-journal/references/journal_profiles/IEEE_JBHI.md +28 -0
  213. package/skills/find-journal/references/journal_profiles/IEEE_TMI.md +28 -0
  214. package/skills/find-journal/references/journal_profiles/INSI.md +29 -0
  215. package/skills/find-journal/references/journal_profiles/Investigative_Radiology.md +25 -0
  216. package/skills/find-journal/references/journal_profiles/JACC_Advances.md +41 -0
  217. package/skills/find-journal/references/journal_profiles/JACC_Asia.md +30 -0
  218. package/skills/find-journal/references/journal_profiles/JACR.md +28 -0
  219. package/skills/find-journal/references/journal_profiles/JAMA.md +40 -0
  220. package/skills/find-journal/references/journal_profiles/JAMA_Network_Open.md +30 -0
  221. package/skills/find-journal/references/journal_profiles/JCSM.md +39 -0
  222. package/skills/find-journal/references/journal_profiles/JKMS.md +32 -0
  223. package/skills/find-journal/references/journal_profiles/JMIR.md +29 -0
  224. package/skills/find-journal/references/journal_profiles/JMIR_Medical_Education.md +29 -0
  225. package/skills/find-journal/references/journal_profiles/JNIS.md +35 -0
  226. package/skills/find-journal/references/journal_profiles/JVIR.md +31 -0
  227. package/skills/find-journal/references/journal_profiles/Journal_of_Biomedical_Informatics.md +29 -0
  228. package/skills/find-journal/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +40 -0
  229. package/skills/find-journal/references/journal_profiles/Journal_of_Magnetic_Resonance_Imaging.md +30 -0
  230. package/skills/find-journal/references/journal_profiles/Journal_of_Nuclear_Medicine.md +31 -0
  231. package/skills/find-journal/references/journal_profiles/Journal_of_Stroke.md +32 -0
  232. package/skills/find-journal/references/journal_profiles/KJR.md +38 -0
  233. package/skills/find-journal/references/journal_profiles/Korean_Circulation_Journal.md +38 -0
  234. package/skills/find-journal/references/journal_profiles/Korean_Journal_of_Internal_Medicine.md +36 -0
  235. package/skills/find-journal/references/journal_profiles/Lancet_Diabetes_and_Endocrinology.md +40 -0
  236. package/skills/find-journal/references/journal_profiles/Lancet_Gastroenterology_and_Hepatology.md +49 -0
  237. package/skills/find-journal/references/journal_profiles/Lancet_Infectious_Diseases.md +38 -0
  238. package/skills/find-journal/references/journal_profiles/Lancet_Neurology.md +39 -0
  239. package/skills/find-journal/references/journal_profiles/Lancet_Oncology.md +40 -0
  240. package/skills/find-journal/references/journal_profiles/Lancet_Psychiatry.md +38 -0
  241. package/skills/find-journal/references/journal_profiles/Lancet_Public_Health.md +30 -0
  242. package/skills/find-journal/references/journal_profiles/Lancet_Respiratory_Medicine.md +39 -0
  243. package/skills/find-journal/references/journal_profiles/Liver_International.md +33 -0
  244. package/skills/find-journal/references/journal_profiles/Medical_Image_Analysis.md +28 -0
  245. package/skills/find-journal/references/journal_profiles/NEJM.md +33 -0
  246. package/skills/find-journal/references/journal_profiles/Nature_Machine_Intelligence.md +31 -0
  247. package/skills/find-journal/references/journal_profiles/Nature_Medicine.md +39 -0
  248. package/skills/find-journal/references/journal_profiles/Neuroradiology.md +31 -0
  249. package/skills/find-journal/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +39 -0
  250. package/skills/find-journal/references/journal_profiles/PLOS_Medicine.md +32 -0
  251. package/skills/find-journal/references/journal_profiles/RYAI.md +28 -0
  252. package/skills/find-journal/references/journal_profiles/Radiology.md +29 -0
  253. package/skills/find-journal/references/journal_profiles/Skeletal_Radiology.md +31 -0
  254. package/skills/find-journal/references/journal_profiles/Stroke.md +37 -0
  255. package/skills/find-journal/references/journal_profiles/The_BMJ.md +31 -0
  256. package/skills/find-journal/references/journal_profiles/The_Lancet.md +31 -0
  257. package/skills/find-journal/references/journal_profiles/The_Lancet_Digital_Health.md +29 -0
  258. package/skills/find-journal/references/journal_profiles/World_Journal_of_Hepatology.md +53 -0
  259. package/skills/find-journal/references/journal_profiles/npj_Digital_Medicine.md +29 -0
  260. package/skills/find-journal/skill.yml +34 -0
  261. package/skills/fulltext-retrieval/SKILL.md +174 -0
  262. package/skills/fulltext-retrieval/fetch_oa.py +433 -0
  263. package/skills/fulltext-retrieval/pdf_to_md.py +160 -0
  264. package/skills/fulltext-retrieval/skill.yml +41 -0
  265. package/skills/generate-codebook/SKILL.md +155 -0
  266. package/skills/generate-codebook/references/codebook_schema.md +76 -0
  267. package/skills/generate-codebook/scripts/generate_codebook.py +278 -0
  268. package/skills/generate-codebook/skill.yml +35 -0
  269. package/skills/generate-codebook/tests/test_generate_codebook.sh +76 -0
  270. package/skills/grant-builder/SKILL.md +251 -0
  271. package/skills/grant-builder/skill.yml +34 -0
  272. package/skills/humanize/SKILL.md +251 -0
  273. package/skills/humanize/references/ai_patterns.md +571 -0
  274. package/skills/humanize/skill.yml +33 -0
  275. package/skills/intake-project/SKILL.md +264 -0
  276. package/skills/intake-project/skill.yml +34 -0
  277. package/skills/lit-sync/SKILL.md +448 -0
  278. package/skills/lit-sync/references/locale/ko/note_templates.md +110 -0
  279. package/skills/lit-sync/skill.yml +52 -0
  280. package/skills/lit-sync/tests/test_poll_logic.sh +92 -0
  281. package/skills/ma-scout/SKILL.md +640 -0
  282. package/skills/ma-scout/references/project_readme_template.md +95 -0
  283. package/skills/ma-scout/references/project_readme_template_ko.md +82 -0
  284. package/skills/ma-scout/skill.yml +33 -0
  285. package/skills/make-figures/SKILL.md +957 -0
  286. package/skills/make-figures/references/critic_rubrics/data_plot.md +166 -0
  287. package/skills/make-figures/references/critic_rubrics/flow_diagram.md +169 -0
  288. package/skills/make-figures/references/design_principles.md +181 -0
  289. package/skills/make-figures/references/exemplar_diagrams/README.md +65 -0
  290. package/skills/make-figures/references/exemplar_diagrams/consort/README.md +15 -0
  291. package/skills/make-figures/references/exemplar_diagrams/consort/template_input.yaml +37 -0
  292. package/skills/make-figures/references/exemplar_diagrams/consort/template_output.pdf +0 -0
  293. package/skills/make-figures/references/exemplar_diagrams/consort/template_output.png +0 -0
  294. package/skills/make-figures/references/exemplar_diagrams/consort/template_output_600.png +0 -0
  295. package/skills/make-figures/references/exemplar_diagrams/other/other_02.meta.yaml +4 -0
  296. package/skills/make-figures/references/exemplar_diagrams/other/other_02.png +0 -0
  297. package/skills/make-figures/references/exemplar_diagrams/other/other_02_why.md +13 -0
  298. package/skills/make-figures/references/exemplar_diagrams/pipeline/README.md +15 -0
  299. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_01.meta.yaml +4 -0
  300. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_01.png +0 -0
  301. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_01_why.md +13 -0
  302. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_03.meta.yaml +4 -0
  303. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_03.png +0 -0
  304. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_03_why.md +13 -0
  305. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_04.meta.yaml +4 -0
  306. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_04.png +0 -0
  307. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_04_why.md +13 -0
  308. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_05.meta.yaml +4 -0
  309. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_05.png +0 -0
  310. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_05_why.md +13 -0
  311. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_06.meta.yaml +4 -0
  312. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_06.png +0 -0
  313. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_06_why.md +13 -0
  314. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_07.meta.yaml +4 -0
  315. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_07.png +0 -0
  316. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_07_why.md +13 -0
  317. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_08.meta.yaml +4 -0
  318. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_08.png +0 -0
  319. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_08_why.md +13 -0
  320. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_09.meta.yaml +4 -0
  321. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_09.png +0 -0
  322. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_09_why.md +13 -0
  323. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_10.meta.yaml +4 -0
  324. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_10.png +0 -0
  325. package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_10_why.md +13 -0
  326. package/skills/make-figures/references/exemplar_diagrams/prisma/README.md +15 -0
  327. package/skills/make-figures/references/exemplar_diagrams/prisma/template_input.yaml +47 -0
  328. package/skills/make-figures/references/exemplar_diagrams/prisma/template_output.pdf +0 -0
  329. package/skills/make-figures/references/exemplar_diagrams/prisma/template_output.png +0 -0
  330. package/skills/make-figures/references/exemplar_diagrams/prisma/template_output_600.png +0 -0
  331. package/skills/make-figures/references/exemplar_diagrams/stard/README.md +15 -0
  332. package/skills/make-figures/references/exemplar_diagrams/stard/template_input.yaml +40 -0
  333. package/skills/make-figures/references/exemplar_diagrams/stard/template_output.pdf +0 -0
  334. package/skills/make-figures/references/exemplar_diagrams/stard/template_output.png +0 -0
  335. package/skills/make-figures/references/exemplar_diagrams/stard/template_output_600.png +0 -0
  336. package/skills/make-figures/references/exemplar_diagrams/strobe/template_input.yaml +43 -0
  337. package/skills/make-figures/references/exemplar_diagrams/strobe/template_input_pptx.yaml +43 -0
  338. package/skills/make-figures/references/exemplar_diagrams/strobe/template_output.pdf +0 -0
  339. package/skills/make-figures/references/exemplar_diagrams/strobe/template_output.png +0 -0
  340. package/skills/make-figures/references/exemplar_diagrams/strobe/template_output.pptx +0 -0
  341. package/skills/make-figures/references/exemplar_diagrams/strobe/template_output_600.png +0 -0
  342. package/skills/make-figures/references/figure_specs.md +291 -0
  343. package/skills/make-figures/references/flow_diagram_lessons.md +164 -0
  344. package/skills/make-figures/references/jacc_central_illustration_principles.md +91 -0
  345. package/skills/make-figures/references/medical_illustration_sources.md +98 -0
  346. package/skills/make-figures/references/pipeline_concepts_medical_ai.md +240 -0
  347. package/skills/make-figures/references/reporting_guideline_figure_map.md +104 -0
  348. package/skills/make-figures/references/visual_abstract_templates/european_radiology.pptx +0 -0
  349. package/skills/make-figures/references/visual_abstract_templates/jacc_central_illustration.pptx +0 -0
  350. package/skills/make-figures/references/visual_abstract_templates/medsci_default.pptx +0 -0
  351. package/skills/make-figures/references/visual_abstract_templates/template_guide.md +114 -0
  352. package/skills/make-figures/scripts/build_jacc_template.py +77 -0
  353. package/skills/make-figures/scripts/build_prisma2020_template.py +371 -0
  354. package/skills/make-figures/scripts/build_strobe_template.py +351 -0
  355. package/skills/make-figures/scripts/critic_figure.py +264 -0
  356. package/skills/make-figures/scripts/derive_figure_legend_counts.py +138 -0
  357. package/skills/make-figures/scripts/extract_exemplar_from_pdf.py +186 -0
  358. package/skills/make-figures/scripts/fetch_official_templates.sh +88 -0
  359. package/skills/make-figures/scripts/fill_prisma_template.py +142 -0
  360. package/skills/make-figures/scripts/generate_flow_diagram.R +133 -0
  361. package/skills/make-figures/scripts/generate_image.py +99 -0
  362. package/skills/make-figures/scripts/generate_visual_abstract.py +438 -0
  363. package/skills/make-figures/scripts/validate_pptx_mac_compat.py +233 -0
  364. package/skills/make-figures/skill.yml +52 -0
  365. package/skills/make-figures/templates/official/NOTES.md +62 -0
  366. package/skills/make-figures/templates/official/consort2010/CONSORT_2025_editable_checklist.docx +0 -0
  367. package/skills/make-figures/templates/official/consort2010/CONSORT_2025_flow_diagram.docx +0 -0
  368. package/skills/make-figures/templates/official/prisma2020/PRISMA_2020_flow_new_v1.pptx +0 -0
  369. package/skills/make-figures/templates/official/prisma2020/PRISMA_2020_flow_new_v2.pptx +0 -0
  370. package/skills/make-figures/templates/official/prisma2020/PRISMA_2020_flow_updated_v2.pptx +0 -0
  371. package/skills/make-figures/templates/official/spirit2013/SPIRIT_2025_editable_checklist.docx +0 -0
  372. package/skills/make-figures/templates/official/spirit2013/SPIRIT_2025_participant_timeline.docx +0 -0
  373. package/skills/make-figures/templates/official/stard2015/STARD_2015_checklist.docx +0 -0
  374. package/skills/make-figures/templates/official/stard2015/STARD_2015_flow_diagram.pdf +0 -0
  375. package/skills/make-figures/tests/fixtures/figure1_flow.yaml +8 -0
  376. package/skills/make-figures/tests/fixtures/manuscript_ok.md +9 -0
  377. package/skills/make-figures/tests/fixtures/manuscript_stale.md +4 -0
  378. package/skills/make-figures/tests/test_legend_reconcile.sh +36 -0
  379. package/skills/manage-project/SKILL.md +358 -0
  380. package/skills/manage-project/references/pre_submission_checklist.md +53 -0
  381. package/skills/manage-project/references/project_state_template.json +37 -0
  382. package/skills/manage-project/references/scaffold_templates.md +118 -0
  383. package/skills/manage-project/references/status_output_format.md +44 -0
  384. package/skills/manage-project/references/timeline_example.md +20 -0
  385. package/skills/manage-project/skill.yml +36 -0
  386. package/skills/manage-project/templates/SSOT.yaml.template +41 -0
  387. package/skills/manage-refs/LICENSE.zotero-mcp +21 -0
  388. package/skills/manage-refs/NOTICE.md +29 -0
  389. package/skills/manage-refs/SKILL.md +289 -0
  390. package/skills/manage-refs/citation_styles/README.md +40 -0
  391. package/skills/manage-refs/citation_styles/american-journal-of-roentgenology.csl +211 -0
  392. package/skills/manage-refs/citation_styles/cardiovascular-and-interventional-radiology.csl +19 -0
  393. package/skills/manage-refs/citation_styles/european-radiology.csl +19 -0
  394. package/skills/manage-refs/citation_styles/journal-of-cachexia-sarcopenia-and-muscle.csl +150 -0
  395. package/skills/manage-refs/citation_styles/journal-of-korean-medical-science-strict.csl +533 -0
  396. package/skills/manage-refs/citation_styles/journal-of-korean-medical-science.csl +16 -0
  397. package/skills/manage-refs/citation_styles/korean-journal-of-radiology.csl +155 -0
  398. package/skills/manage-refs/citation_styles/nature.csl +189 -0
  399. package/skills/manage-refs/citation_styles/nlm-citation-sequence.csl +535 -0
  400. package/skills/manage-refs/citation_styles/radiology.csl +228 -0
  401. package/skills/manage-refs/citation_styles/springer-basic-brackets.csl +187 -0
  402. package/skills/manage-refs/citation_styles/springer-vancouver-brackets.csl +276 -0
  403. package/skills/manage-refs/citation_styles/vancouver-superscript.csl +536 -0
  404. package/skills/manage-refs/citation_styles/vancouver.csl +535 -0
  405. package/skills/manage-refs/references/REFERENCE_STYLE_SPECS.md +59 -0
  406. package/skills/manage-refs/references/check_xref_symptoms.md +35 -0
  407. package/skills/manage-refs/scripts/_vendor_citation_writer.py +600 -0
  408. package/skills/manage-refs/scripts/check_citation_keys.py +112 -0
  409. package/skills/manage-refs/scripts/check_csl_render.py +102 -0
  410. package/skills/manage-refs/scripts/check_xref.py +633 -0
  411. package/skills/manage-refs/scripts/fill_journal_abbrev.py +104 -0
  412. package/skills/manage-refs/scripts/inject_zotero_cwyw.py +133 -0
  413. package/skills/manage-refs/scripts/md_marker_convert.py +193 -0
  414. package/skills/manage-refs/scripts/pre_submission_gate.sh +238 -0
  415. package/skills/manage-refs/scripts/render_pandoc.sh +88 -0
  416. package/skills/manage-refs/skill.yml +70 -0
  417. package/skills/manage-refs/tests/fixtures/pre_submission_gate/README.md +32 -0
  418. package/skills/manage-refs/tests/fixtures/pre_submission_gate/manuscript.md +10 -0
  419. package/skills/manage-refs/tests/fixtures/pre_submission_gate/refs.bib +34 -0
  420. package/skills/manage-refs/tests/fixtures/pre_submission_gate/run.sh +117 -0
  421. package/skills/manage-refs/tests/test_vN_docx_check.sh +145 -0
  422. package/skills/meta-analysis/SKILL.md +739 -0
  423. package/skills/meta-analysis/references/LICENSES.md +21 -0
  424. package/skills/meta-analysis/references/PROSPERO_template.md +221 -0
  425. package/skills/meta-analysis/references/ai_pre_screening_template.py +245 -0
  426. package/skills/meta-analysis/references/checklists/JBI_Case_Series.md +45 -0
  427. package/skills/meta-analysis/references/checklists/NOS.md +88 -0
  428. package/skills/meta-analysis/references/checklists/PRISMA_DTA.md +36 -0
  429. package/skills/meta-analysis/references/checklists/PROBAST.md +75 -0
  430. package/skills/meta-analysis/references/checklists/QUADAS2.md +77 -0
  431. package/skills/meta-analysis/references/checklists/ROBINS_I.md +87 -0
  432. package/skills/meta-analysis/references/checklists/RoB2.md +79 -0
  433. package/skills/meta-analysis/references/data_integrity_checklist.md +57 -0
  434. package/skills/meta-analysis/references/icmje_coi_guide.md +181 -0
  435. package/skills/meta-analysis/references/phase10_recovery.md +136 -0
  436. package/skills/meta-analysis/references/phase4_km_composite.md +58 -0
  437. package/skills/meta-analysis/references/phase6_statistical_synthesis.md +148 -0
  438. package/skills/meta-analysis/references/phase9_circulation.md +84 -0
  439. package/skills/meta-analysis/references/post_submission_release_ops.md +41 -0
  440. package/skills/meta-analysis/references/r_templates.md +132 -0
  441. package/skills/meta-analysis/references/review_orchestration.md +40 -0
  442. package/skills/meta-analysis/references/submission_package_drift.md +71 -0
  443. package/skills/meta-analysis/scripts/check_pool_consistency.py +201 -0
  444. package/skills/meta-analysis/scripts/cohort_overlap_check.py +242 -0
  445. package/skills/meta-analysis/scripts/dta_extraction_qc.py +137 -0
  446. package/skills/meta-analysis/scripts/screening_reconcile.py +160 -0
  447. package/skills/meta-analysis/skill.yml +47 -0
  448. package/skills/meta-analysis/templates/FINAL_POOL_LOCK.yaml.template +70 -0
  449. package/skills/meta-analysis/templates/extraction_form_v2.md +129 -0
  450. package/skills/meta-analysis/templates/supplementary_8file_checklist.md +94 -0
  451. package/skills/meta-analysis/tests/test_pool_consistency.sh +123 -0
  452. package/skills/orchestrate/SKILL.md +501 -0
  453. package/skills/orchestrate/references/dialogue_nodes.md +196 -0
  454. package/skills/orchestrate/references/report_template.md +109 -0
  455. package/skills/orchestrate/references/report_template_ko.md +88 -0
  456. package/skills/orchestrate/skill.yml +44 -0
  457. package/skills/peer-review/SKILL.md +381 -0
  458. package/skills/peer-review/references/aczel_2021_reviewer2_patterns.md +88 -0
  459. package/skills/peer-review/references/domain-probes/ai_overclaiming.md +47 -0
  460. package/skills/peer-review/references/domain-probes/narrative_review.md +44 -0
  461. package/skills/peer-review/references/domain-probes/observational_confounding.md +48 -0
  462. package/skills/peer-review/references/domain-probes/radiomics.md +38 -0
  463. package/skills/peer-review/references/domain-probes/sr_ma.md +87 -0
  464. package/skills/peer-review/references/domain-probes/survival_prognostic.md +68 -0
  465. package/skills/peer-review/references/exemplar_reviews/README.md +43 -0
  466. package/skills/peer-review/references/exemplar_reviews/ai_overclaiming.md +47 -0
  467. package/skills/peer-review/references/exemplar_reviews/calibration_missing.md +44 -0
  468. package/skills/peer-review/references/exemplar_reviews/data_leakage.md +48 -0
  469. package/skills/peer-review/references/exemplar_reviews/reference_standard_validity.md +45 -0
  470. package/skills/peer-review/references/narrative_review_audit.md +67 -0
  471. package/skills/peer-review/references/reviewer_calibration/README.md +34 -0
  472. package/skills/peer-review/references/reviewer_calibration/compliance_floor.md +52 -0
  473. package/skills/peer-review/references/reviewer_profiles/AJR.md +82 -0
  474. package/skills/peer-review/references/reviewer_profiles/EURE.md +64 -0
  475. package/skills/peer-review/references/reviewer_profiles/INSI.md +57 -0
  476. package/skills/peer-review/references/reviewer_profiles/KJR.md +100 -0
  477. package/skills/peer-review/references/reviewer_profiles/README.md +32 -0
  478. package/skills/peer-review/references/reviewer_profiles/RYAI.md +86 -0
  479. package/skills/peer-review/skill.yml +39 -0
  480. package/skills/present-paper/SKILL.md +675 -0
  481. package/skills/present-paper/references/critic_rubrics/slide.md +155 -0
  482. package/skills/present-paper/references/generate_pptx_templates.py +604 -0
  483. package/skills/present-paper/references/medical_presentation_templates.md +277 -0
  484. package/skills/present-paper/references/slide_design_principles.md +202 -0
  485. package/skills/present-paper/references/slide_visual_styles/nature_lancet.md +168 -0
  486. package/skills/present-paper/references/workflow-checklist.md +109 -0
  487. package/skills/present-paper/scripts/extract_pdf_figures.py +243 -0
  488. package/skills/present-paper/scripts/inject_pronunciation_notes.py +178 -0
  489. package/skills/present-paper/scripts/inject_speaker_notes.py +133 -0
  490. package/skills/present-paper/scripts/strip_notes_for_sharing.py +140 -0
  491. package/skills/present-paper/scripts/trim_caption.py +271 -0
  492. package/skills/present-paper/skill.yml +41 -0
  493. package/skills/present-paper/templates/build_pptx_nature_lancet.py +688 -0
  494. package/skills/publish-skill/SKILL.md +370 -0
  495. package/skills/publish-skill/references/license-compatibility-matrix.md +132 -0
  496. package/skills/publish-skill/references/pii-patterns.md +130 -0
  497. package/skills/publish-skill/scripts/audit_skill.sh +278 -0
  498. package/skills/publish-skill/skill.yml +35 -0
  499. package/skills/render-pdf-doc/SKILL.md +146 -0
  500. package/skills/render-pdf-doc/references/known_pitfalls.md +53 -0
  501. package/skills/render-pdf-doc/references/pandoc_korean_cheatsheet.md +77 -0
  502. package/skills/render-pdf-doc/scripts/check_deps.sh +42 -0
  503. package/skills/render-pdf-doc/scripts/infer_colwidths.py +164 -0
  504. package/skills/render-pdf-doc/scripts/render_pdf.sh +98 -0
  505. package/skills/render-pdf-doc/skill.yml +57 -0
  506. package/skills/render-pdf-doc/templates/anchor-doc.md +27 -0
  507. package/skills/render-pdf-doc/templates/anchor-doc_ko.md +25 -0
  508. package/skills/render-pdf-doc/templates/briefing-handout.md +33 -0
  509. package/skills/render-pdf-doc/templates/briefing-handout_ko.md +31 -0
  510. package/skills/render-pdf-doc/templates/proposal-cover.md +33 -0
  511. package/skills/render-pdf-doc/templates/proposal-cover_ko.md +31 -0
  512. package/skills/render-pdf-doc/templates/reference-table.md +22 -0
  513. package/skills/render-pdf-doc/templates/reference-table_ko.md +20 -0
  514. package/skills/replicate-study/SKILL.md +150 -0
  515. package/skills/replicate-study/references/harmonization_3country.csv +47 -0
  516. package/skills/replicate-study/references/harmonization_knhanes_nhanes.csv +68 -0
  517. package/skills/replicate-study/references/methodology_extraction_template.md +134 -0
  518. package/skills/replicate-study/skill.yml +37 -0
  519. package/skills/review-paper/SKILL.md +104 -0
  520. package/skills/review-paper/references/macro_skeleton.md +6 -0
  521. package/skills/review-paper/skill.yml +25 -0
  522. package/skills/revise/SKILL.md +515 -0
  523. package/skills/revise/references/r2r_voice.md +346 -0
  524. package/skills/revise/skill.yml +43 -0
  525. package/skills/search-lit/SKILL.md +443 -0
  526. package/skills/search-lit/references/parse_pubmed.py +326 -0
  527. package/skills/search-lit/references/pubmed_eutils.sh +111 -0
  528. package/skills/search-lit/skill.yml +46 -0
  529. package/skills/self-review/SKILL.md +1045 -0
  530. package/skills/self-review/references/domain-probes/ai_overclaiming.md +47 -0
  531. package/skills/self-review/references/domain-probes/narrative_review.md +44 -0
  532. package/skills/self-review/references/domain-probes/observational_confounding.md +48 -0
  533. package/skills/self-review/references/domain-probes/radiomics.md +38 -0
  534. package/skills/self-review/references/domain-probes/sr_ma.md +87 -0
  535. package/skills/self-review/references/domain-probes/survival_prognostic.md +68 -0
  536. package/skills/self-review/references/exemplar_findings/README.md +43 -0
  537. package/skills/self-review/references/exemplar_findings/cohort_arithmetic_mismatch.md +35 -0
  538. package/skills/self-review/references/exemplar_findings/estimand_drift_posthoc_primary.md +39 -0
  539. package/skills/self-review/references/exemplar_findings/scope_overreach_cross_sectional.md +35 -0
  540. package/skills/self-review/references/exemplar_findings/unadjusted_confounder.md +36 -0
  541. package/skills/self-review/references/panel_review_template.md +177 -0
  542. package/skills/self-review/scripts/check_artifact_coverage.py +301 -0
  543. package/skills/self-review/scripts/check_claim_artifact.py +248 -0
  544. package/skills/self-review/scripts/check_classical_style.py +185 -0
  545. package/skills/self-review/scripts/check_cohort_arithmetic.py +481 -0
  546. package/skills/self-review/scripts/check_confounding_completeness.py +287 -0
  547. package/skills/self-review/scripts/check_panel_diversity.py +336 -0
  548. package/skills/self-review/scripts/check_reference_adequacy.py +392 -0
  549. package/skills/self-review/scripts/check_reviewer_team_consistency.py +412 -0
  550. package/skills/self-review/scripts/check_scope_coherence.py +177 -0
  551. package/skills/self-review/skill.yml +47 -0
  552. package/skills/self-review/tests/fixtures/claim_manuscript.md +17 -0
  553. package/skills/self-review/tests/fixtures/claim_prereg.md +6 -0
  554. package/skills/self-review/tests/fixtures/cohort_bad.md +21 -0
  555. package/skills/self-review/tests/fixtures/cohort_clean.md +21 -0
  556. package/skills/self-review/tests/fixtures/cohort_partition.csv +5 -0
  557. package/skills/self-review/tests/fixtures/coverage_analysis/31_delong_nested_added_value.csv +3 -0
  558. package/skills/self-review/tests/fixtures/coverage_analysis/table1_demographics.csv +3 -0
  559. package/skills/self-review/tests/fixtures/coverage_clean.md +13 -0
  560. package/skills/self-review/tests/fixtures/coverage_manuscript.md +11 -0
  561. package/skills/self-review/tests/fixtures/panel_collapse.json +27 -0
  562. package/skills/self-review/tests/fixtures/panel_good.json +32 -0
  563. package/skills/self-review/tests/fixtures/panel_monoculture.json +32 -0
  564. package/skills/self-review/tests/fixtures/refadeq_letter.md +13 -0
  565. package/skills/self-review/tests/fixtures/refadeq_original_fixed.md +42 -0
  566. package/skills/self-review/tests/fixtures/refadeq_original_uncited.md +40 -0
  567. package/skills/self-review/tests/fixtures/scope_bad.md +9 -0
  568. package/skills/self-review/tests/fixtures/scope_clean.md +8 -0
  569. package/skills/self-review/tests/fixtures/scope_surrogate.md +8 -0
  570. package/skills/self-review/tests/fixtures/style_bad.md +13 -0
  571. package/skills/self-review/tests/fixtures/style_clean.md +11 -0
  572. package/skills/self-review/tests/fixtures/table1_by_exposure.csv +11 -0
  573. package/skills/self-review/tests/test_artifact_coverage.sh +44 -0
  574. package/skills/self-review/tests/test_claim_artifact.sh +50 -0
  575. package/skills/self-review/tests/test_classical_style.sh +44 -0
  576. package/skills/self-review/tests/test_cohort_arithmetic.sh +49 -0
  577. package/skills/self-review/tests/test_confounding_completeness.sh +66 -0
  578. package/skills/self-review/tests/test_panel_diversity.sh +55 -0
  579. package/skills/self-review/tests/test_panel_mode.sh +69 -0
  580. package/skills/self-review/tests/test_reference_adequacy.sh +68 -0
  581. package/skills/self-review/tests/test_reviewer_team_consistency.sh +138 -0
  582. package/skills/self-review/tests/test_scope_coherence.sh +46 -0
  583. package/skills/setup-medsci/SKILL.md +110 -0
  584. package/skills/setup-medsci/references/setup-checklist.md +51 -0
  585. package/skills/setup-medsci/skill.yml +30 -0
  586. package/skills/sync-submission/SKILL.md +382 -0
  587. package/skills/sync-submission/scripts/author_registry_example.yaml +36 -0
  588. package/skills/sync-submission/scripts/blind_sweep.py +203 -0
  589. package/skills/sync-submission/scripts/check_asset_anonymization.py +300 -0
  590. package/skills/sync-submission/scripts/check_cross_artifact_stale.py +211 -0
  591. package/skills/sync-submission/scripts/cover_letter_drift_check.py +451 -0
  592. package/skills/sync-submission/scripts/cross_document_n_check.py +486 -0
  593. package/skills/sync-submission/scripts/detect_copy_divergence.py +136 -0
  594. package/skills/sync-submission/scripts/preflight_gate.py +458 -0
  595. package/skills/sync-submission/scripts/scope_drift_check.py +362 -0
  596. package/skills/sync-submission/scripts/sync_submission.py +169 -0
  597. package/skills/sync-submission/skill.yml +43 -0
  598. package/skills/sync-submission/tests/fixtures/copy_ok.md +5 -0
  599. package/skills/sync-submission/tests/fixtures/copy_stale.md +5 -0
  600. package/skills/sync-submission/tests/fixtures/ssot.md +5 -0
  601. package/skills/sync-submission/tests/test_asset_anonymization.sh +99 -0
  602. package/skills/sync-submission/tests/test_copy_divergence.sh +44 -0
  603. package/skills/sync-submission/tests/test_cross_artifact_stale.sh +80 -0
  604. package/skills/sync-submission/tests/test_cross_document_n.sh +132 -0
  605. package/skills/sync-submission/tests/test_preflight_gate.sh +112 -0
  606. package/skills/sync-submission/tests/test_scope_drift.sh +122 -0
  607. package/skills/sync-submission/tests/test_vN_docx_assertion.sh +51 -0
  608. package/skills/verify-refs/SKILL.md +177 -0
  609. package/skills/verify-refs/references/manual_checkpoint_guide.md +100 -0
  610. package/skills/verify-refs/scripts/verify_cli.sh +62 -0
  611. package/skills/verify-refs/scripts/verify_refs.py +782 -0
  612. package/skills/verify-refs/skill.yml +44 -0
  613. package/skills/verify-refs/tests/fixtures/pagination_placeholder.bib +17 -0
  614. package/skills/verify-refs/tests/test_pagination_placeholder.sh +42 -0
  615. package/skills/version-dataset/SKILL.md +143 -0
  616. package/skills/version-dataset/references/manifest_schema.md +72 -0
  617. package/skills/version-dataset/scripts/version_dataset.py +242 -0
  618. package/skills/version-dataset/skill.yml +35 -0
  619. package/skills/version-dataset/tests/test_version_dataset.sh +52 -0
  620. package/skills/write-paper/SKILL.md +1148 -0
  621. package/skills/write-paper/references/exemplar_methods/README.md +38 -0
  622. package/skills/write-paper/references/exemplar_methods/ai_validation_tripod_claim.md +47 -0
  623. package/skills/write-paper/references/exemplar_methods/diagnostic_accuracy_stard.md +50 -0
  624. package/skills/write-paper/references/exemplar_methods/observational_cohort_strobe.md +43 -0
  625. package/skills/write-paper/references/journal_profiles/AJNR.md +185 -0
  626. package/skills/write-paper/references/journal_profiles/AJR.md +149 -0
  627. package/skills/write-paper/references/journal_profiles/Abdominal_Radiology.md +139 -0
  628. package/skills/write-paper/references/journal_profiles/Academic_Radiology.md +90 -0
  629. package/skills/write-paper/references/journal_profiles/Annals_of_Internal_Medicine.md +150 -0
  630. package/skills/write-paper/references/journal_profiles/Artificial_Intelligence_in_Medicine.md +82 -0
  631. package/skills/write-paper/references/journal_profiles/British_Journal_of_Radiology.md +161 -0
  632. package/skills/write-paper/references/journal_profiles/CVIR.md +157 -0
  633. package/skills/write-paper/references/journal_profiles/Chest.md +270 -0
  634. package/skills/write-paper/references/journal_profiles/Clinical_Radiology.md +160 -0
  635. package/skills/write-paper/references/journal_profiles/Clinical_and_Molecular_Hepatology.md +147 -0
  636. package/skills/write-paper/references/journal_profiles/Diabetes_Metabolism_Journal.md +163 -0
  637. package/skills/write-paper/references/journal_profiles/Diagnostic_and_Interventional_Radiology.md +216 -0
  638. package/skills/write-paper/references/journal_profiles/Endocrinology_and_Metabolism.md +167 -0
  639. package/skills/write-paper/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +192 -0
  640. package/skills/write-paper/references/journal_profiles/European_Radiology.md +159 -0
  641. package/skills/write-paper/references/journal_profiles/Hepatology_Communications.md +110 -0
  642. package/skills/write-paper/references/journal_profiles/Hepatology_International.md +106 -0
  643. package/skills/write-paper/references/journal_profiles/IEEE_TMI.md +180 -0
  644. package/skills/write-paper/references/journal_profiles/INSI.md +163 -0
  645. package/skills/write-paper/references/journal_profiles/Investigative_Radiology.md +86 -0
  646. package/skills/write-paper/references/journal_profiles/JACC_Advances.md +197 -0
  647. package/skills/write-paper/references/journal_profiles/JACC_Asia.md +168 -0
  648. package/skills/write-paper/references/journal_profiles/JACR.md +87 -0
  649. package/skills/write-paper/references/journal_profiles/JAMA.md +188 -0
  650. package/skills/write-paper/references/journal_profiles/JAMA_Network_Open.md +170 -0
  651. package/skills/write-paper/references/journal_profiles/JCSM.md +266 -0
  652. package/skills/write-paper/references/journal_profiles/JKMS.md +201 -0
  653. package/skills/write-paper/references/journal_profiles/JMIR.md +88 -0
  654. package/skills/write-paper/references/journal_profiles/JMIR_Medical_Education.md +86 -0
  655. package/skills/write-paper/references/journal_profiles/JNIS.md +227 -0
  656. package/skills/write-paper/references/journal_profiles/JVIR.md +158 -0
  657. package/skills/write-paper/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +191 -0
  658. package/skills/write-paper/references/journal_profiles/Journal_of_Stroke.md +176 -0
  659. package/skills/write-paper/references/journal_profiles/KJR.md +185 -0
  660. package/skills/write-paper/references/journal_profiles/Korean_Circulation_Journal.md +184 -0
  661. package/skills/write-paper/references/journal_profiles/Korean_Journal_of_Internal_Medicine.md +178 -0
  662. package/skills/write-paper/references/journal_profiles/Lancet_Gastroenterology_and_Hepatology.md +127 -0
  663. package/skills/write-paper/references/journal_profiles/Liver_International.md +165 -0
  664. package/skills/write-paper/references/journal_profiles/Medical_Image_Analysis.md +147 -0
  665. package/skills/write-paper/references/journal_profiles/NEJM.md +147 -0
  666. package/skills/write-paper/references/journal_profiles/Nature_Medicine.md +181 -0
  667. package/skills/write-paper/references/journal_profiles/Neuroradiology.md +151 -0
  668. package/skills/write-paper/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +184 -0
  669. package/skills/write-paper/references/journal_profiles/PLOS_Medicine.md +166 -0
  670. package/skills/write-paper/references/journal_profiles/RYAI.md +124 -0
  671. package/skills/write-paper/references/journal_profiles/Radiology.md +173 -0
  672. package/skills/write-paper/references/journal_profiles/Skeletal_Radiology.md +135 -0
  673. package/skills/write-paper/references/journal_profiles/Stroke.md +210 -0
  674. package/skills/write-paper/references/journal_profiles/The_BMJ.md +121 -0
  675. package/skills/write-paper/references/journal_profiles/The_Lancet.md +112 -0
  676. package/skills/write-paper/references/journal_profiles/The_Lancet_Digital_Health.md +104 -0
  677. package/skills/write-paper/references/journal_profiles/World_Journal_of_Hepatology.md +106 -0
  678. package/skills/write-paper/references/journal_profiles/npj_Digital_Medicine.md +93 -0
  679. package/skills/write-paper/references/paper_types/ai_validation.md +270 -0
  680. package/skills/write-paper/references/paper_types/animal_study.md +194 -0
  681. package/skills/write-paper/references/paper_types/case_report.md +237 -0
  682. package/skills/write-paper/references/paper_types/cross_national.md +328 -0
  683. package/skills/write-paper/references/paper_types/letter.md +127 -0
  684. package/skills/write-paper/references/paper_types/meta_analysis.md +181 -0
  685. package/skills/write-paper/references/paper_types/nhis_cohort.md +297 -0
  686. package/skills/write-paper/references/paper_types/original_article.md +221 -0
  687. package/skills/write-paper/references/paper_types/technical_note.md +131 -0
  688. package/skills/write-paper/references/section_guides/discussion.md +155 -0
  689. package/skills/write-paper/references/section_guides/introduction.md +108 -0
  690. package/skills/write-paper/references/section_guides/methods.md +144 -0
  691. package/skills/write-paper/references/section_guides/results.md +113 -0
  692. package/skills/write-paper/references/section_guides/step7_1_classical_qc.md +67 -0
  693. package/skills/write-paper/references/section_guides/step7_4a_audit_recovery.md +74 -0
  694. package/skills/write-paper/references/section_guides/title_abstract.md +123 -0
  695. package/skills/write-paper/references/section_templates/methods_statistical.md +147 -0
  696. package/skills/write-paper/scripts/check_placeholders.py +182 -0
  697. package/skills/write-paper/skill.yml +48 -0
  698. package/skills/write-paper/tests/test_placeholders.sh +107 -0
  699. package/skills/write-protocol/SKILL.md +243 -0
  700. package/skills/write-protocol/references/ethics_checklist.md +150 -0
  701. package/skills/write-protocol/references/protocol_template.md +304 -0
  702. package/skills/write-protocol/skill.yml +34 -0
@@ -0,0 +1,144 @@
1
+ # Materials and Methods Writing Guide
2
+
3
+ Reference for write-paper Phase 3 (Methods).
4
+ Loaded on-demand when drafting the Materials and Methods section.
5
+
6
+ ---
7
+
8
+ ## Core Principles
9
+
10
+ 1. **Reproducible**: Another researcher should be able to replicate your study from the Methods alone
11
+ 2. **Sequential**: Describe procedures in the order they occurred
12
+ 3. **Concise but thorough**: No unnecessary detail, but no critical omissions
13
+ 4. **Checklist-aligned**: Every applicable item in the reporting guideline (STARD, STROBE, CONSORT, PRISMA) must have a corresponding sentence in Methods
14
+
15
+ ---
16
+
17
+ ## PICO-Based Structure
18
+
19
+ Write Methods in PICO order. This provides a natural, logical flow that reviewers expect.
20
+
21
+ ### 1. Study Design + Ethics
22
+
23
+ - Single-center or multicenter
24
+ - Retrospective or prospective
25
+ - IRB approval statement with approval number
26
+ - Informed consent status ("informed consent was waived for this retrospective study")
27
+ - Reporting guideline declaration: "This study was reported in accordance with [STARD/STROBE/etc.]"
28
+
29
+ ### 2. Population (P)
30
+
31
+ - Study period (start and end dates)
32
+ - Inclusion criteria (specific, operationalized)
33
+ - Exclusion criteria (with clinical justification for each)
34
+ - How patients were identified (database query, consecutive enrollment, etc.)
35
+ - **Time zero definition** (critical for retrospective cohorts): State explicitly when follow-up begins. For screening cohorts, time zero is typically the date of the first qualifying examination. For treatment studies, time zero is the date of treatment initiation. Misaligned time zero introduces immortal time bias. If there is a gap between eligibility assessment and time zero (e.g., cohort entry defined by a lab value but follow-up starting at a later visit), describe how this was handled.
36
+
37
+ **Common pitfalls to avoid**:
38
+ - Including inappropriate subjects (e.g., young adults in a pediatric study)
39
+ - Excessive interval between index test and reference standard
40
+ - Including only elective/surgical cases → selection bias
41
+ - Study period too long → equipment/protocol changes
42
+ - Including non-contrast studies when contrast is required
43
+
44
+ ### 3. Intervention / Index Test (I)
45
+
46
+ - Imaging protocol: scanner model (manufacturer, city, country), acquisition parameters
47
+ - For CT/MR protocols: ask the technologist for exact parameters
48
+ - **Reader setup**: Number of readers, years of experience, subspecialty
49
+ - Using only senior readers → overestimation risk (acknowledge in limitations)
50
+ - **Blinding**: State explicitly what information readers were blinded to
51
+ - **Quantitative measurements**: How cut-off values were determined
52
+ - **Reader disagreement resolution**: Consensus reading, third reader, or statistical approach
53
+ - Software used (name, version, manufacturer)
54
+
55
+ ### 4. Comparator / Reference Standard (C)
56
+
57
+ - Does not need to be the "gold standard" — use the best available method
58
+ - State what reference standard was used and why
59
+ - Verify:
60
+ - Was the same reference standard applied to all patients?
61
+ - Was the reference standard interpreter blinded to index test results?
62
+ - Was the interval between index test and reference standard reasonable?
63
+
64
+ ### 5. Outcome / Statistical Analysis (O)
65
+
66
+ - Primary and secondary endpoints defined before describing statistical tests
67
+ - Statistical tests matched to data types and study design
68
+ - Software and version for statistical analysis
69
+ - Significance threshold (typically P < .05, two-sided)
70
+
71
+ ---
72
+
73
+ ## Backbone Article Strategy
74
+
75
+ **Before writing Methods, identify a backbone article** — a published study with a similar
76
+ design in a similar journal that serves as a structural template.
77
+
78
+ ### Selection Criteria
79
+
80
+ 1. Same study design (diagnostic accuracy → diagnostic accuracy, cohort → cohort)
81
+ 2. Same modality (CT → CT, MRI → MRI)
82
+ 3. Published in the target journal or a comparable journal
83
+ 4. Recent publication (within 3-5 years)
84
+ 5. Well-cited (validated structure)
85
+
86
+ ### How to Use
87
+
88
+ - Mirror the M&M section structure and subsection order
89
+ - Reference the same statistical methods where applicable
90
+ - Use similar Table/Figure formatting
91
+ - Adopt the reference standard description approach
92
+ - **Never copy sentences** — structure and logic only
93
+
94
+ ### Where to Find
95
+
96
+ 1. **Auto-scan `manuscript/_src/refs.bib` first** — Phase 0 Step 5 ranks entries by study design + modality + target journal + PDF attachment. If one strong candidate emerges, the skill proposes it proactively rather than asking.
97
+ 2. Search the target journal for recent studies with matching design (fallback when refs.bib has no candidate)
98
+ 3. Check the reference lists of papers you are already citing
99
+ 4. Ask the corresponding author or mentor for recommendations
100
+
101
+ ---
102
+
103
+ ## Checklist Cross-Reference
104
+
105
+ When writing Methods, keep the reporting checklist open and verify 1:1 coverage:
106
+
107
+ | Study Design | Checklist | Key M&M Items |
108
+ |-------------|-----------|---------------|
109
+ | Diagnostic accuracy | STARD | Blinding, index test detail, reference standard, sample size justification |
110
+ | RCT | CONSORT | Randomization, allocation concealment, blinding, ITT analysis |
111
+ | Observational | STROBE | Selection criteria, bias direction, confounders, missing data handling |
112
+ | Meta-analysis | PRISMA | Search strategy, selection process, data extraction, risk of bias tool |
113
+ | AI study | CLAIM 2024 | Data partitioning, model architecture, training details, external validation |
114
+
115
+ After drafting, go through the checklist item by item. For each item, confirm there is
116
+ a corresponding sentence in your Methods. Missing items are the most common reason for
117
+ desk rejection.
118
+
119
+ ---
120
+
121
+ ## Terminology Conventions
122
+
123
+ | Avoid | Use Instead |
124
+ |-------|-------------|
125
+ | "Increase" / "Decrease" (comparing two groups) | "Higher" / "Lower" or "Larger" / "Smaller" |
126
+ | "Show" (for patient actions) | "Had" / "Demonstrated" / "Exhibited" |
127
+ | "Prove" | "Suggest" / "Indicate" |
128
+ | "Efficacy" (outside RCTs) | "Effectiveness" |
129
+ | "Significant" (without p-value) | Always pair with exact p-value |
130
+
131
+ ---
132
+
133
+ ## Self-Check
134
+
135
+ Before finalizing Methods:
136
+
137
+ - [ ] Every checklist item has a corresponding sentence?
138
+ - [ ] Procedures described in chronological order?
139
+ - [ ] Reader blinding explicitly stated?
140
+ - [ ] Scanner/software details include manufacturer and location?
141
+ - [ ] Reference standard clearly defined with justification?
142
+ - [ ] Statistical methods match the data types and endpoints?
143
+ - [ ] IRB and consent statements present?
144
+ - [ ] Backbone article identified and structure referenced?
@@ -0,0 +1,113 @@
1
+ # Results Writing Guide
2
+
3
+ Reference for write-paper Phase 4 (Results).
4
+ Loaded on-demand when drafting the Results section.
5
+
6
+ ---
7
+
8
+ ## Core Principle: Mirror Symmetry with Methods
9
+
10
+ Results must follow the same order as Materials and Methods. Each M&M subsection
11
+ should have a corresponding Results subsection. If Methods describes the population
12
+ first, then the index test, then statistical analysis — Results presents population
13
+ characteristics first, then index test findings, then statistical comparisons.
14
+
15
+ | M&M Order | Results Counterpart |
16
+ |-----------|-------------------|
17
+ | Study population / Participants | Figure 1 (Flowchart) + Table 1 (Baseline characteristics) |
18
+ | Image analysis / Index test | Main diagnostic/measurement results |
19
+ | Statistical analysis methods | P-values, effect sizes, comparisons |
20
+
21
+ ---
22
+
23
+ ## Required Elements
24
+
25
+ ### 1. Flowchart (Figure 1)
26
+
27
+ - Always present a patient flow diagram as Figure 1
28
+ - Numbers must be internally consistent across: Abstract, Methods, Results text, Tables, and the flowchart itself
29
+ - Show: initial cohort → exclusions (with reasons and counts) → final analysis set
30
+ - If applicable, show train/validation/test splits
31
+
32
+ ### 2. Baseline Characteristics (Table 1)
33
+
34
+ - Present demographics and clinical characteristics of the study population
35
+ - Decimal places must be consistent throughout (pick one convention and hold it)
36
+ - Use footnotes for abbreviations and explanations
37
+ - Keep it concise — only variables relevant to the study
38
+
39
+ ### 3. Main Results
40
+
41
+ - Present primary endpoint results first, then secondary endpoints
42
+ - Every result must include:
43
+ - The metric value
44
+ - 95% confidence interval (for primary endpoints)
45
+ - Exact p-value (not "p < 0.05" unless truly < 0.001)
46
+ - Reference every Table and Figure at least once in the text
47
+
48
+ ### 4. Figures
49
+
50
+ - Use the minimum number of figures that convey the key findings
51
+ - Each figure must be clear and high-resolution
52
+ - Representative cases: select typical examples, not cherry-picked best cases
53
+
54
+ ---
55
+
56
+ ## Strict Rules
57
+
58
+ ### No Interpretation
59
+
60
+ Results contains **only factual findings**. Apply this self-check to every sentence:
61
+
62
+ 1. Does this sentence explain "why"? → Move to Discussion
63
+ 2. Does it reference another study? → Move to Discussion
64
+ 3. Does it use "suggests" / "implies" / "indicates importance"? → Rewrite as factual statement
65
+ 4. Does it use an evaluative adjective without a number ("high", "notable", "remarkable")? → Add the number or delete the adjective
66
+ 5. Does it contain "interestingly" / "notably" / "remarkably" / "surprisingly"? → Delete the word
67
+
68
+ ### No Unannounced Data
69
+
70
+ - **Data not described in Methods cannot appear in Results**
71
+ - If you discover an important finding during analysis that was not pre-specified, either:
72
+ - Add the method to M&M (and note it as post-hoc)
73
+ - Place it in Supplementary Materials
74
+
75
+ ### Missing Data Handling
76
+
77
+ - Never leave table cells blank
78
+ - Use "NA" (not available) for missing data
79
+ - Add a footnote: "NA = not available" or "Data not available for N patients because [reason]"
80
+
81
+ ### Tense
82
+
83
+ - **Text**: Past tense ("The sensitivity was 0.92")
84
+ - **Tables and Figures**: Present tense ("Table 1 shows...")
85
+
86
+ ---
87
+
88
+ ## Number Consistency Verification
89
+
90
+ Before finalizing Results, verify these cross-references:
91
+
92
+ | Check | Sources that Must Match |
93
+ |-------|----------------------|
94
+ | Total N | Abstract, Methods text, Figure 1, Table 1, Results text |
95
+ | Exclusion counts | Figure 1 boxes, Methods exclusion criteria |
96
+ | Subgroup N | Sum of subgroups = total N (or explain discrepancy) |
97
+ | Percentages | Numerator/denominator math verified |
98
+ | Primary metric | Abstract Results, Results text, relevant Table |
99
+
100
+ ---
101
+
102
+ ## Self-Check
103
+
104
+ Before finalizing Results:
105
+
106
+ - [ ] Follows the same order as Methods?
107
+ - [ ] Flowchart present with internally consistent numbers?
108
+ - [ ] Table 1 present with consistent decimal places?
109
+ - [ ] All primary endpoints have 95% CI and exact p-values?
110
+ - [ ] Every Table and Figure referenced in the text?
111
+ - [ ] Zero interpretation (no "why", no literature comparisons)?
112
+ - [ ] No blank cells in tables (NA with footnote instead)?
113
+ - [ ] All data in Results was described in Methods?
@@ -0,0 +1,67 @@
1
+ # Step 7.1 Extension — Classical Manuscript Style QC
2
+
3
+ A grep-based checklist that automatically verifies the global rule `~/.claude/rules/manuscript-style-classical.md` (11 items) for senior-MA-reviewer readiness. Run alongside the Step 7.1 AI Pattern Scan.
4
+
5
+ **Why**: Senior MA mentors routinely flag the § symbol, AI Disclosure boilerplate, prose-form eligibility criteria, em-dash overuse, and AI-style headings as "AI patterns." A manuscript-level automated grep blocks these in advance.
6
+
7
+ ## Automated checks (run together at Phase 7.1 entry)
8
+
9
+ ```bash
10
+ MD=manuscript/manuscript.md
11
+
12
+ # 1. Enforce 0 occurrences of the § symbol
13
+ N=$(grep -c "§" "$MD" || true)
14
+ [ "$N" -eq 0 ] || echo "FAIL: § symbol ${N} occurrence(s) — remove all or replace with (Methods)/(Results)"
15
+
16
+ # 2. No AI Disclosure paragraph in the body (only on the journal form / cover letter)
17
+ grep -inE "artificial intelligence disclosure|generative ai was not used|ai acknowledg(e)?ment" "$MD" \
18
+ && echo "FAIL: AI Disclosure paragraph present in the body — move it to the cover letter / submission form"
19
+
20
+ # 3. Heading style — five main sections in uppercase + bold
21
+ for H in METHODS RESULTS DISCUSSION INTRODUCTION CONCLUSION; do
22
+ grep -qE "^## \*\*${H}\*\*" "$MD" || echo "WARN: '## **${H}**' heading missing (or a variant)"
23
+ done
24
+
25
+ # 4. Eligibility / Inclusion criteria — numbered list recommended
26
+ grep -A 3 -inE "^#{2,4}.*(eligibility|inclusion criteria|exclusion criteria)" "$MD" \
27
+ | grep -qE "\([0-9]+\)|^[0-9]+\." \
28
+ || echo "WARN: Eligibility/Inclusion criteria may be prose — consider converting to a '(1)... (2)...' numbered list"
29
+
30
+ # 5. No grant-ID placeholder in the Funding section
31
+ grep -inE "grant\s*(id|number)?\s*[:#]\s*(TBD|TODO|XXX|\[insert\]|\[grant)" "$MD" \
32
+ && echo "FAIL: Funding grant-ID placeholder remains — ask the senior author to enter it directly"
33
+
34
+ # 6. No PROSPERO chronology in the body (only the registration number, one line, is allowed)
35
+ grep -inE "prospero.*(amendment|chronology|lodged|registered on \d{4}-\d{2}-\d{2}.*amended)" "$MD" \
36
+ && echo "FAIL: PROSPERO chronology / amendment lodging present in the body — move it to the supplementary"
37
+
38
+ # 7. Em-dash overuse (< 25 per manuscript recommended)
39
+ N=$(grep -o "—" "$MD" | wc -l | tr -d ' ')
40
+ [ "$N" -lt 25 ] || echo "WARN: ${N} em-dashes (>=25) — an AI-generation signal; redistribute with commas/colons"
41
+
42
+ # 8. 0 hand-typed reference-list entries
43
+ # Per the manuscript-references.md rule, in-text citations may only be [@bibkey] or [N].
44
+ # If the References section has hand-typed entries, the build artifact (.docx) must be verified — delegate to Step 7.6a.
45
+ ```
46
+
47
+ ## Pass criteria
48
+
49
+ - FAIL = 0 (must fix).
50
+ - WARN ≤ 2 (may be acknowledged after user review).
51
+ - Record the result in `qc/_pipeline_log.md` with a timestamp + the raw output.
52
+
53
+ ## Responsibility boundary
54
+
55
+ This step performs **automated grep only**. The following are separate steps:
56
+ - Body rewrite for Patterns 19–21 (§, self-reference, AI Disclosure boilerplate) → `/humanize`
57
+ - Hand-typed reference verification → Step 7.6a `check_xref.py` (after the DOCX build)
58
+ - PRISMA arithmetic consistency → `/check-reporting prisma` Step 4d
59
+ - Entering the actual Funding grant-ID value → direct circulation to the senior author
60
+
61
+ ## Related
62
+
63
+ - Global rule: `~/.claude/rules/manuscript-style-classical.md` (motivation for the 11 items)
64
+ - Circulation workflow: `~/.claude/rules/senior-mentor-circulation.md`
65
+ - AI-draft handling: `~/.claude/rules/ai-drafted-document-policy.md`
66
+ - No hand-typed references: `~/.claude/rules/manuscript-references.md`
67
+ - Related skills: `/humanize` (Patterns 19–21), `/check-reporting prisma` (Step 4d)
@@ -0,0 +1,74 @@
1
+ # Step 7.4a Reference — Audit Recovery Branch
2
+
3
+ Load this reference when Step 7.4 returns a fatal structural finding (category
4
+ `accuracy`, `data_fidelity`, `protocol_mismatch`, or `numerical_claim`), an unresolved
5
+ Step 7.3a primary-source disagreement, a persistent `[VERIFY-CSV]` tag, or a registry ↔
6
+ analysis inconsistency. The SKILL.md body carries only trigger table + routing table +
7
+ summary pointer; procedural detail lives here.
8
+
9
+ ## Purpose
10
+
11
+ The linear polish flow (draft → review → revise → submit) assumes remaining issues are
12
+ prose-level. Some self-review findings are structural — they indicate that the
13
+ underlying data, protocol application, or analysis script is wrong, not that the prose
14
+ is wrong. Continuing through Step 7.5 – 7.6 in that case produces a polished manuscript
15
+ built on a broken foundation. This step makes the recovery loop explicit.
16
+
17
+ ## Trigger Conditions (any one, from the Step 7.4 JSON report)
18
+
19
+ - A `severity: "fatal"` issue whose category is `accuracy`, `data_fidelity`,
20
+ `protocol_mismatch`, or `numerical_claim`.
21
+ - An unresolved primary-source disagreement from Step 7.3a (P0 blocker).
22
+ - A `[VERIFY-CSV]` tag remains in the manuscript after two fix iterations.
23
+ - The self-review report flags inconsistency between the registered protocol (e.g.,
24
+ PROSPERO record) and the delivered analysis.
25
+ - A reviewer-consensus record and the locked dataset disagree on inclusion of one or
26
+ more studies.
27
+
28
+ **Do not attempt to fix these inline.** The `/self-review --fix` loop is text-level;
29
+ these findings require re-extraction, re-analysis, or re-registration. In-line text
30
+ patching papers over the defect and breaks downstream audit trails.
31
+
32
+ ## Routing
33
+
34
+ | Symptom | Route to |
35
+ |---|---|
36
+ | MA pooled estimate / forest / subgroup / funnel numbers disagree with source | `/meta-analysis` Phase 10 (Self-Audit Recovery) |
37
+ | MA protocol vs. analysis mismatch (eligibility, outcome, subgroup) | `/meta-analysis` Phase 10 + registry amendment |
38
+ | Primary-study numerical claim disagrees with source Table/Figure | `/meta-analysis` Phase 6b (Post-Analysis Source Fidelity Audit), then return here |
39
+ | Non-MA manuscript: extraction error affecting Table 1 / primary endpoint | Return to this skill's Phase 2 (Tables & Figures) with corrected CSV, then re-enter Phase 3 – 7 for affected sections only |
40
+ | Non-MA manuscript: protocol amendment needed (e.g., IRB-registered outcome changed) | Halt and ask the user; protocol amendments are human-decision |
41
+
42
+ ## Actions
43
+
44
+ 1. **Halt the polish pipeline.** Do not run Step 7.5 (Generate Deliverables) or Step 7.6
45
+ (DOCX Build). The current `manuscript/manuscript.md` is still a work-in-progress.
46
+ 2. **Log the branch decision** to `qc/_pipeline_log.md`:
47
+ ```
48
+ ## Audit Recovery Branch (Step 7.4a)
49
+ - Triggered by: {finding IDs from self-review JSON}
50
+ - Routed to: {skill/phase}
51
+ - Manuscript version frozen at: v{N}
52
+ - Recovery workspace: {path}
53
+ ```
54
+ 3. **Invoke the routed skill** with the specific findings. For MA-type recovery, the
55
+ `/meta-analysis` Phase 10 sprint rebuilds the extraction, analysis, figures, and
56
+ manuscript-body numbers, and emits a `change_summary.md`.
57
+ 4. **Re-entry.** When the upstream recovery completes and produces a new
58
+ `manuscript/manuscript.md` (v{N+1}) plus a change summary:
59
+ - Re-enter Phase 7 at Step 7.3 (Citation Verification) — not at Step 7.1, because
60
+ recovery may have introduced new citations.
61
+ - Carry the change summary through to Phase 8+ (cover letter) when applicable.
62
+ - If the recovery required a registry amendment (PROSPERO or equivalent), confirm in
63
+ Step 7.2 (Reporting Guideline Check) that the manuscript's Methods text cites the
64
+ amendment date.
65
+ 5. **Loop budget.** A single recovery cycle is expected. A second recovery cycle on the
66
+ same manuscript is permitted but should prompt a root-cause review of Phase 2 / 6 /
67
+ 6b — repeated recoveries indicate upstream rigor gaps, not manuscript-level issues.
68
+
69
+ ## Autonomous Mode
70
+
71
+ If `--autonomous` is ON and the recovery skill is also available, the orchestrator may
72
+ auto-invoke `/meta-analysis` Phase 10 and continue. If the recovery requires human
73
+ decision (protocol amendment, eligibility re-scope), the autonomous run stops and flags
74
+ `qc/_pipeline_log.md` with `RECOVERY_HALT_HUMAN_DECISION`.
@@ -0,0 +1,123 @@
1
+ # Title & Abstract Writing Guide
2
+
3
+ Reference for write-paper Phase 6 (Introduction + Abstract) and Phase 1 (Outline).
4
+ Loaded on-demand when drafting Title or Abstract.
5
+
6
+ ---
7
+
8
+ ## Title
9
+
10
+ ### Three Title Types
11
+
12
+ | Type | Characteristics | When to Use |
13
+ |------|----------------|-------------|
14
+ | **Interrogative** | Poses a question ("Is X better than Y?") | Lower-impact journals; weaker evidence |
15
+ | **Descriptive** | States what was studied, includes design | Default choice for most submissions |
16
+ | **Declarative** | States the conclusion directly | Only with strong evidence (RCT-level) |
17
+
18
+ **Default to Descriptive** unless the study has RCT-level evidence (then Declarative is acceptable).
19
+
20
+ ### Required Components (4 elements)
21
+
22
+ Every title should contain:
23
+
24
+ 1. **Modality**: CT, MRI, ultrasound, radiograph, etc.
25
+ 2. **Disease/Condition**: HCC, Crohn's disease, lung nodule, etc.
26
+ 3. **What was evaluated**: Scoring system, revised criteria, AI model, etc.
27
+ 4. **Purpose/Outcome**: Prediction, identification, comparison, validation, etc.
28
+
29
+ ### Title Rules
30
+
31
+ - Include the study design (retrospective, prospective, multicenter, etc.)
32
+ - Remove filler words ruthlessly — every word must earn its place
33
+ - Word limit varies by journal (e.g., Radiology: 15 words)
34
+ - Do not use abbreviations in the title unless universally understood (CT, MRI, AI)
35
+
36
+ ### Self-Check
37
+
38
+ Before finalizing, verify:
39
+ - [ ] All 4 components present (modality, disease, what, purpose)?
40
+ - [ ] Study design stated?
41
+ - [ ] Within journal word limit?
42
+ - [ ] No unnecessary filler words?
43
+
44
+ ---
45
+
46
+ ## Abstract
47
+
48
+ ### Structure
49
+
50
+ Most journals require a structured abstract: Background, Methods, Results, Conclusion.
51
+ Check the journal profile for the exact format (some use Purpose instead of Background,
52
+ or combine Background and Purpose).
53
+
54
+ ### Word Limits (common)
55
+
56
+ | Journal | Limit |
57
+ |---------|-------|
58
+ | Radiology / KJR | 300 words |
59
+ | European Radiology | 250 words |
60
+ | European Journal of Radiology | 350 words |
61
+
62
+ Always check the loaded journal profile for the exact limit.
63
+
64
+ ### Section-by-Section Rules
65
+
66
+ #### Background / Purpose
67
+
68
+ - Start with the specific gap — not a general disease overview
69
+ - No "Disease X is a major health concern" openers
70
+ - Go directly to what is unknown or insufficient about current methods
71
+ - 2-3 sentences maximum
72
+
73
+ #### Methods
74
+
75
+ - State: retrospective or prospective, single or multicenter
76
+ - Population: who, when (date range)
77
+ - Modality and key technical parameters
78
+ - Primary outcome and representative statistical method
79
+ - 3-5 sentences
80
+
81
+ #### Results
82
+
83
+ - Start with final included patient count (must match flowchart)
84
+ - Mean age and sex distribution
85
+ - Primary outcome with exact value, 95% CI, and p-value
86
+ - Key secondary outcomes (1-2 maximum)
87
+ - 3-5 sentences
88
+
89
+ #### Conclusion
90
+
91
+ - **This is where to invest the most effort** — reviewers and readers read this first
92
+ - 1-2 sentences only: state the core finding and its clinical implication
93
+ - Do not include limitations or "further studies are needed" (add only if reviewer requests)
94
+ - Must be a directly citable statement
95
+
96
+ ### Abstract Self-Check
97
+
98
+ - [ ] All numbers match main text and tables?
99
+ - [ ] Conclusion does not overclaim beyond the evidence?
100
+ - [ ] Within word limit?
101
+ - [ ] Format matches journal requirements exactly?
102
+
103
+ ---
104
+
105
+ ## Visual Abstract
106
+
107
+ Many journals now require or encourage visual abstracts. European Radiology mandates them for
108
+ all Original Articles from first revision (Jan 2025). Submitting one voluntarily signals effort.
109
+
110
+ **Generation workflow:**
111
+ 1. Check the target journal profile for visual abstract requirements and template availability.
112
+ 2. Extract content: title, Key Point 1 → hypothesis, Key Point 3 → main finding, methodology
113
+ bullets (<6 words each), patient cohort/modality/center badges.
114
+ 3. Select a visual element: prefer the study's own figures (ROC, flow diagram) over illustrations.
115
+ 4. Call `/make-figures` with visual abstract request, or run `generate_visual_abstract.py` directly.
116
+ 5. The script fills a journal-specific PPTX template. If none exists, `medsci_default.pptx` is used.
117
+
118
+ **Design rules:**
119
+ - One page, landscape (16:9), per journal template
120
+ - Study question → Key method → Main result structure
121
+ - Use study's actual figures, not generic clip-art
122
+ - Every visual element must serve a purpose
123
+ - See `make-figures/references/medical_illustration_sources.md` for free illustration resources
@@ -0,0 +1,147 @@
1
+ # Statistical Methods — Section Templates for Radiology Papers
2
+
3
+ Reusable paragraph templates for the Statistical Analysis subsection of Methods. Adapt to the specific study; do not copy verbatim. All templates use past tense (Methods convention).
4
+
5
+ ---
6
+
7
+ ## 1. Descriptive Statistics
8
+
9
+ ### Template
10
+ Continuous variables were expressed as mean +/- standard deviation or median (interquartile range [IQR]) depending on data distribution, which was assessed using the Shapiro-Wilk test. Categorical variables were reported as frequencies and percentages. Baseline characteristics were compared between groups using {the independent t test or Mann-Whitney U test} for continuous variables and {the chi-square test or Fisher exact test} for categorical variables, as appropriate.
11
+
12
+ ### When to use each
13
+ - **Mean +/- SD**: normally distributed continuous data.
14
+ - **Median [IQR]**: skewed distributions, ordinal data, or small samples.
15
+ - **Shapiro-Wilk**: preferred normality test for n < 50; for larger samples, also consider visual inspection (Q-Q plot, histogram).
16
+
17
+ ---
18
+
19
+ ## 2. Comparison Tests
20
+
21
+ ### Two-Group Continuous (Parametric)
22
+ Differences in {outcome} between {group A} and {group B} were compared using the independent-samples t test. For paired data (e.g., pre- vs post-intervention in the same subjects), the paired t test was used.
23
+
24
+ ### Two-Group Continuous (Nonparametric)
25
+ Differences in {outcome} between groups were compared using the Mann-Whitney U test for independent samples or the Wilcoxon signed-rank test for paired samples.
26
+
27
+ ### Categorical
28
+ The association between {variable 1} and {variable 2} was evaluated using the chi-square test. Fisher exact test was used when the expected cell count was less than 5.
29
+
30
+ ### Multi-Group
31
+ Differences in {outcome} among {3+} groups were assessed using one-way analysis of variance (ANOVA) with post hoc pairwise comparisons using the Tukey honestly significant difference test. For non-normally distributed data, the Kruskal-Wallis test was used with post hoc Dunn test.
32
+
33
+ ---
34
+
35
+ ## 3. Diagnostic Accuracy
36
+
37
+ ### Template
38
+ Diagnostic performance of {model/reader/test} was evaluated by calculating sensitivity, specificity, positive predictive value (PPV), negative predictive value (NPV), and accuracy with exact binomial 95% confidence intervals (CIs). The area under the receiver operating characteristic curve (AUC) was calculated with 95% CIs using the DeLong method. The operating point was determined by {maximizing the Youden index / using a pre-specified sensitivity threshold of X% / clinical consensus}. AUC values were compared between {model A} and {model B} using the DeLong test for correlated ROC curves.
39
+
40
+ ### Sensitivity/Specificity at Fixed Threshold
41
+ At the pre-specified operating point of {threshold}, sensitivity and specificity were calculated with 95% CIs using the exact binomial method.
42
+
43
+ ### Multi-Class
44
+ For multiclass classification, per-class sensitivity and specificity were calculated using a one-versus-rest approach. The overall performance was summarized using the macro-averaged AUC.
45
+
46
+ ---
47
+
48
+ ## 4. Inter-Rater Agreement
49
+
50
+ ### Two Raters, Categorical
51
+ Inter-rater agreement between {rater 1} and {rater 2} was assessed using Cohen kappa coefficient. Kappa values were interpreted as follows: less than 0, poor; 0-0.20, slight; 0.21-0.40, fair; 0.41-0.60, moderate; 0.61-0.80, substantial; and 0.81-1.00, almost perfect agreement.
52
+
53
+ ### Multiple Raters, Categorical
54
+ Inter-rater agreement among {N} raters was assessed using Fleiss kappa with 95% CIs.
55
+
56
+ ### Continuous Measurements
57
+ Inter-rater reliability for continuous measurements was assessed using the intraclass correlation coefficient (ICC) with a two-way random-effects model for absolute agreement (ICC[2,1] for single measures, ICC[2,k] for average measures). ICC values were interpreted as: less than 0.50, poor; 0.50-0.75, moderate; 0.75-0.90, good; and greater than 0.90, excellent.
58
+
59
+ ### Weighted Kappa (Ordinal)
60
+ For ordinal ratings, inter-rater agreement was assessed using the weighted kappa coefficient with quadratic weights.
61
+
62
+ ---
63
+
64
+ ## 5. Survival Analysis
65
+
66
+ ### Template
67
+ Overall survival and progression-free survival were estimated using the Kaplan-Meier method and compared between groups using the log-rank test. Median survival times were reported with 95% CIs. Multivariable analysis was performed using the Cox proportional hazards model, reporting hazard ratios (HRs) with 95% CIs. The proportional hazards assumption was verified using Schoenfeld residuals. Variables with P < .10 on univariable analysis were included in the multivariable model.
68
+
69
+ ### Template (Retrospective Cohort — Time Zero + Interval Censoring)
70
+ Time zero was defined as the date of the first {qualifying examination / treatment / enrollment}. {Outcome} status was ascertained at subsequent {screening visits / follow-up examinations}, and the exact date of {outcome} onset was unknown. Therefore, the time to {outcome} was interval-censored between the last {negative / event-free} examination and the first {positive / event-detected} examination. Participants who remained {event-free / negative} at the last available examination were right-censored at that date. Standard Kaplan-Meier estimates were reported for comparability with prior literature, and interval-censored analyses using the Turnbull nonparametric maximum likelihood estimator were performed as {primary analysis / sensitivity analysis}.
71
+
72
+ ### Template (Competing Risks)
73
+ Cumulative incidence of {primary outcome} was estimated using the cumulative incidence function (CIF), accounting for {competing event, e.g., non-cardiovascular death} as a competing risk. Group differences in cumulative incidence were compared using Gray test. The association between covariates and {primary outcome} was assessed using the Fine-Gray subdistribution hazard model, reporting subdistribution hazard ratios (sHRs) with 95% CIs. Cause-specific Cox proportional hazards models were also fitted for etiologic interpretation.
74
+
75
+ ---
76
+
77
+ ## 6. Sample Size Justification
78
+
79
+ ### Template (Diagnostic Accuracy)
80
+ Based on an expected AUC of {X} for the AI model with a null hypothesis AUC of 0.50, a minimum of {N} cases ({n} positive, {n} negative) were required to achieve 80% power at a two-sided significance level of .05, using the method described by Hanley and McNeil. Accounting for {X%} expected data loss, a target enrollment of {N} was set.
81
+
82
+ ### Template (Comparison Study)
83
+ To detect a difference of {X} in {metric} between {group A} and {group B}, assuming a standard deviation of {Y}, a sample of {N} per group was required to achieve {80/90}% power at a two-sided alpha of .05 using a {two-sample t test / chi-square test}. This calculation was performed using {software}.
84
+
85
+ ### Template (No Formal Power Analysis)
86
+ No formal sample size calculation was performed for this {retrospective / exploratory} study. All eligible patients during the study period were included.
87
+
88
+ ---
89
+
90
+ ## 7. Multiple Comparison Correction
91
+
92
+ ### Bonferroni
93
+ To account for multiple comparisons across {N} primary endpoints, a Bonferroni-corrected significance threshold of P < {0.05/N} was applied.
94
+
95
+ ### Holm
96
+ Multiple comparisons were adjusted using the Holm-Bonferroni sequential correction method.
97
+
98
+ ### False Discovery Rate
99
+ For exploratory analyses involving {N} comparisons, the Benjamini-Hochberg procedure was used to control the false discovery rate at 5%.
100
+
101
+ ### No Correction (with justification)
102
+ Given that the {subgroup / secondary} analyses were pre-specified and hypothesis-driven, no correction for multiple comparisons was applied; these results should be interpreted with appropriate caution.
103
+
104
+ ---
105
+
106
+ ## 8. Software Statement
107
+
108
+ ### Template (Python-primary)
109
+ Statistical analyses were performed using Python {version} (Python Software Foundation) with the following packages: scipy {version} for statistical tests, scikit-learn {version} for machine learning metrics, statsmodels {version} for regression analyses, and lifelines {version} for survival analysis. Figures were generated using matplotlib {version} and seaborn {version}.
110
+
111
+ ### Template (R-primary)
112
+ Statistical analyses were performed using R {version} (R Foundation for Statistical Computing, Vienna, Austria). Key packages included pROC for ROC analysis, survival and survminer for survival analysis, irr for inter-rater reliability, and ggplot2 for visualization.
113
+
114
+ ### Template (Mixed)
115
+ Data preprocessing and model development were performed using Python {version} with PyTorch {version}. Statistical analyses were performed using R {version} with the pROC, irr, and survival packages. All statistical tests were two-sided, and P < .05 was considered to indicate a statistically significant difference.
116
+
117
+ ### Significance Statement (append to any software template)
118
+ All statistical tests were two-sided, and P < .05 was considered to indicate a statistically significant difference unless otherwise specified.
119
+
120
+ ---
121
+
122
+ ## 9. Ethics Statement
123
+
124
+ ### Template (Retrospective, Consent Waived)
125
+ This retrospective study was approved by the institutional review board of {institution name} (protocol no. {number}), and the requirement for written informed consent was waived owing to the retrospective nature of the study. All procedures were performed in accordance with the Declaration of Helsinki.
126
+
127
+ ### Template (Prospective, Consent Obtained)
128
+ This prospective study was approved by the institutional review board of {institution name} (protocol no. {number}). Written informed consent was obtained from all participants prior to enrollment.
129
+
130
+ ### Template (Multi-Institutional)
131
+ This study was approved by the institutional review boards of all participating institutions: {institution 1} (protocol no. {X}), {institution 2} (protocol no. {Y}), and {institution 3} (protocol no. {Z}). {Informed consent was obtained from all participants / The requirement for informed consent was waived at all sites}.
132
+
133
+ ### Template (Educational Study, No Patient Data)
134
+ This study was reviewed by the institutional review board of {institution name} and was determined to be exempt from full review (protocol no. {number}) as it involved educational evaluation with no patient data.
135
+
136
+ ---
137
+
138
+ ## 10. AI Disclosure Statement
139
+
140
+ ### Template (AI Used in Research Pipeline)
141
+ {Model name} ({version}, {company}) was used for {specific task, e.g., generating educational content, classifying images, extracting structured data}. The model was accessed via {API / local deployment} between {start date} and {end date}. Generation parameters included a temperature of {X} and a maximum token length of {Y}. {All outputs were reviewed by a board-certified radiologist (author initials, X years of experience) / All outputs underwent multi-stage quality assurance as described in Section 2.X}.
142
+
143
+ ### Template (AI Used in Writing)
144
+ {Tool name} ({version}) was used for {grammar checking / language editing / code generation for statistical analysis}. All AI-assisted content was critically reviewed, edited, and verified by the authors, who take full responsibility for the final manuscript.
145
+
146
+ ### Template (Study About AI, No AI in Writing)
147
+ No AI writing tools were used in the preparation of this manuscript. The AI models evaluated in this study are described in Section 2.X.