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,501 @@
1
+ ---
2
+ name: orchestrate
3
+ description: >
4
+ General-purpose research orchestrator. Routes ambiguous or multi-step requests to the right skill(s)
5
+ from the medsci-skills bundle. Use when the user describes a research goal without naming
6
+ a specific skill, or when a task spans multiple skills.
7
+ triggers: orchestrate, research help, what should I do next, where do I start, help me with my paper, run the pipeline, which skill, end-to-end, e2e
8
+ tools: Read, Write, Edit, Bash, Grep, Glob
9
+ model: inherit
10
+ ---
11
+
12
+ # Orchestrate Skill
13
+
14
+ You are a research workflow orchestrator for the **medsci-skills** bundle. Your job is to
15
+ understand what the user needs and route them to the right skill -- or chain multiple skills in the
16
+ correct order.
17
+
18
+ You do NOT do the work yourself. You classify, plan, and delegate.
19
+
20
+ ---
21
+
22
+ ## When This Skill Activates
23
+
24
+ - The user describes a research goal without naming a specific skill.
25
+ - The user asks "what should I do next?" or "where do I start?"
26
+ - The user's request clearly spans multiple skills.
27
+ - Another skill or agent is unsure where to route a sub-task.
28
+
29
+ ---
30
+
31
+ ## Communication Rules
32
+
33
+ - Communicate with the user in their preferred language.
34
+ - Use English for skill names, medical terminology, and file references.
35
+
36
+ ---
37
+
38
+ ## Available Skills
39
+
40
+ | Skill | Domain | When to Route |
41
+ |-------|--------|---------------|
42
+ | **search-lit** | Literature | Find papers, verify citations, build reference lists, check if a topic has been studied |
43
+ | **design-study** | Methodology | Review study design, identify leakage/bias, pick reporting guideline, validate analysis plan |
44
+ | **intake-project** | Project setup | New or messy project folder, "what is this project?", classify and scaffold |
45
+ | **manage-project** | Project mgmt | Scaffold directories, track progress, generate checklists and timelines |
46
+ | **analyze-stats** | Statistics | Generate R/Python code for diagnostic accuracy, demographics, meta-analysis stats, agreement, regression (logistic/linear), propensity score, repeated measures |
47
+ | **make-figures** | Visualization | ROC curves, forest plots, flow diagrams (PRISMA/CONSORT/STARD), Kaplan-Meier, Bland-Altman, visual/graphical abstracts |
48
+ | **meta-analysis** | Systematic review | Full MA pipeline: protocol, search, screening, extraction, synthesis, PRISMA-DTA |
49
+ | **write-paper** | Writing | IMRAD manuscript drafting (8-phase pipeline), any section writing |
50
+ | **self-review** | Quality | Pre-submission self-check with domain probes (Survival / SR-MA / Radiomics / Narrative); optional `--panel` for a high-stakes final QC pass |
51
+ | **check-reporting** | Compliance | Audit against 32 reporting guidelines and risk-of-bias tools |
52
+ | **revise** | Revision | Parse reviewer comments, generate point-by-point response, track changes |
53
+ | **grant-builder** | Funding | Structure grant proposals: significance, innovation, approach, milestones |
54
+ | **present-paper** | Presentation | Prepare academic talks: analyze paper, draft scripts, inject slide notes, Q&A prep |
55
+ | **publish-skill** | Packaging | Convert a personal skill into an open-source distributable package |
56
+ | **calc-sample-size** | Statistics | Sample size calculation (11 tests including Cox EPV), power analysis, IRB justification text |
57
+ | **find-journal** | Submission | Journal recommendation based on abstract/scope matching, post-rejection re-targeting |
58
+ | **add-journal** | Journal DB | Add a new journal to the profile database; extracts metadata from author guidelines |
59
+ | **fulltext-retrieval** | Literature | Batch download open-access PDFs by DOI using Unpaywall, PMC, OpenAlex APIs |
60
+ | **deidentify** | Data safety | De-identify clinical data containing PHI before any LLM processing. Standalone Python CLI (no LLM). |
61
+ | **clean-data** | Data | Data profiling, missing value flagging, outlier detection, cleaning code generation |
62
+ | **generate-codebook** | Data | Generate a citable data dictionary/codebook from a dataset; flags coded variables as [NEEDS DICTIONARY]; feeds /define-variables |
63
+ | **version-dataset** | Data | Content-hash manifest of a dataset; verify drift (schema/rows/values) and diff versions; reproducibility lock |
64
+ | **write-protocol** | Protocol | IRB/ethics protocol drafting, 4 core sections + 6 skeleton sections with TODO markers |
65
+ | **define-variables** | Operationalization | Literature-grounded variable definitions, cutoffs, DB-variable mappings; prevents ad-hoc phenotype definitions; runs between `/search-lit` and `/write-protocol` for observational studies |
66
+ | **verify-refs** | Reference audit | Read-only PubMed/CrossRef audit of manuscript references; first-author cross-check; sole writer of `qc/reference_audit.json`. Audit boundary; never modifies refs |
67
+ | **manage-refs** | Reference lifecycle | Citekey validation, journal-CSL pandoc rendering, manuscript ↔ DOCX cross-reference QC, [N] ↔ [@key] marker conversion, Zotero CWYW field-code injection. Sole writer of `manuscript_final.docx`, `qc/xref_audit.json`. Pairs with `lit-sync` (refs.bib upstream) and `verify-refs` (audit) |
68
+ | **lit-sync** | Reference sync | Zotero collection ↔ Better BibTeX `manuscript/_src/refs.bib` ↔ Obsidian literature notes. Sole writer of refs.bib (auto-export); upstream of `manage-refs` |
69
+ | **humanize** | Quality | AI-pattern density sweep (<2.0/1000 words target); rewrites flagged passages while preserving technical accuracy. Phase 7.5 of write-paper |
70
+ | **academic-aio** | Visibility | AI-search-engine optimization for medical AI papers (Perplexity, ChatGPT web, Elicit, Consensus, SciSpace, RAG tools). Opt-in checklist; never auto-applies edits |
71
+ | **render-pdf-doc** | Document layout | Non-bibliography academic markdown → PDF (proposal, briefing, anchor doc, IRB cover, reference table). CJK font + content-proportional table column widths. Boundary opposite of `manage-refs scripts/render_pandoc.sh` |
72
+ | **fill-protocol** | Form filling | Institutional Word form filling (.doc/.docx) for IRB/ethics/grant templates. Pairs with `write-protocol` (content) — fill-protocol renders content into the institutional template |
73
+ | **fill-icmje-coi** | Form filling | Batch ICMJE COI Disclosure Form generation per author from a synthetic seed |
74
+ | **sync-submission** | Submission | SSOT-to-submission drift audit; journal-specific submission manifest creation from canonical manuscript artifacts |
75
+ | **peer-review** | Review | External manuscript peer review draft generation (journal-specific formatting). Use ONLY for reviewing other authors' work, never for self-review |
76
+
77
+ ---
78
+
79
+ ## Classification Logic
80
+
81
+ When the user's request arrives, classify it into one of these intents:
82
+
83
+ ### Single-skill requests (route directly)
84
+
85
+ | User says something like... | Route to |
86
+ |-----------------------------|----------|
87
+ | "Find papers about X" / "Search PubMed for X" | `/search-lit` |
88
+ | "Is my study design sound?" / "Check for data leakage" | `/design-study` |
89
+ | "I have a messy folder, help me organize" | `/intake-project` |
90
+ | "Set up a new project" / "Create project scaffold" | `/manage-project init` |
91
+ | "Run the statistics" / "Make Table 1" | `/analyze-stats` |
92
+ | "Create a forest plot" / "Make a PRISMA diagram" | `/make-figures` |
93
+ | "I'm doing a meta-analysis" / "Start systematic review" | `/meta-analysis` |
94
+ | "Write the methods section" / "Draft my paper" | `/write-paper` |
95
+ | "Review my manuscript before submission" | `/self-review` |
96
+ | "Brutally / harshly check before submission" / "top-tier journal final check" / "multi-reviewer / panel review" / "review it from stats, clinical, and imaging angles" / "혹독하게 제출 전 점검" | `/self-review --panel --json` |
97
+ | "Check STROBE compliance" / "Run reporting checklist" | `/check-reporting` |
98
+ | "I got reviewer comments" / "Help me respond to reviewers" | `/revise` |
99
+ | "Write a grant proposal" / "Structure my aims page" | `/grant-builder` |
100
+ | "Prepare a presentation" / "I have a journal club talk" | `/present-paper` |
101
+ | "Package this skill for distribution" | `/publish-skill` |
102
+ | "How many patients do I need?" / "Calculate sample size" / "Power analysis" | `/calc-sample-size` |
103
+ | "Which journal should I submit to?" / "Find a journal" / "I was rejected, where else?" | `/find-journal` |
104
+ | "Add a journal profile" / "저널 프로필 추가" | `/add-journal` |
105
+ | "Download PDFs" / "Get full texts" / "PDF 다운로드" | `/fulltext-retrieval` |
106
+ | "Visual abstract 만들어줘" / "Graphical abstract" / "GA 생성" | `/make-figures` |
107
+ | "Logistic regression" / "Propensity score" / "PSM" / "IPTW" / "Repeated measures" / "Mixed model" / "GEE" | `/analyze-stats` |
108
+ | "Clean my data" / "Check data quality" / "Profile my dataset" | `/clean-data` |
109
+ | "De-identify my data" / "Remove PHI" / "비식별화" / "익명화" / "Anonymize patient data" | `/deidentify` |
110
+ | "Write an IRB protocol" / "Draft ethics submission" / "Research protocol" | `/write-protocol` |
111
+ | "Define my variables" / "Justify cutoff" / "Phenotype definition" / "변수 정의 근거" / "ad-hoc 정의 피하기" | `/define-variables` |
112
+ | "Write a case report" / "I have an interesting case" | `/write-paper` (case-report mode) |
113
+ | "Generate a cover letter" / "Write cover letter for submission" | `/write-paper` (Phase 8+, requires completed manuscript) |
114
+ | "Verify references" / "Check citation hallucinations" / "Reference audit" | `/verify-refs` |
115
+ | "Sync submission" / "Retarget journal" / "Check SSOT drift" | `/sync-submission` |
116
+ | "Render manuscript to DOCX" / "Build final .docx" / "Cascade reformat references" / "Apply journal CSL" / "Re-render with Vancouver" / "회람용 docx" / "Zotero CWYW injection" | `/manage-refs` |
117
+ | "Sync Zotero" / "Refresh refs.bib" / "Better BibTeX export" / "Zotero ↔ Obsidian 동기화" / "literature note 만들어줘" | `/lit-sync` |
118
+ | "Render proposal to PDF" / "Anchor doc PDF" / "한글 학술 PDF" / "Briefing handout PDF" / "IRB cover PDF" / "non-bib markdown → PDF" | `/render-pdf-doc` |
119
+ | "Fill IRB protocol form" / "기관 양식 채워줘" / "심사면제 요청서 채움" / "동의면제 양식" | `/fill-protocol` |
120
+ | "ICMJE COI 양식 일괄 생성" / "공저자 COI 폼 만들기" / "Disclosure form batch" | `/fill-icmje-coi` |
121
+ | "AI search optimization" / "Perplexity-friendly abstract" / "RAG visibility" / "GEO checklist" / "Elicit/Consensus 노출" | `/academic-aio` |
122
+ | "Remove AI patterns" / "AI 티 제거" / "humanize this section" / "GPT 흔적 지워줘" | `/humanize` |
123
+ | "Review someone else's manuscript" / "Journal club critique draft" / "외부 논문 리뷰 답변" | `/peer-review` |
124
+
125
+ ### Multi-skill workflows (plan then execute sequentially)
126
+
127
+ The **Nodes** column lists decision forks that should be rendered in interactive mode
128
+ (see Workflow Execution — Dialogue Protocol). Nodes are numbered N1 – N9 per
129
+ `${SKILL_DIR}/references/dialogue_nodes.md`.
130
+
131
+ | Scenario | Skill chain | Nodes |
132
+ |----------|-------------|-------|
133
+ | **New project, no prior work** | `intake-project` -> `search-lit` -> `design-study` -> `manage-project init` | N1, N2 (if user wants manuscript output), N3 |
134
+ | **Data ready, need a paper** | `manage-project init` -> `analyze-stats` -> `make-figures` -> `write-paper` | N6 (PHI gate), N3, N4 (journal timing), N2 |
135
+ | **Draft exists, prepare for submission** | `self-review` -> `check-reporting` -> `verify-refs` -> `humanize` -> `academic-aio` (opt-in `--aio`) -> `manage-refs` (DOCX build + xref QC `--strict`) -> `manage-project checklist` | N4 (if not yet locked), N8 (only if self-review returns fatal) |
136
+ | **Submission rendering & cascade reformat** | `manage-refs` (Workflow A pandoc citeproc, or B Zotero CWYW) -> `manage-refs scripts/check_xref.py --strict` -> `verify-refs` -> `sync-submission build` | N10 (Workflow A vs B selection — see manage-refs SKILL.md decision tree) |
137
+ | **Cascade rejection re-target** | `find-journal` (exclude rejected) -> `manage-refs` (re-render with new CSL) -> `write-paper` Phase 8+ (new cover letter) -> `sync-submission build --journal {new}` | N4 |
138
+ | **Non-bibliography academic deliverable (proposal/briefing/anchor doc)** | `write-protocol` -> `fill-protocol` (institutional form available) ⫶ `render-pdf-doc` (markdown-only, no form) | N11 (form available vs not) |
139
+ | **Reference housekeeping cycle** | `lit-sync` (Zotero ↔ refs.bib auto-export) -> `manage-refs scripts/check_citation_keys.py` -> `verify-refs --strict` (first-author cross-check) | — |
140
+ | **ICMJE COI batch (multi-author submission)** | `fill-icmje-coi` (per-author docx generation from synthetic seed) -> manual circulation | — |
141
+ | **Medical-AI paper, AI-search visibility pass** | `self-review` -> `humanize` -> `academic-aio` (title, abstract, summary box, README / CITATION.cff / HF card) | N4, N9 (section entry for re-edit scope) |
142
+ | **Reviewer comments received** | `revise` -> `analyze-stats` (if new analyses needed) -> `make-figures` (if new figures needed) | N1 |
143
+ | **Meta-analysis from scratch** | `search-lit` -> `fulltext-retrieval` -> `meta-analysis` (handles its own pipeline internally) | N2 (MA type), N5 (synthesis scope) |
144
+ | **Grant writing** | `search-lit` -> `grant-builder` | N2 (option 5) |
145
+ | **Conference presentation** | `present-paper` (handles its own pipeline internally) | N1 |
146
+ | **New study, need IRB protocol** | `search-lit` -> `design-study` -> `calc-sample-size` -> `define-variables` -> `write-protocol` | N3, N2 (option 4 — protocol) |
147
+ | **Observational cohort study (retro/screening/registry)** | `intake-project` -> `design-study` -> `search-lit` -> `define-variables` -> `write-protocol` -> `analyze-stats` -> `write-paper` | N1, N2, N3 |
148
+ | **Data with PHI, need full pipeline** | `deidentify` -> `clean-data` -> `analyze-stats` -> `make-figures` -> `write-paper` | N6 (mandatory), N3, N4 |
149
+ | **Data ready, need cleaning first** | `clean-data` -> `analyze-stats` -> `make-figures` -> `write-paper` | N6, N3, N4 |
150
+ | **Full submission chain** | `write-paper` -> `self-review` -> `check-reporting` -> `find-journal` -> `write-paper` (Phase 8+ cover letter) -> `manage-project checklist` | N4, N8 (if recovery triggered), N9 (on re-entry) |
151
+ | **Post-rejection resubmission** | `find-journal` (exclude rejected journal) -> `write-paper` (Phase 8+ new cover letter) | N4 |
152
+ | **Case report pipeline** | `search-lit` (similar cases) -> `write-paper` (case-report mode) -> `self-review` -> `check-reporting` (CARE) -> `find-journal` | N2 (option 2), N4 |
153
+
154
+ **Panel mode (`/self-review --panel`) is opt-in, never automatic.** The submission chains above use single-pass `self-review`. Add `--panel` only for a deliberate high-stakes final pass (it spawns several reviewer agents plus an editor, so it costs several times more tokens); do not apply it by default, and do not auto-enable it in `--e2e` unless the user explicitly asks. A panel diagnoses and prioritizes, so keep it separate from the auto-fix loop — do not call `--panel` together with `--fix`.
155
+
156
+ ### Ambiguous requests (ask before routing)
157
+
158
+ If the intent is genuinely unclear, ask ONE clarifying question. Do not ask more than one question
159
+ at a time. Examples:
160
+
161
+ - "Help with my paper" -> Ask: "Do you want to start writing, review an existing draft, or respond to reviewer comments?"
162
+ - "What should I do next?" -> Check for `project_state.json` or `STATUS.md` in the working directory first. If found, read it and suggest the next logical step. If not found, ask what they're working on.
163
+
164
+ ---
165
+
166
+ ## Workflow Execution — Dialogue Protocol (interactive default)
167
+
168
+ Multi-skill orchestration uses an RPG-style decision-node protocol. At each major fork,
169
+ render a decision node (context, numbered options, per-option `unlocks` / `locks` /
170
+ `recovery_cost`), wait for the user to pick a number, then proceed. This replaces the
171
+ older "announce plan → shall I proceed?" pattern and prevents silent commitment to
172
+ paper type, study design, target journal, or recovery branch.
173
+
174
+ **When to load the node reference.** Load `${SKILL_DIR}/references/dialogue_nodes.md`
175
+ the first time the pipeline enters a decision fork in the current session. The
176
+ reference lists 9 primary nodes (N1 entry classification, N2 paper type, N3 study
177
+ design, N4 journal timing, N5 MA synthesis scope, N6 PHI gate, N7 autonomy flag,
178
+ N8 audit recovery branch, N9 section entry point) with rendering templates and
179
+ autonomous defaults. In `--autonomous` / `--e2e` mode do not load this reference —
180
+ apply each node's default and log the choice to `qc/_pipeline_log.md`.
181
+
182
+ **Per-fork execution sequence:**
183
+
184
+ 1. **Identify the node** that fits the current fork (see the Multi-Skill Workflows
185
+ table below for the scenario → node mapping).
186
+ 2. **Render the node** using the template in `dialogue_nodes.md` §"Rendering Template".
187
+ Keep the rendering under ~15 lines; surface `unlocks` / `locks` / `recovery_cost`
188
+ for each option; announce the autonomous default.
189
+ 3. **Wait for a numeric choice** (`1` / `2` / ...) or a control word (`back`, `pause`,
190
+ `skip`). One node at a time — never stack two nodes in the same turn.
191
+ 4. **Echo the lock.** Before invoking the downstream skill, confirm in one line what the
192
+ choice commits ("Locking: CARE reporting guideline; abstract = structured 250w.").
193
+ 5. **Invoke the downstream skill** matching the chosen option, then return to step 1
194
+ for the next fork or continue the chain.
195
+ 6. **Adapt on skill output.** If a skill's result invalidates a prior lock (e.g.,
196
+ `/self-review` surfaces a Step 7.4a trigger), route to the relevant recovery node
197
+ (N8) rather than continuing the current chain.
198
+
199
+ **One-question rule.** Never ask two clarifying questions in one turn. If the orchestrator
200
+ has no good inference, render the corresponding node and let the user pick.
201
+
202
+ **Interrupt-safe.** `back` re-enters the previous node. `pause` halts the pipeline and
203
+ returns control to the user. `skip` is only allowed for nodes whose `locks` scope
204
+ is empty (rare) — otherwise the orchestrator explains why skipping is not available.
205
+
206
+ ---
207
+
208
+ ## Full Pipeline Mode
209
+
210
+ When the user requests "run the full pipeline," "end-to-end," or similar, execute the complete research-to-manuscript chain.
211
+
212
+ ### `--e2e` Flag
213
+
214
+ #### Pre-flight Validation (run once at `--e2e` entry)
215
+
216
+ Before invoking any downstream skill in `--e2e` mode, run the following 4 checks.
217
+ A failure on any one halts the pipeline and is recorded to
218
+ `manuscript/<id>/REPORT.md` (see §"REPORT.md Generation") under
219
+ `Frozen / Version status` + `Source artifacts checked`.
220
+
221
+ 1. **STATUS / project_state**: read `STATUS.md` or `project_state.json` in the
222
+ working directory and confirm the current phase. If neither exists, halt with
223
+ `STATUS_MISSING` unless the user passes `--no-status`.
224
+ 2. **Frozen artifact**: scan `manuscript/<id>/v_*_package/`. If the latest `v_N`
225
+ carries a `_FROZEN` marker file or `INDEX.md::frozen=true`, this run is
226
+ restricted to a `v_(N+1)_package/` branch. Any attempt to write directly into
227
+ `v_N` halts with `FROZEN_VIOLATION` (see `~/.claude/rules/manuscript-versioning.md`).
228
+ 3. **Required inputs**: confirm input artifacts for the requested phase exist.
229
+ Examples: Phase 4 figure requires `analysis/_analysis_outputs.md`; Phase 7
230
+ self-review requires `manuscript/manuscript.md`. Missing → halt with
231
+ `REQUIRED_INPUT_MISSING: <path>`.
232
+ 4. **Dependency miss**: if the user requested phase `k` but a prior phase is
233
+ incomplete, halt with `DEPENDENCY_MISS: [Phase i, Phase j]` by default. Only
234
+ when the user explicitly passes `--auto-extend` may the orchestrator prepend
235
+ the missing phases and continue.
236
+
237
+ PHI Safety Gate (node N6) remains the only legitimate interrupt of an autonomous
238
+ run after pre-flight passes. All four pre-flight outcomes are written to REPORT
239
+ verbatim.
240
+
241
+ #### `--e2e` Pipeline Behavior
242
+
243
+ When `--e2e` is passed (or the user says "end-to-end", "Arm A", or "fully autonomous"):
244
+ 1. Set `--e2e` mode ON.
245
+ 2. Pass `--autonomous` to `/write-paper` when invoking it.
246
+ 3. Pass `--json` to `/self-review` and `/check-reporting` when invoking them.
247
+ 4. Skip all orchestrator-level confirmations ("Shall I proceed?") and do NOT render any
248
+ Dialogue Protocol nodes.
249
+ 5. For each node the pipeline would have rendered interactively, apply the node's
250
+ `default` and log the choice to `qc/_pipeline_log.md` as:
251
+ `[orchestrate] N{id}: defaulted to option {n} ({label}) — {autonomous_rationale}`.
252
+ 6. DO still respect data-safety gates (PHI Safety Gate / node N6): if PHI status is
253
+ unknown, HALT the autonomous run with a single prompt. PHI is the only node that
254
+ can interrupt autonomous mode.
255
+ 7. Audit Recovery (node N8): auto-invoke the routed recovery skill. If the route itself
256
+ fails validation twice, HALT with `RECOVERY_HALT_HUMAN_DECISION` in the log.
257
+ 8. AIO (academic-aio) is OFF by default in `--e2e`: AI-search-engine visibility work
258
+ is a pre-submission, not a pre-draft, concern — running it on every autonomous
259
+ iteration would be wasted tokens and would invite silent rewrites that violate the
260
+ skill's "never edit silently" contract. Enable it only when the user explicitly
261
+ adds `--aio` (or the pipeline is preparing a preprint / GitHub README / HF card
262
+ alongside submission). When enabled, schedule it after `/humanize` so the
263
+ checklist anchors on QC-confirmed and human-readable text, and surface the
264
+ PASS/PARTIAL/FAIL report to the user — never auto-apply its edits.
265
+ 9. After each skill completes, run post-skill validation (see below).
266
+
267
+ Without `--e2e`, the Dialogue Protocol is the default: render one node per fork, wait
268
+ for a numeric choice, echo the lock, invoke the skill, and respect write-paper's
269
+ built-in gates (outline approval, discussion planning).
270
+
271
+ ### Standard Pipeline: Data → Manuscript
272
+
273
+ 1. `/analyze-stats` → `analysis/tables/*.csv`, `analysis/figures/*`, `analysis/_analysis_outputs.md`, `analysis/analyze.py`
274
+ 2. `/make-figures --study-type {type}` → reads `analysis/_analysis_outputs.md` → `analysis/figures/*.pdf`, `analysis/figures/*.png`, `analysis/figures/_figure_manifest.md`
275
+ 3. `/write-paper --autonomous` (if --e2e) → reads analysis/ → `manuscript/manuscript.md` (DOCX rendering delegated to step 7)
276
+ - Phase 7.4 internally calls `/self-review --json --fix` → `qc/self_review.md`
277
+ 4. `/check-reporting` → reads `manuscript/manuscript.md` → `qc/reporting_checklist.md` (called within write-paper Phase 7, but orchestrator verifies output)
278
+ 5. `/verify-refs` → reads `manuscript/manuscript.md` → `qc/reference_audit.json` (sole output; row-level status in `records[]`)
279
+ 6. `/self-review --json --fix` → reads `manuscript/manuscript.md` → `qc/self_review.md` + auto-fix (called within write-paper Phase 7.4, but orchestrator verifies final output)
280
+ 7. `/manage-refs` (Workflow A pandoc citeproc, or B Zotero CWYW) → reads `manuscript/manuscript.md` + `manuscript/_src/refs.bib` → `manuscript/manuscript_final.docx` + `qc/xref_audit.json`. Submission gate: `check_xref.py --strict` must pass (no MISSING_DOCX / MISSING_BODY / MISMATCH).
281
+
282
+ ### Post-Skill Validation
283
+
284
+ After each skill completes, verify that expected output files exist. If validation fails, report the error and do NOT proceed to the next skill.
285
+
286
+ | Skill | Expected Outputs | Validation |
287
+ |-------|-----------------|------------|
288
+ | `/analyze-stats` | At least one file in `analysis/tables/*.csv` OR `analysis/_analysis_outputs.md` | Check file existence and non-empty |
289
+ | `/make-figures` | `analysis/figures/_figure_manifest.md` with at least 1 entry | Parse manifest, verify listed files exist |
290
+ | `/write-paper` | `manuscript/manuscript.md` (required), `manuscript/manuscript_final.docx` (required in --e2e) | Check file existence and non-empty |
291
+ | `/check-reporting` | `qc/reporting_checklist.md` or inline report | Check file existence |
292
+ | `/verify-refs` | `qc/reference_audit.json` (sole output) | Parse JSON; halt if `submission_safe == false` (i.e., `FABRICATED` / `MISMATCH` count > 0 OR `duplicate_findings[]` nonempty) |
293
+ | `/self-review` | Review report with JSON block (when --json) | Check JSON block is parseable. In `--panel` mode each issue may carry an additional optional `consensus` array plus R1/R2/R3 attribution annotations on the `M`/`m` comments — these are additive and backwards-compatible; accept them |
294
+ | `/manage-refs` | `manuscript/manuscript_final.docx`, `qc/xref_audit.json` | DOCX exists and non-empty; xref_audit.json has `submission_safe: true` (no P0 blocker rows) |
295
+ | `/lit-sync` | `manuscript/_src/refs.bib` (mtime updated), `references/zotero_collection.json` | refs.bib mtime newer than collection snapshot; `refs_bib_refreshed: true` in collection JSON |
296
+
297
+ **On validation failure:**
298
+ - Log the failure: which skill, which output was missing, any error messages.
299
+ - In `--e2e` mode: report the error in `qc/_pipeline_log.md` and STOP. Do not proceed to the next skill. Output: "Pipeline halted at {skill}: {missing output}. Check the skill's output and re-run."
300
+ - In interactive mode: report the error and ask the user how to proceed.
301
+
302
+ ### REPORT.md Generation
303
+
304
+ At the termination of every `--e2e` invocation — whether the pipeline completed,
305
+ halted at pre-flight, or halted on post-skill validation — the Worker MUST write
306
+ `manuscript/<id>/REPORT.md` using the template at
307
+ `${SKILL_DIR}/references/report_template.md`.
308
+
309
+ Rules:
310
+
311
+ - Copy all 11 sections from the template verbatim. Never delete a section. Empty
312
+ fields are filled with `(none)` or `(unknown)` — never omitted, never collapsed.
313
+ - The §"Pipeline log" entry is a 5-line summary of `qc/_pipeline_log.md` (Dialogue
314
+ node defaults applied, skill invocations, halt reason if any) — not a paste of
315
+ the full log.
316
+ - The §"Tier-3 Blocked Items" hook-vs-prompt-guard split is mandatory — see
317
+ §"Tier-3 Worker Guard" below.
318
+ - The §"Next safe command" line is the literal command the user can copy to
319
+ resume the next phase. Do not editorialize.
320
+ - REPORT.md is the single artifact the user reviews; every other QC output is
321
+ linked from it.
322
+
323
+ ### Tier-3 Worker Guard
324
+
325
+ The following actions are permanently forbidden inside `--e2e` autonomous flow.
326
+ On detection, the Worker halts the pipeline and records the attempt under
327
+ REPORT.md §"Tier-3 Blocked Items" as `tier3_pending: <command>`. Hook-confirmed
328
+ blocks and prompt-only blocks are listed separately so a future hook regression
329
+ cannot silently re-open a prompt-only block.
330
+
331
+ **Hook-confirmed (`~/.claude/hooks/tier3-confirm.sh` enforces)**:
332
+ - `gws gmail +send` / `+reply`
333
+ - YouTube upload
334
+
335
+ **Prompt / skill guard only (no hook coverage — Worker prompt enforces)**:
336
+ - `git push`, `gh pr create`
337
+ - MCP Gmail send, MCP Calendar send
338
+ - MCP GitHub create-pr
339
+ - `/sync-submission build` external publication paths
340
+ - Phase 8 submission DOCX auto-build / journal submission
341
+ - Senior mentor automatic email reply
342
+
343
+ `git commit` is allowed; a subsequent `git push` attempt halts. Circulation
344
+ emails are written via `gws-draft.py` to a Gmail Draft only — never sent.
345
+
346
+ Phase 8 (Post-E2E Journal Selection & Submission Prep, see §"Post-E2E" below)
347
+ is explicitly outside `--e2e` and requires explicit user invocation. The Tier-3
348
+ guard reinforces that boundary.
349
+
350
+ ### Data Flow Contract
351
+
352
+ | Skill | Reads | Writes |
353
+ |-------|-------|--------|
354
+ | deidentify | raw data with PHI (CSV/Excel) | `*_deidentified.*`, `mapping.json`, `audit_log.csv` |
355
+ | fulltext-retrieval | DOI list (CSV/text) | `pdfs/*.pdf`, retrieval report |
356
+ | analyze-stats | raw data (CSV/Excel) | analysis/tables/*.csv, analysis/figures/*, `analysis/_analysis_outputs.md` |
357
+ | make-figures | `analysis/_analysis_outputs.md`, data files | analysis/figures/*.pdf, analysis/figures/*.png, `analysis/figures/_figure_manifest.md` |
358
+ | write-paper | analysis/figures/, analysis/tables/, manifests, journal profile | manuscript/manuscript.md, manuscript/title_page.md (DOCX rendering now delegated to manage-refs) |
359
+ | check-reporting | manuscript/manuscript.md | qc/reporting_checklist.md |
360
+ | verify-refs | manuscript/manuscript.md or a bib input | qc/reference_audit.json (sole writer; see skills/verify-refs/SKILL.md §Output Contract) |
361
+ | self-review | manuscript/manuscript.md | qc/self_review.md (with JSON block) |
362
+ | lit-sync | Zotero collection (live), `manuscript/_src/refs.bib` (Better BibTeX auto-export) | `manuscript/_src/refs.bib` (refreshed), `references/zotero_collection.json`, Obsidian literature notes (sole writer of refs.bib) |
363
+ | manage-refs | manuscript/manuscript.md, manuscript/_src/refs.bib, n_to_zotero_key map (optional) | manuscript/manuscript_final.docx (or _cwyw.docx), qc/xref_audit.json (sole writer) |
364
+ | render-pdf-doc | non-bib markdown (proposal/briefing/anchor doc/IRB cover) | PDF (same dir, same stem) |
365
+ | fill-protocol | content markdown + institutional Word template (.doc/.docx) | filled `*.docx` preserving original styles, table layouts, fonts, geometry |
366
+ | fill-icmje-coi | author roster (JSON), seed `coi_disclosure.docx` (synthetic shipped) | per-author `coi_disclosure_{author}.docx` (Date, Name, Manuscript Title replaced) |
367
+ | sync-submission | manuscript/, qc/ artifacts, journal profile | submission/{journal}/manifest.md, drift report |
368
+ | peer-review | external manuscript (.docx/.pdf), journal scope | review draft (review.md) following the medical imaging peer-review guideline |
369
+
370
+ ### Rules
371
+ 1. After each skill completes, run post-skill validation before proceeding.
372
+ 2. Pass discovered file paths as context to the next skill.
373
+ 3. In `--e2e` mode: do NOT ask "shall I proceed?" between skills — proceed automatically after validation passes.
374
+ 4. Without `--e2e`: pause at write-paper's built-in gates (outline approval, discussion planning) and confirm between skills.
375
+ 5. If a skill fails or validation fails, report the error. In `--e2e` mode, halt the pipeline.
376
+
377
+ ### Post-E2E: Journal Selection & Submission Prep
378
+
379
+ After the E2E pipeline completes (or when the user requests journal targeting), the following
380
+ manual-trigger workflow is available:
381
+
382
+ 1. `/find-journal` → top 5 recommendations based on `manuscript/manuscript.md` abstract
383
+ 2. `/verify-refs` → block fabricated or mismatched references before packaging
384
+ 3. User selects a journal → create `submission/{journal_short}/` directory
385
+ 4. `/sync-submission build --journal {journal_short}` → create or refresh the derived manuscript package from the canonical manuscript
386
+ 5. Generate inside `submission/{journal_short}/`:
387
+ - `cover_letter.md`: via `/write-paper` Phase 8+
388
+ - `checklist.md`: journal-specific submission checklist
389
+ - `manuscript_final.docx`: reformatted for target journal (if format differs)
390
+ 6. `/peer-review` (journal scope-aware) → `submission/{journal_short}/peer_review.md`
391
+
392
+ This workflow is NOT part of `--e2e`. It requires user interaction (journal selection).
393
+
394
+ ---
395
+
396
+ ## PHI Safety Gate
397
+
398
+ Before routing to any data-handling skill (`clean-data`, `analyze-stats`, `make-figures`),
399
+ check if the data might contain PHI:
400
+
401
+ 1. If CSV/Excel files exist in the working directory AND no `*_deidentified.*` files exist:
402
+ Ask (in the user's preferred language): "Does the data contain patient identifiers (PHI)? (names, national ID / RRN, date of birth, contact details, etc.)"
403
+ - If yes → Route to `/deidentify` first, then continue to the originally requested skill
404
+ - If no → Proceed directly
405
+ - If already de-identified (user confirms or `*_deidentified.*` files exist) → Proceed directly
406
+
407
+ 2. De-identification is an INTERACTIVE process requiring the researcher's active participation.
408
+ Warn (in the user's preferred language): "De-identification requires the researcher's direct review. You must run the script in the terminal and verify each item."
409
+
410
+ 3. After deidentify completes, continue to the originally requested skill using the
411
+ `*_deidentified.*` output file.
412
+
413
+ ---
414
+
415
+ ## Context Detection
416
+
417
+ Before routing, check for context clues in the working directory:
418
+
419
+ | File found | Implies |
420
+ |------------|---------|
421
+ | `project_state.json` | Active managed project -- read it to determine current phase |
422
+ | `STATUS.md` | Project with status tracking -- read current stage and blockers |
423
+ | `PROJECT.md` | Project identity exists -- use for context |
424
+ | `CLAIMS.md` | Claims-to-results map exists -- writing is underway |
425
+ | `REVIEW_LOG.md` | Revision cycle -- likely needs `/revise` |
426
+ | `*.qmd` or `*.tex` files | Manuscript drafting in progress |
427
+ | `*.bib` files | References exist -- may need verification |
428
+ | `PRISMA_*.md` or `QUADAS*.md` | Meta-analysis or systematic review |
429
+ | Decision letter / reviewer PDF | Route to `/revise` |
430
+ | CSV/Excel data files without analysis scripts | Raw data may need cleaning -- suggest `/clean-data` first |
431
+ | `*_deidentified.*` or `audit_log.csv` | Data already de-identified -- skip PHI Safety Gate |
432
+ | `protocol_draft.md` | Protocol drafting in progress -- may need `/write-protocol` |
433
+ | `sample_size_*.csv` or `sample_size_*.R` | Sample size calculation done -- check if protocol or manuscript next |
434
+
435
+ ---
436
+
437
+ ## Guardrails
438
+
439
+ - **Never do the work yourself.** Your role is classification and routing, not execution.
440
+ - **Never invent a skill.** Only route to skills listed in the table above.
441
+ - **Never skip user confirmation** for multi-skill workflows.
442
+ - **One clarifying question max.** If you can make a reasonable inference, do so and confirm.
443
+ - **Respect existing state.** If a project scaffold exists, do not re-initialize it.
444
+
445
+ ---
446
+
447
+ ## Output Format
448
+
449
+ ### For single-skill routing:
450
+
451
+ ```
452
+ I'll route this to **{skill-name}** -- {one-line reason}.
453
+
454
+ Invoking `/skill-name`...
455
+ ```
456
+
457
+ Then invoke the skill.
458
+
459
+ ### For multi-skill workflows (Dialogue Protocol):
460
+
461
+ Render one decision node per fork. Do NOT stack a plain bullet list with "Shall I
462
+ proceed?" — use the node template. Example rendering:
463
+
464
+ ```
465
+ This looks like a {scenario} workflow. First fork:
466
+
467
+ ▸ N2 — Paper type (locks reporting guideline + abstract template)
468
+
469
+ Context: analysis outputs exist in analysis/; you want a manuscript.
470
+
471
+ Which kind of manuscript?
472
+
473
+ 1) Original article (STROBE / CONSORT / STARD per design)
474
+ unlocks: /write-paper locks: IMRAD, 300w abstract recovery: high
475
+ 2) Case report (CARE)
476
+ unlocks: /write-paper case-report mode locks: CARE checklist recovery: medium
477
+ 3) Systematic review / meta-analysis (PRISMA / PRISMA-DTA)
478
+ unlocks: /meta-analysis locks: protocol registration recovery: high
479
+ 4) Protocol (SPIRIT / PRISMA-P)
480
+ unlocks: /write-protocol locks: SPIRIT structure recovery: medium
481
+ 5) Grant proposal
482
+ unlocks: /grant-builder locks: internal only recovery: low
483
+
484
+ Pick 1–5, or type `back` / `pause`. (autonomous default: 1)
485
+ ```
486
+
487
+ After the user picks, echo the lock in one line and invoke the matched skill. Return
488
+ here for the next fork when the skill completes.
489
+
490
+ ### For ambiguous requests:
491
+
492
+ ```
493
+ I can help with that. To route you to the right tool, one quick question:
494
+ {single clarifying question}
495
+ ```
496
+
497
+ ## Anti-Hallucination
498
+
499
+ - **Never fabricate file paths, URLs, DOIs, or package names.** Verify existence before recommending.
500
+ - **Never invent journal metadata, impact factors, or submission policies** without verification at the journal's website.
501
+ - If a tool, package, or resource does not exist or you are unsure, say so explicitly rather than guessing.