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,162 @@
1
+ #!/usr/bin/env bash
2
+ # fill-protocol — environment setup
3
+ #
4
+ # Verifies and (optionally) installs the dependencies required by fill-protocol:
5
+ # - LibreOffice (only required for .doc → .docx conversion of legacy templates)
6
+ # - Python packages: docxtpl, python-docx, pyyaml
7
+ #
8
+ # Usage:
9
+ # bash setup.sh check # report what is/isn't installed, do nothing
10
+ # bash setup.sh install # install everything that's missing (asks before each step)
11
+ # bash setup.sh install --yes # install without prompting (for CI / Claude auto-install)
12
+ # bash setup.sh # equivalent to `check`
13
+
14
+ ACTION="${1:-check}"
15
+ AUTO_YES=false
16
+ [[ "${2:-}" == "--yes" ]] && AUTO_YES=true
17
+
18
+ # ---------- helpers ----------
19
+
20
+ prompt_yn() {
21
+ if $AUTO_YES; then return 0; fi
22
+ read -r -p "$1 [y/N] " answer
23
+ [[ "$answer" =~ ^[Yy]$ ]]
24
+ }
25
+
26
+ detect_os() {
27
+ case "$(uname -s)" in
28
+ Darwin) echo "macos" ;;
29
+ Linux)
30
+ if command -v apt-get >/dev/null 2>&1; then echo "debian"
31
+ elif command -v dnf >/dev/null 2>&1; then echo "fedora"
32
+ elif command -v pacman >/dev/null 2>&1; then echo "arch"
33
+ else echo "linux-unknown"; fi
34
+ ;;
35
+ *) echo "unsupported" ;;
36
+ esac
37
+ }
38
+
39
+ find_soffice() {
40
+ for path in \
41
+ "/Applications/LibreOffice.app/Contents/MacOS/soffice" \
42
+ "/usr/bin/soffice" \
43
+ "/opt/homebrew/bin/soffice"; do
44
+ if [[ -x "$path" ]]; then echo "$path"; return 0; fi
45
+ done
46
+ if command -v soffice >/dev/null 2>&1; then
47
+ command -v soffice; return 0
48
+ fi
49
+ return 1
50
+ }
51
+
52
+ # ---------- check ----------
53
+
54
+ OS=$(detect_os)
55
+ echo "Detected OS: $OS"
56
+ echo
57
+
58
+ # 1. LibreOffice
59
+ SOFFICE=$(find_soffice || true)
60
+ if [[ -n "$SOFFICE" ]]; then
61
+ VER=$("$SOFFICE" --version 2>&1 | head -1 || echo "?")
62
+ echo "✅ LibreOffice: $SOFFICE"
63
+ echo " $VER"
64
+ SOFFICE_OK=true
65
+ else
66
+ echo "❌ LibreOffice: not installed"
67
+ echo " (Only required for .doc → .docx conversion. .docx templates work without it.)"
68
+ SOFFICE_OK=false
69
+ fi
70
+
71
+ # 2. Python packages
72
+ PYBIN="${PYTHON:-python3}"
73
+ echo
74
+ echo "Python: $($PYBIN --version 2>&1)"
75
+
76
+ PY_MISSING=()
77
+ for pkg in docx docxtpl yaml; do
78
+ if $PYBIN -c "import $pkg" 2>/dev/null; then
79
+ echo "✅ $pkg"
80
+ else
81
+ echo "❌ $pkg"
82
+ PY_MISSING+=("$pkg")
83
+ fi
84
+ done
85
+
86
+ # Map import-name → pip-name (function form for bash 3.2 compatibility — macOS default)
87
+ pipname_for() {
88
+ case "$1" in
89
+ docx) echo "python-docx" ;;
90
+ docxtpl) echo "docxtpl" ;;
91
+ yaml) echo "pyyaml" ;;
92
+ *) echo "$1" ;;
93
+ esac
94
+ }
95
+
96
+ if [[ "$ACTION" == "check" ]]; then
97
+ echo
98
+ if $SOFFICE_OK && [[ ${#PY_MISSING[@]} -eq 0 ]]; then
99
+ echo "All dependencies present."
100
+ exit 0
101
+ else
102
+ echo "Run \`bash setup.sh install\` to install missing dependencies."
103
+ exit 1
104
+ fi
105
+ fi
106
+
107
+ # ---------- install ----------
108
+
109
+ if [[ "$ACTION" != "install" ]]; then
110
+ echo "Unknown action: $ACTION (use 'check' or 'install')"
111
+ exit 2
112
+ fi
113
+
114
+ # Install LibreOffice if missing
115
+ if ! $SOFFICE_OK; then
116
+ case "$OS" in
117
+ macos)
118
+ CMD="brew install --cask libreoffice"
119
+ ;;
120
+ debian)
121
+ CMD="sudo apt-get install -y libreoffice"
122
+ ;;
123
+ fedora)
124
+ CMD="sudo dnf install -y libreoffice"
125
+ ;;
126
+ arch)
127
+ CMD="sudo pacman -S --needed libreoffice-fresh"
128
+ ;;
129
+ *)
130
+ echo "❌ Cannot auto-install LibreOffice on $OS — install manually."
131
+ exit 3
132
+ ;;
133
+ esac
134
+ echo
135
+ echo "About to install LibreOffice (~700 MB):"
136
+ echo " $CMD"
137
+ if prompt_yn "Proceed?"; then
138
+ eval "$CMD"
139
+ else
140
+ echo "Skipped LibreOffice install."
141
+ fi
142
+ fi
143
+
144
+ # Install Python packages if missing
145
+ if [[ ${#PY_MISSING[@]} -gt 0 ]]; then
146
+ PIP_PKGS=""
147
+ for m in "${PY_MISSING[@]}"; do PIP_PKGS="$PIP_PKGS $(pipname_for "$m")"; done
148
+ PIP_CMD="$PYBIN -m pip install --user --break-system-packages$PIP_PKGS"
149
+ echo
150
+ echo "About to install Python packages:"
151
+ echo " $PIP_CMD"
152
+ if prompt_yn "Proceed?"; then
153
+ eval "$PIP_CMD"
154
+ else
155
+ echo "Skipped Python package install."
156
+ fi
157
+ fi
158
+
159
+ echo
160
+ echo "Re-running check…"
161
+ echo
162
+ exec bash "$0" check
@@ -0,0 +1,37 @@
1
+ schema_version: 2
2
+ name: fill-protocol
3
+ layer: A
4
+ owner_domain: form_filling
5
+
6
+ when_to_use: "Fill an institutional Word (.doc/.docx) template (IRB protocol, ethics application, grant form) while preserving styles, tables, fonts, and page geometry."
7
+ when_NOT_to_use: "Drafting the scientific content (use write-protocol); ICMJE COI forms (use fill-icmje-coi)."
8
+
9
+ inputs:
10
+ - "institutional Word template"
11
+ - "content mapping (fill_*.yaml)"
12
+ outputs:
13
+ - "filled .docx preserving the institutional template"
14
+ deterministic_scripts:
15
+ - scripts/fill_form.py
16
+ - scripts/inspect_template.py
17
+ - scripts/doc_to_docx.py
18
+ side_effects:
19
+ - writes_docx_forms
20
+ downstream_consumers:
21
+ - render-pdf-doc
22
+ forbidden_actions:
23
+ - rebuild_template_from_blank_document
24
+ - drop_template_styles_or_logos
25
+
26
+ # v2.1 quality card
27
+ purpose: "Render approved content into an institutional Word template without losing its layout, styles, or page geometry."
28
+ safety_boundaries:
29
+ - "Operates on the original template (never rebuilds from a blank Document, which strips logos/headers/styles)."
30
+ - "CJK eastAsia fonts and table cantSplit are enforced for Korean templates."
31
+ known_limitations:
32
+ - "Requires the institutional template file; cannot invent a missing one."
33
+ - "Content-controlled (SDT) fields may need manual handling in Word."
34
+ validation_commands:
35
+ - "confirm [MISS] count is 0 after fill"
36
+ - "soffice --headless --convert-to pdf for visual check"
37
+ evidence_surface: bundled_script
@@ -0,0 +1,309 @@
1
+ ---
2
+ name: find-cohort-gap
3
+ description: >
4
+ Research gap finder for longitudinal cohort databases. Profiles cohort strengths,
5
+ matches PI expertise, scans literature saturation, and outputs ranked topic proposals
6
+ with gap evidence. Works with any cohort: NHIS, UK Biobank, institutional EMR, health
7
+ checkup registries, or disease-specific registries.
8
+ triggers: cohort gap, research topic, DB 주제, 코호트 갭, gap analysis, 연구주제 찾기, find research gap, 주제 발굴
9
+ tools: Read, Write, Edit, Bash, Grep, Glob
10
+ model: opus
11
+ ---
12
+
13
+ # Find-Cohort-Gap Skill
14
+
15
+ You are assisting a medical researcher in systematically discovering novel, publishable
16
+ research topics from a cohort database. Your approach combines cohort variable profiling,
17
+ PI expertise matching, literature saturation scanning, and multi-pattern gap scoring to
18
+ produce ranked topic proposals with evidence of novelty.
19
+
20
+ This skill fills a gap that no existing tool addresses: **DB variables -> literature gap
21
+ -> research question**. Existing tools (PICO, FINER, SciSpace, Elicit) work from
22
+ literature to gaps. This skill works from the data outward.
23
+
24
+ ## Communication Rules
25
+
26
+ - Communicate with the user in their preferred language.
27
+ - All literature citations, variable names, and medical terminology in English.
28
+ - Be direct about weak topics — kill early, save time.
29
+
30
+ ## Key Directories
31
+
32
+ - **Output**: User-specified directory (default: current working directory)
33
+ - **References**: `${CLAUDE_SKILL_DIR}/references/` for templates and rubrics
34
+
35
+ ---
36
+
37
+ ## Phase 0: Cohort Intake
38
+
39
+ Collect cohort metadata. Use the template at `${CLAUDE_SKILL_DIR}/references/cohort_profile_template.md`.
40
+
41
+ Required information:
42
+ 1. **Cohort name and setting** (institution, country, population type)
43
+ 2. **Sample size** (N at baseline, N with follow-up)
44
+ 3. **Time span** (enrollment period, follow-up duration, measurement intervals)
45
+ 4. **Variable categories** (demographics, labs, imaging, questionnaires, medications, procedures)
46
+ 5. **Endpoints available** (mortality, cancer incidence, cardiovascular events, hospitalization)
47
+ 6. **Special strengths** (serial measurements, linkage to national registries, unique population)
48
+ 7. **Known limitations** (healthy volunteer bias, attrition, missing data patterns)
49
+ 8. **Existing publications** from this cohort (if known — to avoid duplication)
50
+
51
+ If the user provides a data dictionary file (Excel/CSV), read it to extract variable
52
+ categories and construct the variable cluster map automatically.
53
+
54
+ **Gate:** Present the cohort profile summary. Confirm before proceeding.
55
+
56
+ ---
57
+
58
+ ## Phase 1: PI/CA Profiling
59
+
60
+ Profile the intended PI or corresponding author to find topic-expertise alignment.
61
+
62
+ 1. **Search PubMed** for the PI's recent publications (last 5 years).
63
+ - Use `/search-lit` E-utilities: `bash "$EUTILS" search "AuthorLastName AuthorFirstInitial[Author]" 30`
64
+ - Extract top keyword clusters from titles/abstracts.
65
+ 2. **Identify specialty signals**:
66
+ - Academic society positions (president, board member, editor)
67
+ - Subspecialty focus areas
68
+ - Preferred journal tiers
69
+ 3. **Build a PI keyword map**: 5-10 keyword clusters ranked by publication frequency.
70
+
71
+ If no PI is specified, skip this phase and use variable clusters alone in Phase 2.
72
+
73
+ **Output:** PI profile card (name, affiliation, top keywords, society roles, preferred journals).
74
+
75
+ ---
76
+
77
+ ## Phase 2: Intersection Matrix
78
+
79
+ Cross cohort variable clusters with PI expertise to generate candidate topics.
80
+
81
+ ### Method
82
+
83
+ Create a matrix: rows = DB variable clusters, columns = PI keyword clusters.
84
+ Score each cell 0-3:
85
+ - **3**: PI has published in this exact intersection (direct match)
86
+ - **2**: PI's subspecialty covers this area (strong relevance)
87
+ - **1**: Tangential connection (possible but needs framing)
88
+ - **0**: No connection
89
+
90
+ ### Candidate Generation
91
+
92
+ 1. Extract all cells scoring 2-3 as primary candidates.
93
+ 2. For cells scoring 1, apply the **A-B substitution test**: "Has someone published
94
+ [this analysis] with [a different exposure/outcome] in a similar cohort?" If yes,
95
+ substituting the PI's specialty variable creates a viable candidate.
96
+ 3. Generate 20-40 candidate topic statements in PICO format:
97
+ - **P**: Population from the cohort
98
+ - **E**: Exposure/predictor variable(s)
99
+ - **C**: Comparison group
100
+ - **O**: Outcome (preferably hard endpoint)
101
+
102
+ ### Discipline Alignment Filter
103
+
104
+ Before advancing candidates to saturation scanning, apply a discipline filter:
105
+
106
+ - **Who is the intended first author?** Identify their department/specialty.
107
+ - **Does the primary exposure variable belong to that discipline?** The first
108
+ author's specialty must align with the study's core variable. For example:
109
+ - Radiology first author → imaging variable must be the primary exposure
110
+ - Cardiology first author → cardiac biomarker or ECG finding as exposure
111
+ - Neurology first author → neurological variable or brain imaging as exposure
112
+ - **Kill candidates where the primary exposure is outside the first author's
113
+ discipline.** A strong PI match alone is insufficient if the first author
114
+ cannot claim ownership of the core variable.
115
+
116
+ This filter prevents generating topics where the first author's contribution
117
+ is not defensible at the variable level.
118
+
119
+ **Gate:** Present the intersection matrix and top 20 candidates (post-discipline
120
+ filter). User selects 8-12 for saturation scanning.
121
+
122
+ ---
123
+
124
+ ## Phase 3: Literature Saturation Scan
125
+
126
+ For each selected candidate, determine how saturated the literature is.
127
+
128
+ ### Search Strategy
129
+
130
+ For each candidate:
131
+ 1. Build a PubMed query: `(exposure terms) AND (outcome terms) AND (cohort OR longitudinal OR prospective)`
132
+ 2. Execute search via `/search-lit` E-utilities.
133
+ 3. Count total results and classify:
134
+
135
+ | Grade | Count | Longitudinal? | Interpretation |
136
+ |-------|-------|---------------|----------------|
137
+ | **Blue Ocean** | 0-2 papers | N/A | First report possible. Verify the topic has audience interest. |
138
+ | **Green Field** | 3-10 papers, all cross-sectional | No longitudinal | **Optimal zone** — established interest, longitudinal gap wide open. |
139
+ | **Yellow** | 10-30 papers | Some longitudinal | Viable only with very specific angle (unique population, novel endpoint). |
140
+ | **Red** | 30+ papers or MA exists | Yes | Avoid unless doing NMA or using truly unique data. |
141
+
142
+ ### Critical Filter
143
+
144
+ For each candidate in Green/Yellow, ask: **"Has anyone published this with serial/repeated
145
+ measurements?"** If no — automatic upgrade by one grade.
146
+
147
+ ### "So What" Test
148
+
149
+ For each candidate, articulate 2-3 potential clinical implications of the findings.
150
+ If you cannot state why a clinician or policymaker would care about the result,
151
+ the topic fails regardless of gap score.
152
+
153
+ **Output:** Saturation table with grade, paper count, longitudinal gap status, and
154
+ "So What" statement for each candidate.
155
+
156
+ **Gate:** Present saturation results. User selects 3-5 finalists for deep scoring.
157
+
158
+ ---
159
+
160
+ ## Phase 4: 6-Pattern Scoring + Comparison Table
161
+
162
+ Apply the 6-Pattern framework to each finalist. Score each pattern 0 or 1.
163
+
164
+ ### 6 Patterns (Universal)
165
+
166
+ Read the detailed rubric at `${CLAUDE_SKILL_DIR}/references/pattern_scoring_rubric.md`.
167
+
168
+ | # | Pattern | Question | Score 1 if... |
169
+ |---|---------|----------|---------------|
170
+ | P1 | **Longitudinal Advantage** | Does the cohort's serial/repeated measurement structure create a clear edge over existing cross-sectional studies? | Cohort has 3+ timepoints for key variables AND no prior study used serial data for this topic. |
171
+ | P2 | **Endpoint Upgrade** | Can we escalate to a harder endpoint than existing studies? | Cohort links to mortality/cancer/CVD registries AND existing studies stop at surrogate endpoints. |
172
+ | P3 | **Cohort Uniqueness** | Is the cohort's population, scale, or setting distinctive? | Largest in this population, unique ethnic group, screening-based (no referral bias), or novel linkage. |
173
+ | P4 | **PI-Topic Alignment** | Does the PI's expertise and reputation strengthen this topic? | PI has society role or 5+ papers directly in this domain. Skip if no PI specified. |
174
+ | P5 | **Comparison Table Gaps** | Does the THIS STUDY column show 3+ differences vs existing papers? | Build comparison table (see below). 3+ checkmarks in THIS STUDY that are absent in all prior papers. |
175
+ | P6 | **Complementary Design** | Can this topic pair with another study from the same cohort? | Two studies using the same DB but different populations or complementary variables (e.g., viral vs non-viral). |
176
+
177
+ ### Comparison Table Construction
178
+
179
+ For each finalist, build a table comparing the top 3-5 existing papers against THIS STUDY:
180
+
181
+ ```
182
+ | Feature | Author1 (Year) | Author2 (Year) | Author3 (Year) | THIS STUDY |
183
+ |---------|----------------|----------------|----------------|------------|
184
+ | Design | Cross-sectional | Cohort (5yr) | Cross-sectional | Cohort (20yr) |
185
+ | N | 3,200 | 8,500 | 12,000 | ~200,000 |
186
+ | Serial data | No | No | No | Yes (avg 5 visits) |
187
+ | Hard endpoint | Surrogate | Surrogate | All-cause mortality | CVD + all-cause mortality |
188
+ | Population | Referral | General | Screening | Health checkup (no referral bias) |
189
+ | Ethnicity | Western | Western | Asian (Japan) | Asian (Korea) |
190
+ | Subgroup analysis | No | Age only | No | Age + sex + comorbidity |
191
+ ```
192
+
193
+ ### Score Interpretation
194
+
195
+ | Total Score | Recommendation |
196
+ |-------------|----------------|
197
+ | 5-6 | Top-tier journal target (Lancet sub, JACC, J Hepatol level) |
198
+ | 3-4 | Specialty journal target (solid publication) |
199
+ | 1-2 | Restructure or kill — find a stronger angle before proceeding |
200
+
201
+ **Gate:** Present scoring results and comparison tables. User approves final ranking.
202
+
203
+ ---
204
+
205
+ ## Phase 5: Feasibility Gate
206
+
207
+ For each scored finalist, verify practical feasibility.
208
+
209
+ ### Checks
210
+
211
+ 1. **Sample size adequacy**:
212
+ - Cox regression: minimum 10 events per predictor variable (EPV rule)
213
+ - Logistic regression: same EPV rule
214
+ - For large cohorts (N>100K): warn about p-value inflation — statistically
215
+ significant results are nearly guaranteed, so focus on **effect size thresholds**
216
+ (e.g., HR >1.2 or <0.8 for clinical relevance)
217
+ - Consider negative control strategy (EPCV) for very large samples
218
+
219
+ 2. **Missing data**:
220
+ - Key exposure variable: <20% missing acceptable
221
+ - Key outcome: <5% missing
222
+ - If serial data: assess attrition pattern (MCAR/MAR/MNAR)
223
+
224
+ 3. **Follow-up adequacy**:
225
+ - Outcome must have plausible latency within available follow-up
226
+ - Cancer outcomes: minimum 5 years
227
+ - CVD events: minimum 3 years
228
+ - Mortality: minimum 5 years
229
+
230
+ 4. **Operational definition**:
231
+ - Can the exposure be defined from available variables?
232
+ - For claims data: ICD codes alone = 40-60% accuracy. Require combination
233
+ strategy (diagnosis + prescription + visit frequency + special codes)
234
+ - Cross-check expected prevalence against known epidemiological data
235
+
236
+ 5. **IRB/ethics**:
237
+ - Is the data already IRB-approved for this type of analysis?
238
+ - Any additional approvals needed for data linkage?
239
+
240
+ 6. **Disease Novelty Bonus** (informational, not Go/No-Go):
241
+ - Idiopathic etiology or debated mechanism → higher journal interest
242
+ - Established mechanism → needs stronger methodological novelty
243
+
244
+ ### Decision
245
+
246
+ - **Go**: All checks pass.
247
+ - **Conditional Go**: Minor issues solvable (e.g., missing data manageable with imputation).
248
+ - **No-Go**: Fatal flaw (insufficient events, no valid endpoint, key variable unavailable).
249
+
250
+ **Output:** Feasibility report for each finalist with Go/Conditional/No-Go status.
251
+
252
+ ---
253
+
254
+ ## Phase 6: Output — Ranked Proposals + One-Pagers
255
+
256
+ Generate the final deliverables.
257
+
258
+ ### Ranked Summary Table
259
+
260
+ ```
261
+ | Rank | Topic (PICO) | Saturation | 6-Pattern Score | Feasibility | Target Journal | Timeline |
262
+ |------|--------------|------------|-----------------|-------------|----------------|----------|
263
+ | 1 | ... | Green (0 longitudinal) | 5/6 | Go | JACC | 6 months |
264
+ | 2 | ... | Green (1 longitudinal) | 4/6 | Go | Eur Heart J | 6 months |
265
+ | 3 | ... | Blue (0 papers) | 3/6 | Conditional | Radiology | 8 months |
266
+ ```
267
+
268
+ ### One-Pager for Each Finalist
269
+
270
+ Use the template at `${CLAUDE_SKILL_DIR}/references/onepager_template.md`.
271
+
272
+ Each one-pager includes:
273
+ 1. **Title**: Working title for the study
274
+ 2. **Background**: 3-4 sentences establishing the gap (with "Zero Papers" claim if applicable)
275
+ 3. **Comparison Table**: THIS STUDY vs existing papers
276
+ 4. **Objective**: Primary research question in PICO format
277
+ 5. **Methods Summary**: Study design, key variables, statistical approach
278
+ 6. **PI Role**: Why this PI is the right corresponding author
279
+ 7. **Target Journal**: With rationale (PI alignment, scope match, gap fit)
280
+ 8. **Timeline**: Realistic estimate (data preparation → analysis → drafting → submission)
281
+ 9. **6-Pattern Score Card**: Visual breakdown of each pattern
282
+
283
+ Save one-pagers as markdown files: `{output_dir}/gap_proposal_{rank}_{short_topic}.md`
284
+
285
+ ---
286
+
287
+ ## Skill Integration
288
+
289
+ | Phase | Calls to other skills |
290
+ |-------|----------------------|
291
+ | Phase 1 (PI profiling) | `/search-lit` E-utilities for PubMed author search |
292
+ | Phase 3 (Saturation scan) | `/search-lit` E-utilities for topic searches |
293
+ | Phase 4 (Comparison table) | `/search-lit` for retrieving paper metadata |
294
+ | **Downstream** | Output feeds into `/design-study` → `/write-paper` pipeline |
295
+
296
+ ## What This Skill Does NOT Do
297
+
298
+ - Does not perform the actual statistical analysis (use `/analyze-stats`)
299
+ - Does not write the full manuscript (use `/write-paper`)
300
+ - Does not validate study design (use `/design-study`)
301
+ - Does not generate references (use `/search-lit`)
302
+ - Does not make publication-ready figures (use `/make-figures`)
303
+
304
+ ## Anti-Hallucination
305
+
306
+ - **Never fabricate references.** All citations must be verified via `/search-lit` with confirmed DOI or PMID. Mark unverified references as `[UNVERIFIED - NEEDS MANUAL CHECK]`.
307
+ - **Never invent clinical definitions, diagnostic criteria, or guideline recommendations.** If uncertain, flag with `[VERIFY]` and ask the user.
308
+ - **Never fabricate numerical results** — compliance percentages, scores, effect sizes, or sample sizes must come from actual data or analysis output.
309
+ - If a reporting guideline item, journal policy, or clinical standard is uncertain, state the uncertainty rather than guessing.
@@ -0,0 +1,93 @@
1
+ # Cohort Profile Template
2
+
3
+ Fill in the sections below to describe the cohort database. This profile drives
4
+ the intersection matrix and feasibility checks.
5
+
6
+ ---
7
+
8
+ ## Basic Information
9
+
10
+ - **Cohort name:**
11
+ - **Institution/Organization:**
12
+ - **Country:**
13
+ - **Population type:** (general population / health checkup / disease registry / claims data / hospital EMR)
14
+ - **Enrollment period:** (e.g., 2002-2019)
15
+ - **Total N at baseline:**
16
+ - **N with follow-up data:**
17
+ - **Mean/median follow-up duration:**
18
+ - **Measurement intervals:** (e.g., annual, biennial, at-event)
19
+
20
+ ## Variable Categories
21
+
22
+ Check all that apply and list key variables in each category:
23
+
24
+ - [ ] **Demographics**: (age, sex, BMI, smoking, alcohol, exercise, income, education)
25
+ - [ ] **Laboratory**: (CBC, metabolic panel, lipid panel, liver function, kidney function, tumor markers, HbA1c, ...)
26
+ - [ ] **Imaging**: (chest X-ray, CT, ultrasound, DEXA, mammography, ...)
27
+ - [ ] **Questionnaires**: (PHQ-9, IPAQ, diet, sleep, quality of life, ...)
28
+ - [ ] **Vital signs**: (BP, heart rate, ...)
29
+ - [ ] **Anthropometry**: (height, weight, waist circumference, body composition, ...)
30
+ - [ ] **Medications**: (prescription records, drug categories, ...)
31
+ - [ ] **Procedures**: (surgery codes, intervention records, ...)
32
+ - [ ] **Diagnoses**: (ICD codes, physician diagnosis, ...)
33
+
34
+ ## Endpoints Available
35
+
36
+ Check all that apply:
37
+
38
+ - [ ] **All-cause mortality** (linkage to: ___)
39
+ - [ ] **Cause-specific mortality** (categories: ___)
40
+ - [ ] **Cancer incidence** (linkage to: ___)
41
+ - [ ] **Cardiovascular events** (definition: ___)
42
+ - [ ] **Hospitalization** (source: ___)
43
+ - [ ] **Disease incidence** (ICD-based / physician-confirmed / registry)
44
+ - [ ] **Other**: ___
45
+
46
+ ## Special Strengths
47
+
48
+ What makes this cohort unique? (check all that apply)
49
+
50
+ - [ ] **Serial measurements** (same variables measured repeatedly over time)
51
+ - [ ] **Large scale** (>100K participants)
52
+ - [ ] **Long follow-up** (>10 years)
53
+ - [ ] **National registry linkage** (mortality, cancer, insurance claims)
54
+ - [ ] **Screening-based** (no referral bias — general population health checkups)
55
+ - [ ] **Unique population** (ethnicity, occupation, geography not well-studied)
56
+ - [ ] **Rich phenotyping** (imaging + labs + questionnaires)
57
+ - [ ] **Biobank/genetic data available**
58
+ - [ ] **Other**: ___
59
+
60
+ ## Known Limitations
61
+
62
+ - [ ] **Healthy volunteer bias** (participants may be healthier than general population)
63
+ - [ ] **Attrition** (estimated dropout rate: ___%)
64
+ - [ ] **Missing data** (key variables with >20% missing: ___)
65
+ - [ ] **Limited demographics** (e.g., single sex, narrow age range, single institution)
66
+ - [ ] **Claims-only diagnoses** (no clinical validation of ICD codes)
67
+ - [ ] **No imaging data**
68
+ - [ ] **No medication data**
69
+ - [ ] **Other**: ___
70
+
71
+ ## Existing Publications
72
+
73
+ List known papers already published from this cohort (to avoid topic duplication):
74
+
75
+ 1. (Author, Year, Topic, Journal)
76
+ 2. ...
77
+
78
+ ## Data Access
79
+
80
+ - **IRB status:** (approved / needs application)
81
+ - **Access method:** (on-site analysis center / remote access / direct download)
82
+ - **Estimated turnaround:** (application to data receipt)
83
+ - **Cost:** (if applicable)
84
+
85
+ ---
86
+
87
+ ## Variable Cluster Map (Auto-generated)
88
+
89
+ If a data dictionary is provided, the skill will auto-generate clusters below:
90
+
91
+ | Cluster | Variables | Serial? | Endpoint Link? |
92
+ |---------|-----------|---------|----------------|
93
+ | (auto-filled) | | | |
@@ -0,0 +1,84 @@
1
+ # Research Topic Proposal — One-Pager
2
+
3
+ ## [Working Title]
4
+
5
+ **Rank:** #X of Y | **6-Pattern Score:** X/6 | **Saturation Grade:** Green Field
6
+ **Target Journal:** [Journal Name] | **Estimated Timeline:** X months
7
+
8
+ ---
9
+
10
+ ### Background
11
+
12
+ [3-4 sentences establishing the clinical problem, current evidence gaps, and why this
13
+ topic matters now. End with the "Zero Papers" claim if applicable: "To our knowledge,
14
+ no study has examined [specific gap] using serial measurements in a [population type]."]
15
+
16
+ ### Comparison Table
17
+
18
+ | Feature | Author1 (Year) | Author2 (Year) | Author3 (Year) | **THIS STUDY** |
19
+ |---------|----------------|----------------|----------------|----------------|
20
+ | Design | | | | |
21
+ | N | | | | |
22
+ | Serial data | | | | |
23
+ | Hard endpoint | | | | |
24
+ | Population | | | | |
25
+ | Ethnicity | | | | |
26
+ | Follow-up | | | | |
27
+ | Key gap | | | | |
28
+
29
+ **Unique differentiators: X** (minimum 3 required)
30
+
31
+ ### Objective
32
+
33
+ **Primary:** [PICO format research question]
34
+
35
+ **Secondary (optional):** [1-2 secondary questions]
36
+
37
+ ### Methods Summary
38
+
39
+ - **Study design:** Retrospective cohort study
40
+ - **Population:** [Inclusion/exclusion criteria]
41
+ - **Exposure:** [Key variable(s) and operational definition]
42
+ - **Outcome:** [Primary endpoint and ascertainment method]
43
+ - **Statistical approach:** [Key methods — Cox regression, trajectory analysis, etc.]
44
+ - **Sample size justification:** [N eligible, expected events, EPV ratio]
45
+
46
+ ### 6-Pattern Score Card
47
+
48
+ | Pattern | Status | Evidence |
49
+ |---------|--------|----------|
50
+ | P1 Longitudinal Advantage | [+/-] | [one-line justification] |
51
+ | P2 Endpoint Upgrade | [+/-] | [one-line justification] |
52
+ | P3 Cohort Uniqueness | [+/-] | [one-line justification] |
53
+ | P4 PI-Topic Alignment | [+/-] | [one-line justification] |
54
+ | P5 Comparison Table 3+ | [+/-] | [one-line justification] |
55
+ | P6 Complementary Design | [+/-] | [one-line justification] |
56
+
57
+ ### PI Role
58
+
59
+ **Corresponding Author:** [Name, Title, Affiliation]
60
+ **Relevance:** [Why this PI is the right CA — society role, expertise, journal connections]
61
+
62
+ ### Feasibility
63
+
64
+ - **Go / Conditional Go / No-Go**
65
+ - **Sample size:** N = X, expected events = Y, EPV = Z
66
+ - **Key variables:** Available / needs derivation / missing
67
+ - **IRB:** Covered / needs new application
68
+ - **Data access:** Ready / X weeks to obtain
69
+
70
+ ### Timeline
71
+
72
+ | Phase | Duration | Milestone |
73
+ |-------|----------|-----------|
74
+ | Data preparation | X weeks | Clean dataset, operational definitions |
75
+ | Analysis | X weeks | Primary + sensitivity analyses |
76
+ | Drafting | X weeks | Full manuscript |
77
+ | Internal review | X weeks | Co-author feedback |
78
+ | Submission | Target date | [Journal] |
79
+
80
+ ### Clinical Implications ("So What")
81
+
82
+ 1. [Implication for clinical practice]
83
+ 2. [Implication for screening/prevention policy]
84
+ 3. [Implication for future research directions]