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,287 @@
1
+ # Publication Table Standards — Knowledge Base
2
+
3
+ > Reference document for medical journal table formatting.
4
+ > Source: YouTube tutorials, journal author guidelines, AMA Manual of Style, tool documentation.
5
+ > Last updated: 2026-04-11
6
+
7
+ ---
8
+
9
+ ## 1. Universal Rules (All Medical Journals)
10
+
11
+ 1. **No vertical lines** — horizontal rules only (top, below header, bottom)
12
+ 2. **Editable Word tables** — use Word Insert > Table. Never submit images, Excel, or PDF
13
+ 3. **Sequential numbering** — Table 1, 2, 3... in order of first citation in text
14
+ 4. **Define all abbreviations** — in footnotes, independently for each table
15
+ 5. **Explanatory content in footnotes, not headings**
16
+ 6. **Display item limit** — most journals: tables + figures combined 4-5
17
+ 7. **Exact P values** — never just "significant/not significant"
18
+ 8. **Variability measures required** — always state mean (SD) or median (IQR)
19
+ 9. **Self-contained titles** — table title alone must convey content without reading text
20
+ 10. **No duplication** — tables and figures must not repeat the same data
21
+
22
+ ---
23
+
24
+ ## 2. Journal-Specific Differences
25
+
26
+ ### Footnote Markers
27
+
28
+ | Journal Family | Marker System | Order |
29
+ |---|---|---|
30
+ | AMA (Radiology, JAMA, AJR, Rad:AI) | Superscript lowercase letters | a, b, c, d... |
31
+ | NEJM | Symbols | *, †, ‡, §, ‖, ¶, **, ††... |
32
+ | Lancet | Symbols | *, †, ‡, §, ¶, ‖, **, ††... |
33
+ | European Radiology (Springer) | Superscript lowercase letters + asterisks for significance | a, b, c... and *, **, *** |
34
+
35
+ ### P Value Formatting
36
+
37
+ | Journal | Case | Leading Zero | Examples |
38
+ |---|---|---|---|
39
+ | Radiology / JAMA / AJR / Rad:AI | Uppercase italic *P* | No | *P* = .03, *P* < .001 |
40
+ | NEJM | Uppercase *P* | No | *P* = .04, *P* < .001 |
41
+ | Lancet | Lowercase p | Yes | p = 0.03, p < 0.0001 |
42
+ | European Radiology | Lowercase p (Springer) | Varies | p = 0.03 |
43
+
44
+ ### P Value Decimal Places
45
+
46
+ | Value Range | JAMA/Radiology | NEJM | Lancet |
47
+ |---|---|---|---|
48
+ | > .01 | 2 decimals (.04) | 2 decimals (.04) | 2 sig figs (0.04) |
49
+ | .01-.001 | 3 decimals (.003) | 3 decimals (.003) | Up to 4 decimals (0.0023) |
50
+ | < .001 | *P* < .001 | *P* < .001 | p < 0.0001 |
51
+
52
+ ### Horizontal Lines
53
+
54
+ | Journal | Rule |
55
+ |---|---|
56
+ | AMA journals | Top, below header, bottom. Additional sparingly |
57
+ | NEJM | Minimize even internal horizontal lines |
58
+ | Lancet | Exactly 3: top, below header, bottom |
59
+
60
+ ### 95% CI Format
61
+
62
+ | Journal | Format |
63
+ |---|---|
64
+ | Radiology | (XX, XX) — comma separator |
65
+ | JAMA | XX to XX — "to" separator |
66
+ | Lancet | XX to XX or XX-XX |
67
+ | NEJM | XX to XX |
68
+
69
+ ### Table Title Format
70
+
71
+ | Journal | Format |
72
+ |---|---|
73
+ | AMA journals | **Table N.** Title in regular weight (bold "Table N." only) |
74
+ | NEJM | Table N. Title |
75
+ | Lancet | Table N: Title |
76
+
77
+ ---
78
+
79
+ ## 3. AMA Manual of Style (11th Ed) — Table Rules
80
+
81
+ ### Structure
82
+ - **Column headers**: Bold
83
+ - **Row headers (stub)**: Regular weight, sentence case
84
+ - **Decking** (nested column headers): Maximum 3 levels
85
+ - **Alignment**: Text = left-aligned, Numbers = center or decimal-aligned
86
+ - **Units**: In column header parentheses, not repeated in cells
87
+ - **Maximum size**: ~40 rows x 6-8 columns, fit within 1 page
88
+
89
+ ### Footnote System (AMA 11th)
90
+ - **Table footnotes**: Superscript lowercase letters (a, b, c...)
91
+ - **NOT symbols** — symbols (*, †, ‡) are for bottom-of-page text footnotes only
92
+ - **Assignment order**: Top-to-bottom, left-to-right through the table
93
+ - **Whole-table footnote**: Place superscript "a" at end of table title
94
+ - **Reference numbers + footnotes**: Reference first, comma, then footnote letter (e.g., 5,b)
95
+
96
+ ### Footnote Placement Order
97
+ ```
98
+ Below the table, in this sequence:
99
+
100
+ 1. General note (no marker, applies to entire table)
101
+ "Data are presented as median (IQR) unless otherwise noted."
102
+
103
+ 2. Abbreviation note
104
+ "ASA = American Society of Anesthesiologists, BMI = body mass index,
105
+ CI = confidence interval."
106
+ → Listed in order of appearance in table (left→right, top→bottom)
107
+ → Some journals (JAMA) require alphabetical order — check guide
108
+
109
+ 3. Specific notes (superscript letter markers)
110
+ "a Excludes patients with missing follow-up data."
111
+ "b Adjusted for age and sex."
112
+
113
+ 4. Probability notes (asterisk markers, if used)
114
+ "* P < .05; ** P < .01."
115
+ ```
116
+
117
+ ### P Value Rules
118
+ - Uppercase italic: *P*
119
+ - No leading zero: .05, not 0.05
120
+ - Thin space around operators: *P* = .03
121
+ - Only *P*, *α*, *β* omit leading zero; all other statistics keep it
122
+
123
+ ---
124
+
125
+ ## 4. Footnote System Specification
126
+
127
+ ### When to Use Symbols vs Letters vs Numbers
128
+
129
+ | System | Markers | Use Case | Journals |
130
+ |---|---|---|---|
131
+ | Lowercase letters | a, b, c... | **Table footnotes (standard)** | AMA journals, EUR, most |
132
+ | Symbols | *, †, ‡, §, ‖, ¶ | Table footnotes (traditional) | NEJM, Lancet |
133
+ | Asterisks only | *, **, *** | **Probability notes only** | Springer journals |
134
+ | Uppercase letters | A, B, C... | Table footnotes | JCI |
135
+ | Numbers | 1, 2, 3... | Non-numeric tables only | Rarely used (confusion with references) |
136
+
137
+ ### Caption vs Footnote — What Goes Where
138
+
139
+ | Content | Caption (above table) | Footnote (below table) |
140
+ |---|---|---|
141
+ | Table title | Yes | No |
142
+ | Study period/setting | Yes (brief) | No |
143
+ | Abbreviation definitions | No | **Yes** (first footnote) |
144
+ | Statistical test descriptions | No | **Yes** |
145
+ | P value thresholds | No | **Yes** (probability note) |
146
+ | Data source | No | **Yes** (source note) |
147
+ | Missing data explanation | No | **Yes** (specific note) |
148
+ | Sample size (N) | Column header or caption | Footnote (supplementary) |
149
+
150
+ ### Statistical Test Footnote Patterns
151
+
152
+ **Pattern A — Individual markers (preferred when tests vary by row):**
153
+ ```
154
+ Age, y 65.3 (12.1) 62.1 (11.8) .04ᵃ
155
+ Sex, male 53 (52) 48 (47) .41ᵇ
156
+
157
+ ᵃ Wilcoxon rank-sum test.
158
+ ᵇ Fisher exact test.
159
+ ```
160
+
161
+ **Pattern B — General note (preferred when same test for all rows of a type):**
162
+ ```
163
+ P values were calculated using the Wilcoxon rank-sum test for continuous
164
+ variables and the Fisher exact test for categorical variables.
165
+ ```
166
+
167
+ ---
168
+
169
+ ## 5. Common Mistakes Checklist
170
+
171
+ ### Structure
172
+ - [ ] Binary variables: show only one level (Male 53%, not Male 53% / Female 47%)
173
+ - [ ] Remove derivable columns (Total column when groups are shown)
174
+ - [ ] Keep tables under 50 rows (excess → supplementary)
175
+ - [ ] No sub-part numbering (Table 3A/3B → Table 3, Table 4)
176
+ - [ ] Do not repeat all table data in Results text
177
+
178
+ ### Formatting
179
+ - [ ] Consistent decimal places within each column
180
+ - [ ] Units in column headers, not in cells
181
+ - [ ] No vertical lines, minimal horizontal lines
182
+ - [ ] Numbers right-aligned or center-aligned (not left)
183
+ - [ ] Specify variability: "Mean (SD)" or "Median (IQR)" in header or footnote
184
+
185
+ ### Statistics
186
+ - [ ] RCTs: P values in Table 1 are usually unnecessary (randomization)
187
+ - [ ] Always name the statistical test (in footnote or general note)
188
+ - [ ] Report effect sizes per clinically meaningful unit (OR per 10-year, not per 1-year)
189
+ - [ ] CI notation consistent throughout (parentheses vs "to" — match journal style)
190
+ - [ ] Never use "NS" — report exact P values
191
+
192
+ ### Submission
193
+ - [ ] Editable Word table (not image/screenshot)
194
+ - [ ] No color as sole information carrier (use bold/italic/symbols instead)
195
+ - [ ] All abbreviations defined in footnotes
196
+ - [ ] Each table's footnotes are self-contained (no "see Table 1 footnote")
197
+
198
+ ---
199
+
200
+ ## 6. Tool Recommendations
201
+
202
+ ### Primary Pipeline: R {gtsummary}
203
+
204
+ **Why gtsummary:**
205
+ - Built-in journal themes: JAMA, Lancet, NEJM
206
+ - Auto-selects statistical tests (Wilcoxon, Fisher, Chi-square)
207
+ - Auto-generates footnotes (test names, summary statistics)
208
+ - Outputs to Word (via flextable), LaTeX (via huxtable), HTML (via gt)
209
+
210
+ **Core API:**
211
+ ```r
212
+ library(gtsummary)
213
+
214
+ # Set journal theme FIRST
215
+ theme_gtsummary_journal("jama") # or "lancet", "nejm"
216
+ theme_gtsummary_compact()
217
+
218
+ # Table 1
219
+ tbl <- df %>%
220
+ tbl_summary(
221
+ by = group,
222
+ type = list(age ~ "continuous2"),
223
+ statistic = list(
224
+ all_continuous() ~ c("{mean} ({sd})", "{median} ({p25}, {p75})"),
225
+ all_categorical() ~ "{n} ({p}%)"
226
+ ),
227
+ digits = list(all_continuous() ~ 1),
228
+ missing = "ifany"
229
+ ) %>%
230
+ add_p() %>%
231
+ add_overall() %>%
232
+ add_stat_label() %>%
233
+ bold_labels() %>%
234
+ modify_footnote(all_stat_cols() ~ "Mean (SD); Median (Q1, Q3); n (%)")
235
+
236
+ # Export
237
+ tbl %>% as_flex_table() %>% flextable::save_as_docx(path = "table1.docx")
238
+ tbl %>% as_hux_table() %>% huxtable::to_latex() %>% writeLines("table1.tex")
239
+ ```
240
+
241
+ **Regression table:**
242
+ ```r
243
+ model <- glm(outcome ~ age + sex + bmi, data = df, family = binomial)
244
+
245
+ tbl_regression(model, exponentiate = TRUE) %>%
246
+ add_global_p() %>%
247
+ bold_p(t = 0.05) %>%
248
+ bold_labels()
249
+ ```
250
+
251
+ ### Supporting Tools
252
+
253
+ | Tool | Role | When to Use |
254
+ |---|---|---|
255
+ | gt | Fine-grained styling | Cell-level colors, custom footnote marks, heatmaps |
256
+ | flextable | Word output engine | Final DOCX formatting, autofit, borders |
257
+ | huxtable | LaTeX output engine | LaTeX code extraction |
258
+ | tableone (R/Python) | Quick exploratory Table 1 | Early drafts, data exploration |
259
+ | python-docx | Python Word tables | When pipeline is Python-only |
260
+ | great_tables | Python gt port | Growing but immature for medical use |
261
+
262
+ ### Python Limitation
263
+ Python has no equivalent to gtsummary's journal themes or automatic statistical test selection. For publication tables, R is strongly recommended. Python-only pipelines should use tableone for generation + python-docx for Word formatting, accepting manual style adjustments.
264
+
265
+ ---
266
+
267
+ ## 7. Format-Specific Notes
268
+
269
+ ### Word (DOCX) Submission
270
+ - Use Word's Insert > Table function (never tab-separated)
271
+ - Font: Times New Roman 10-12pt (table body can be 9-10pt)
272
+ - Single spacing within cells
273
+ - Remove all vertical borders; keep 3 horizontal lines
274
+ - Bold headers, regular body text
275
+ - Each table on a separate page, after References
276
+
277
+ ### LaTeX Submission
278
+ - Use `booktabs` package (`\toprule`, `\midrule`, `\bottomrule`)
279
+ - Never use `\hline` or `|` vertical separators
280
+ - `\siunitx` for decimal alignment
281
+ - `\multirow` / `\multicolumn` for merged cells
282
+ - Generate via gtsummary → huxtable → to_latex() for consistency
283
+
284
+ ### HTML (Review/Proofing)
285
+ - gt produces the highest quality HTML tables
286
+ - Useful for co-author review before final Word/LaTeX export
287
+ - Can include interactive features (sorting, filtering) for supplementary materials
@@ -0,0 +1,36 @@
1
+ # Table: Diagnostic Accuracy Results
2
+
3
+ ## Reporting Guidelines
4
+ - **STARD**: Sensitivity, Specificity, PPV, NPV with 95% CIs
5
+ - **TRIPOD-AI / CLAIM**: For AI model performance
6
+
7
+ ## Standard Structure
8
+
9
+ ```
10
+ Table 2. Diagnostic Performance of [Model/Test] for [Condition]
11
+
12
+ Sensitivity Specificity PPV NPV AUC
13
+ (95% CI) (95% CI) (95% CI) (95% CI) (95% CI)
14
+
15
+ Model A 0.92 (0.87-0.96) 0.85 (0.79-0.90) 0.78 (0.71-0.84) 0.95 (0.91-0.97) 0.94 (0.91-0.97)
16
+ Model B 0.88 (0.82-0.93) 0.90 (0.85-0.94) 0.83 (0.76-0.88) 0.93 (0.89-0.96) 0.93 (0.89-0.96)
17
+ P value .12 .08 .21 .34 .45
18
+
19
+ 95% CIs were calculated using the Wilson score method. AUC comparison
20
+ by DeLong test.
21
+ ```
22
+
23
+ ## Rules
24
+ - **Always include 95% CIs** for all metrics (STARD requirement)
25
+ - **CI method**: Specify in footnote (Wilson score, Clopper-Pearson, DeLong)
26
+ - **Threshold**: State the decision threshold used (e.g., "at Youden optimal threshold")
27
+ - **Per-class results**: For multi-class, show per-class + macro/micro average
28
+ - **Comparison P values**: DeLong test for AUC, McNemar for sensitivity/specificity
29
+ - **Decimal places**: 2-3 for proportions (0.92), 2-3 for AUC (0.94)
30
+ - **Reader studies**: Include per-reader AND pooled results
31
+
32
+ ## Key Footnote Content
33
+ - CI calculation method
34
+ - Comparison test used (DeLong, McNemar, bootstrap)
35
+ - Threshold selection method
36
+ - Whether results are per-patient or per-lesion
@@ -0,0 +1,58 @@
1
+ # Tables: Meta-Analysis
2
+
3
+ ## Reporting Guidelines
4
+ - **PRISMA 2020**: Study characteristics + pooled results
5
+ - **PRISMA-DTA**: For diagnostic test accuracy meta-analyses
6
+
7
+ ---
8
+
9
+ ## Table A: Characteristics of Included Studies
10
+
11
+ ```
12
+ Table 1. Characteristics of Included Studies
13
+
14
+ Author, Year Country Design N Population Index Test Reference Standard Quality
15
+ Kim 2023 Korea Retro 450 Suspected PE CTPA AI (v2.1) Expert consensus Low risk
16
+ Smith 2024 USA Prosp 1200 ED patients CTPA AI (v3.0) Pulmonary DSA Some concerns
17
+ ...
18
+
19
+ Retro = retrospective, Prosp = prospective, PE = pulmonary embolism,
20
+ CTPA = CT pulmonary angiography, ED = emergency department,
21
+ DSA = digital subtraction angiography.
22
+ ```
23
+
24
+ ### Rules
25
+ - **Column order**: Author/Year, Country, Design, N, Population, Index test, Reference standard, Quality/RoB
26
+ - **Author format**: First author surname + year
27
+ - **Study design**: Use standard abbreviations (Retro, Prosp, RCT)
28
+ - **Quality assessment tool**: QUADAS-2 (DTA), RoB 2 (RCT), NOS (observational)
29
+ - **Quality rating**: "Low risk" / "Some concerns" / "High risk" (QUADAS-2 terms)
30
+
31
+ ---
32
+
33
+ ## Table B: Pooled Results / Summary Estimates
34
+
35
+ ```
36
+ Table 2. Pooled Diagnostic Accuracy Estimates
37
+
38
+ k N Pooled Estimate (95% CI) I² P_het
39
+
40
+ Sensitivity 12 3400 0.91 (0.87-0.94) 78% <.001
41
+ Specificity 12 3400 0.88 (0.83-0.92) 65% .002
42
+ Positive LR 12 3400 7.58 (5.12-11.2) 72% <.001
43
+ Negative LR 12 3400 0.10 (0.07-0.15) 69% .001
44
+ DOR 12 3400 75.8 (42.1-136.5) 58% .008
45
+
46
+ k = number of studies, N = total participants, CI = confidence interval,
47
+ LR = likelihood ratio, DOR = diagnostic odds ratio.
48
+ Pooled estimates from bivariate random-effects model.
49
+ I² = Higgins inconsistency statistic; P_het from Cochran Q test.
50
+ ```
51
+
52
+ ### Rules
53
+ - **k and N**: Always report number of studies and total participants
54
+ - **Heterogeneity**: I² + P from Cochran Q test (mandatory)
55
+ - **Model**: State random-effects vs fixed-effects in footnote
56
+ - **Subgroup analyses**: Separate rows or separate table
57
+ - **Prediction interval**: Include for random-effects if k >= 3
58
+ - **Forest plot complement**: Table complements but does not replace forest plot
@@ -0,0 +1,36 @@
1
+ # Table: Model Performance Comparison
2
+
3
+ ## Reporting Guidelines
4
+ - **TRIPOD-AI**: AI model development/validation
5
+ - **CLAIM**: AI in medical imaging
6
+
7
+ ## Standard Structure
8
+
9
+ ```
10
+ Table 3. Comparison of Model Performance on Test Set
11
+
12
+ Model AUROC (95% CI) Sensitivity (95% CI) Specificity (95% CI) P vs Baseline
13
+
14
+ Baseline CNN 0.87 (0.83-0.91) 0.82 (0.75-0.88) 0.85 (0.79-0.90) —
15
+ Proposed Model 0.93 (0.90-0.96) 0.90 (0.84-0.94) 0.89 (0.84-0.93) .003
16
+ Reader A 0.88 (0.84-0.92) 0.85 (0.78-0.90) 0.86 (0.80-0.91) .52
17
+ Reader B 0.86 (0.81-0.90) 0.83 (0.76-0.89) 0.84 (0.78-0.89) .71
18
+
19
+ AUROC compared by DeLong test. Sensitivity/specificity at Youden optimal
20
+ threshold. 95% CIs by Wilson score interval.
21
+ ```
22
+
23
+ ## Rules
24
+ - **Baseline/reference model**: Always include (first row, P = — or "Ref")
25
+ - **Reader comparison**: Include human readers when available
26
+ - **Same test set**: All models evaluated on identical held-out data
27
+ - **Threshold**: Specify how threshold was chosen (Youden, fixed sensitivity, etc.)
28
+ - **Bootstrap CIs**: State number of iterations if used (e.g., "1000 bootstrap replicates")
29
+ - **Multiple test sets**: Separate sections or sub-tables for internal vs external validation
30
+ - **Calibration**: Include Brier score or calibration slope if relevant
31
+
32
+ ## AI-Specific Additions (CLAIM)
33
+ - Software version / model architecture in footnote or methods
34
+ - Training set size in footnote
35
+ - Hardware used (if inference time reported)
36
+ - Whether results are per-image or per-patient
@@ -0,0 +1,50 @@
1
+ # Table: Regression Results
2
+
3
+ ## Reporting Guidelines
4
+ - **STROBE**: Observational studies — OR, HR, RR with 95% CI
5
+ - **TRIPOD**: Prediction models — coefficients or OR with CI
6
+
7
+ ## Standard Structure
8
+
9
+ ```
10
+ Table 3. Multivariable Logistic Regression for [Outcome]
11
+
12
+ Variable Univariable Multivariable
13
+ OR (95% CI) P Value OR (95% CI) P Value
14
+
15
+ Age, per 10 y 1.22 (1.08-1.38) .002 1.18 (1.03-1.35) .02
16
+ Sex, male vs female 1.45 (0.98-2.14) .06 1.38 (0.91-2.09) .13
17
+ BMI, per 5 kg/m² 1.31 (1.12-1.53) <.001 1.25 (1.06-1.47) .008
18
+ Stage III vs I-II 2.87 (1.92-4.29) <.001 2.54 (1.65-3.91) <.001
19
+
20
+ OR = odds ratio, CI = confidence interval, BMI = body mass index.
21
+ ```
22
+
23
+ ## Rules
24
+ - **Reference category**: Always state (e.g., "male vs female", "Stage III vs I-II")
25
+ - **Clinically meaningful units**: "per 10 years" not "per 1 year" for continuous
26
+ - **Effect measure**: Match study design — OR (logistic), HR (Cox), RR (log-binomial), β (linear)
27
+ - **Always show both univariable AND multivariable** (or justify omission)
28
+ - **Model fit statistics**: AIC, C-statistic, or Hosmer-Lemeshow in footnote or separate row
29
+ - **Variable selection method**: State in footnote (e.g., "Variables with P < .10 in univariable entered multivariable")
30
+ - **Collinearity**: Note if VIF checked, in footnote
31
+
32
+ ## gtsummary Code
33
+ ```r
34
+ # Univariable
35
+ uv <- tbl_uvregression(
36
+ data, y = outcome, method = glm,
37
+ method.args = list(family = binomial),
38
+ exponentiate = TRUE
39
+ )
40
+
41
+ # Multivariable
42
+ mv <- glm(outcome ~ age + sex + bmi + stage, data = data, family = binomial)
43
+ mv_tbl <- tbl_regression(mv, exponentiate = TRUE) %>%
44
+ add_global_p() %>%
45
+ bold_p(t = 0.05)
46
+
47
+ # Merge
48
+ tbl_merge(list(uv, mv_tbl),
49
+ tab_spanner = c("Univariable", "Multivariable"))
50
+ ```
@@ -0,0 +1,51 @@
1
+ # Table 1: Baseline Demographics / Characteristics
2
+
3
+ ## Reporting Guidelines
4
+ - **RCT**: CONSORT (Table 1 should NOT include P values — randomization makes them irrelevant)
5
+ - **Cohort/Cross-sectional**: STROBE (P values optional, SMD preferred for propensity-matched)
6
+ - **Diagnostic**: STARD (patient demographics + index test characteristics)
7
+
8
+ ## Standard Structure
9
+
10
+ ```
11
+ Table 1. Baseline Characteristics of Patients
12
+
13
+ Group A (n=XXX) Group B (n=XXX) P Value
14
+ Age, y 65.3 (12.1) 62.1 (11.8) .04
15
+ Sex
16
+ Male 53 (52) 48 (47) .41
17
+ Female 49 (48) 54 (53)
18
+ BMI, kg/m² 24.8 (3.2) 25.1 (3.5) .52
19
+ ...
20
+
21
+ Data are presented as mean (SD) for continuous variables and n (%)
22
+ for categorical variables.
23
+ ```
24
+
25
+ ## Rules
26
+ - **Binary variables**: Show only one level (e.g., Male only; Female is implied)
27
+ - **Continuous variables**: Mean (SD) if normal; Median (IQR) if skewed. State which in footnote
28
+ - **Categorical variables**: n (%)
29
+ - **Column headers**: Include group size — "Group A (n=XXX)"
30
+ - **Units**: In row label — "Age, y" or "Age, years"
31
+ - **Missing data**: Report as "Missing" row or footnote stating N with complete data
32
+ - **P values in RCTs**: Omit (CONSORT recommendation) or include for observational studies
33
+ - **SMD**: Preferred over P values for propensity-matched studies
34
+
35
+ ## gtsummary Code
36
+ ```r
37
+ tbl_summary(
38
+ data, by = group,
39
+ type = list(age ~ "continuous2"),
40
+ statistic = list(
41
+ all_continuous() ~ c("{mean} ({sd})"),
42
+ all_categorical() ~ "{n} ({p}%)"
43
+ ),
44
+ digits = list(all_continuous() ~ 1, all_categorical() ~ c(0, 1)),
45
+ missing = "ifany",
46
+ missing_text = "Missing"
47
+ ) %>%
48
+ add_p() %>% # omit for RCTs
49
+ add_overall() %>%
50
+ bold_labels()
51
+ ```
@@ -0,0 +1,79 @@
1
+ # Publication Table Tools — Comparison
2
+
3
+ ## R Packages
4
+
5
+ | Feature | gtsummary | gt | flextable | tableone | kableExtra | huxtable |
6
+ |---|---|---|---|---|---|---|
7
+ | **Primary Use** | Table 1 + regression | Fine styling | Word output | Quick Table 1 | LaTeX/PDF | Multi-format |
8
+ | **Auto Statistics** | Yes (test selection) | No | No | Yes (p, SMD) | No | huxreg() only |
9
+ | **Journal Themes** | JAMA, Lancet, NEJM | No | Custom | No | No | No |
10
+ | **Footnotes** | Via gt engine | Native (excellent) | Native | Manual | Native | Native |
11
+ | **Word Output** | Via flextable | Limited | **Best** | Via knitr | Limited | Yes |
12
+ | **LaTeX Output** | Via huxtable | Native | Limited | Via knitr | **Best** | Native |
13
+ | **HTML Output** | Via gt | **Best** | Yes | Via knitr | Yes | Yes |
14
+ | **Maintenance** | Active (MSKCC) | Active (Posit) | Active | Maintenance | Maintenance | Maintenance |
15
+
16
+ ## Python Libraries
17
+
18
+ | Feature | great_tables | tableone (py) | python-docx | pandas Styler |
19
+ |---|---|---|---|---|
20
+ | **Primary Use** | gt port | Quick Table 1 | Word tables | HTML/LaTeX |
21
+ | **Auto Statistics** | No | Yes (p, SMD) | No | No |
22
+ | **Journal Themes** | No | No | No | No |
23
+ | **Footnotes** | tab_footnote() | No | Manual | No |
24
+ | **Word Output** | No | No | **Native** | No |
25
+ | **LaTeX Output** | No | Via export | No | to_latex() |
26
+ | **Maturity** | Growing | Stable | Stable | Built-in |
27
+
28
+ ## Recommended Pipelines
29
+
30
+ ### Best: R gtsummary → Word
31
+ ```r
32
+ theme_gtsummary_journal("jama")
33
+ theme_gtsummary_compact()
34
+ tbl %>% as_flex_table() %>% flextable::save_as_docx(path = "table.docx")
35
+ ```
36
+
37
+ ### Best: R gtsummary → LaTeX
38
+ ```r
39
+ tbl %>% as_hux_table() %>% huxtable::to_latex()
40
+ # OR
41
+ tbl %>% as_gt() %>% gt::gtsave("table.tex")
42
+ ```
43
+
44
+ ### Python-only (acceptable, not ideal)
45
+ ```python
46
+ # Generation
47
+ from tableone import TableOne
48
+ table1 = TableOne(df, columns=cols, categorical=cats, groupby='group', pval=True)
49
+ # Export to CSV, then format with python-docx
50
+ ```
51
+
52
+ ## Key Insight
53
+ > **Python lacks gtsummary-equivalent journal themes and auto-statistics.**
54
+ > For publication tables in medical journals, R is strongly preferred.
55
+ > Python pipelines require manual style adjustments that R handles automatically.
56
+
57
+ ## Tool Selection Decision Tree
58
+
59
+ ```
60
+ Need Table 1 or regression table?
61
+ → gtsummary (+ journal theme)
62
+
63
+ Need pixel-perfect custom styling?
64
+ → gt (HTML) or flextable (Word)
65
+
66
+ Submitting to Word-only journal?
67
+ → gtsummary → as_flex_table() → save_as_docx()
68
+
69
+ Submitting LaTeX?
70
+ → gtsummary → as_hux_table() → to_latex()
71
+ → OR kableExtra for direct LaTeX control
72
+
73
+ Python-only constraint?
74
+ → tableone (generation) + python-docx (formatting)
75
+ → Accept manual style work
76
+
77
+ Quick exploratory table?
78
+ → tableone (R or Python) — fastest setup
79
+ ```