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,135 @@
1
+ # Korean PHI Patterns
2
+
3
+ > Locale: Korean. This reference intentionally contains Korean — it documents the Korean PHI-detection patterns (the `kr` locale feature of `/deidentify`). See `docs/locale_inventory.md`.
4
+
5
+ Regex patterns and column-name dictionaries used by `deidentify.py`.
6
+ This file serves as documentation; the actual patterns are in the Python script.
7
+
8
+ ## Value-Level Regex Patterns
9
+
10
+ ### 주민등록번호 (Resident Registration Number)
11
+
12
+ ```
13
+ \d{6}-[1-4]\d{6}
14
+ ```
15
+
16
+ - Format: `YYMMDD-GNNNNNN`
17
+ - First 6 digits: birthdate (YYMMDD)
18
+ - 7th digit (G): gender + birth century (1=1900s male, 2=1900s female, 3=2000s male, 4=2000s female)
19
+ - Remaining 6: region code + serial + check digit
20
+ - Example: `850315-1234567`
21
+
22
+ ### 외국인등록번호 (Alien Registration Number)
23
+
24
+ ```
25
+ \d{6}-[5-8]\d{6}
26
+ ```
27
+
28
+ - Same format as 주민번호 but 7th digit is 5-8
29
+ - Covered by the same regex when expanded to `[1-8]`
30
+
31
+ ### 전화번호 — 휴대전화 (Mobile Phone)
32
+
33
+ ```
34
+ 01[016789]-?\d{3,4}-?\d{4}
35
+ ```
36
+
37
+ - Prefixes: 010, 011, 016, 017, 018, 019
38
+ - Dashes optional
39
+ - Examples: `010-1234-5678`, `01012345678`, `011-234-5678`
40
+
41
+ ### 전화번호 — 유선전화 (Landline)
42
+
43
+ ```
44
+ 0[2-6][0-9]{0,2}-?\d{3,4}-?\d{4}
45
+ ```
46
+
47
+ - Area codes: 02 (Seoul), 031-033 (Gyeonggi), 041-044 (Chungcheong), 051-055 (Gyeongsang), 061-064 (Jeolla/Jeju)
48
+ - Examples: `02-555-1234`, `031-765-4321`, `051-234-5678`
49
+
50
+ ### 이메일 (Email)
51
+
52
+ ```
53
+ [A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}
54
+ ```
55
+
56
+ - Standard email pattern
57
+ - Common Korean domains: naver.com, daum.net, hanmail.net, kakao.com
58
+
59
+ ### 날짜 (Date)
60
+
61
+ ISO format:
62
+ ```
63
+ (19|20)\d{2}[-/.](0[1-9]|1[0-2])[-/.](0[1-9]|[12]\d|3[01])
64
+ ```
65
+
66
+ Korean format:
67
+ ```
68
+ (19|20)\d{2}년\s*(0?[1-9]|1[0-2])월\s*(0?[1-9]|[12]\d|3[01])일
69
+ ```
70
+
71
+ Short (YYMMDD):
72
+ ```
73
+ ([5-9]\d|0[0-4])(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])
74
+ ```
75
+
76
+ ### 주소 (Address)
77
+
78
+ Korean address suffix pattern:
79
+ ```
80
+ (특별시|광역시|특별자치시|특별자치도|도\s|시\s|군\s|구\s|읍\s|면\s|동\s|리\s|로\s|길\s)
81
+ ```
82
+
83
+ - Matches administrative divisions that appear in Korean addresses
84
+ - Detection threshold: >30% of values in a column contain these patterns
85
+
86
+ ### 한국인 이름 (Korean Name)
87
+
88
+ ```
89
+ [\uAC00-\uD7AF]{2,4}
90
+ ```
91
+
92
+ - 2 to 4 Hangul syllable characters
93
+ - **CRITICAL**: Only applied to columns identified as name-type by column name
94
+ - Common Korean words (정상, 양성, 음성, etc.) also match this pattern
95
+ - False positive mitigation: match against column name hints only
96
+
97
+ ## Column Name Dictionary
98
+
99
+ ### Name-type columns
100
+ `환자명`, `성명`, `이름`, `성함`, `patient_name`, `patientname`, `pt_name`, `name`,
101
+ `first_name`, `last_name`
102
+
103
+ ### RRN-type columns
104
+ `주민번호`, `주민등록번호`, `ssn`, `social_security`
105
+
106
+ ### Date-type columns
107
+ `생년월일`, `생년`, `출생일`, `dob`, `date_of_birth`, `birth_date`, `birthdate`
108
+
109
+ ### Phone-type columns
110
+ `전화번호`, `연락처`, `핸드폰`, `휴대폰`, `휴대전화`, `자택전화`,
111
+ `phone`, `telephone`, `mobile`, `phone_number`, `cell`
112
+
113
+ ### Address-type columns
114
+ `주소`, `자택주소`, `거주지`, `address`, `home_address`, `street`,
115
+ `zip`, `zipcode`, `zip_code`
116
+
117
+ ### Email-type columns
118
+ `이메일`, `email`, `email_address`
119
+
120
+ ### ID-type columns
121
+ `차트번호`, `등록번호`, `환자번호`, `의무기록번호`, `원무번호`,
122
+ `mrn`, `medical_record`, `chart_no`, `patient_id`, `patientid`,
123
+ `chart_number`, `record_number`, `hospital_id`
124
+
125
+ ### Insurance-type columns
126
+ `보험번호`, `insurance_no`, `insurance_number`
127
+
128
+ ## High-Cardinality Numeric Detection
129
+
130
+ Columns not matching any name pattern but containing:
131
+ - >90% pure numeric values (digits only)
132
+ - Length >= 5 digits
133
+ - >80% unique values
134
+
135
+ These are flagged as potential MRN/chart numbers for researcher review.
@@ -0,0 +1,43 @@
1
+ schema_version: 2
2
+ name: deidentify
3
+ layer: A
4
+ owner_domain: data_preparation
5
+
6
+ when_to_use: "De-identify clinical CSV/TSV/Excel data locally before any LLM-assisted analysis."
7
+ when_NOT_to_use: "General data cleaning or type fixing (use clean-data). Never to have the agent itself read, paste, or process raw PHI."
8
+
9
+ inputs:
10
+ - path: "raw clinical data file (CSV / TSV / XLSX)"
11
+ schema: csv
12
+ required: true
13
+ outputs:
14
+ - path: "de-identified data file"
15
+ - path: "scan report (column classifications, no raw values)"
16
+ - path: "audit log (SHA-256 hashes only)"
17
+
18
+ deterministic_scripts:
19
+ - deidentify.py
20
+ side_effects:
21
+ - writes_deidentified_data
22
+ - runs_locally_no_network
23
+ downstream_consumers:
24
+ - clean-data
25
+ - analyze-stats
26
+ forbidden_actions:
27
+ - read_raw_phi
28
+ - display_mapping_file
29
+ - send_phi_to_llm
30
+
31
+ # v2.1 quality card
32
+ purpose: "Detect and remove PHI from clinical tabular data with a local-only CLI, so downstream LLM analysis never touches raw identifiers."
33
+ safety_boundaries:
34
+ - "The agent never sees raw PHI; de-identification runs in a standalone local script with no network or AI calls."
35
+ - "Never reads or displays the re-identification mapping file (it holds original PHI values)."
36
+ - "Only the scan report (no raw values), the hash-only audit log, and the de-identified output may be read."
37
+ known_limitations:
38
+ - "Regex and heuristic detection across 10 country locale packs is not a substitute for expert disclosure review or an IRB determination."
39
+ - "PHI coverage is limited to the bundled locale packs (kr, us, jp, cn, de, uk, fr, ca, au, in)."
40
+ validation_commands:
41
+ - "python deidentify.py scan <file> --locale <code> # review column classifications before stripping"
42
+ - "inspect the SHA-256 audit log after a full run"
43
+ evidence_surface: bundled_script
@@ -0,0 +1,26 @@
1
+ # Deidentify Test Fixtures
2
+
3
+ All CSV files in this directory contain **synthetic test data only**.
4
+ No real patient or person is represented.
5
+
6
+ - **Names** (`김철수`, `이영희`, `박민수`, etc.) are common Korean placeholder
7
+ names equivalent to "John Doe" / "Jane Doe" in English. They were chosen
8
+ precisely because they are generic enough to be unattributable to any
9
+ real individual.
10
+ - **RRN (주민번호)** values follow the public format specification but the
11
+ digits are arbitrary and do not validate against the official checksum
12
+ algorithm used by the Korean civil registry.
13
+ - **Phone numbers**, **addresses**, **emails**, **chart numbers**, and
14
+ **diagnoses** are all constructed for the purpose of exercising the
15
+ PHI detector regexes shipped with `/deidentify`.
16
+
17
+ These fixtures exist to verify that the de-identifier:
18
+ 1. Detects the PHI patterns the skill claims to detect.
19
+ 2. Leaves non-PHI fields (clinical measurements, dates of routine
20
+ nature) untouched.
21
+ 3. Handles edge cases (mixed date formats, half-width vs full-width
22
+ digits, comma vs newline separators, missing fields).
23
+
24
+ If you need to add a new fixture, follow the same rule: every value must
25
+ be either a published format example or a constructed synthetic string.
26
+ Never copy real EMR data into this directory, even for one-off debugging.
@@ -0,0 +1,16 @@
1
+ sample_id,measurement_a,measurement_b,category,score,group,result
2
+ S001,45.2,12.3,A,78,control,positive
3
+ S002,38.7,15.6,B,82,treatment,negative
4
+ S003,52.1,9.8,A,91,control,positive
5
+ S004,41.5,11.2,C,67,treatment,negative
6
+ S005,36.9,14.7,B,73,control,positive
7
+ S006,48.3,10.5,A,85,treatment,positive
8
+ S007,39.6,13.1,C,69,control,negative
9
+ S008,55.0,8.9,B,94,treatment,positive
10
+ S009,42.8,12.0,A,76,control,negative
11
+ S010,37.4,16.2,C,88,treatment,positive
12
+ S011,50.5,11.8,A,71,control,negative
13
+ S012,44.1,13.5,B,83,treatment,positive
14
+ S013,46.7,10.1,C,79,control,positive
15
+ S014,40.2,14.0,A,86,treatment,negative
16
+ S015,53.8,9.3,B,92,control,positive
@@ -0,0 +1,11 @@
1
+ col_a,col_b,비고,숫자값,빈컬럼,긴한글단어
2
+ 값1,123,,45.6,,대한민국
3
+ ,456,일반 메모,78.9,,
4
+ 값3,,환자 김철수 연락처 010-1234-5678,12.3,,서울특별시강남구테헤란로
5
+ 값4,789,"콤마, 포함 값",0,,
6
+ ,,,,,
7
+ 값6,012,정상 소견,99.9,,가나다라마바사아자차카타파하
8
+ 값7,345,2024년 3월 15일 검사,55.5,,
9
+ 값8,678,,33.3,,AB
10
+ 값9,901,"따옴표 ""포함"" 값",77.7,,정상
11
+ 값10,234,특이사항 없음,44.4,,대한외과학회
@@ -0,0 +1,11 @@
1
+ 환자명,주민번호,전화번호,생년월일,주소,이메일,차트번호,진단,측정값,비고
2
+ 김철수,850315-1234567,010-1234-5678,1985-03-15,서울특별시 강남구 테헤란로 123,chulsu@example.com,12345678,위암,45.2,정기검진
3
+ 이영희,901220-2345678,010-9876-5432,1990-12-20,부산광역시 해운대구 우동 456,yhlee@test.kr,23456789,유방암,38.7,
4
+ 박민수,780505-1567890,02-555-1234,1978-05-05,대구광역시 수성구 범어동 789-12,minsoo.park@hospital.org,34567890,폐결절,12.3,재검 필요
5
+ 정미영,880101-2678901,010-5555-9999,1988년 1월 1일,인천광역시 남동구 구월동 321,miyoung@naver.com,45678901,정상,67.8,
6
+ 최준호,950730-1789012,051-234-5678,1995.07.30,광주광역시 서구 화정동 654,junho.choi@gmail.com,56789012,고혈압,120.5,약물 복용 중
7
+ 홍길동,700101-1890123,010-1111-2222,1970-01-01,경기도 성남시 분당구 판교로 100,gildong@daum.net,67890123,당뇨,200.3,합병증 주의
8
+ 강수현,920415-2901234,010-3333-4444,1992.04.15,세종특별자치시 아름동 555,suhyun.kang@outlook.com,78901234,갑상선결절,2.1,
9
+ 윤대한,830620-1012345,031-765-4321,1983-06-20,충청남도 천안시 동남구 신방동 888,daehan@company.co.kr,89012345,정상,55.0,건강
10
+ 임소연,960808-2123456,010-7777-8888,1996년 8월 8일,전라북도 전주시 완산구 효자동 222,soyeon.lim@yonsei.ac.kr,90123456,빈혈,8.5,추적검사
11
+ 한지민,750225-2234567,042-333-9876,1975-02-25,제주특별자치도 제주시 연동 777,jimin.han@korea.ac.kr,01234567,대장용종,15.0,내시경 추적
@@ -0,0 +1,214 @@
1
+ ---
2
+ name: design-ai-benchmarking
3
+ description: >
4
+ Design and validity review for studies that benchmark one or more AI systems against a human-expert
5
+ panel as the reference. Covers the evaluation question and arm definition, decoupled multi-dimensional
6
+ rubrics with anchors, planted calibration probes, reviewer-panel construction, inter-rater reliability
7
+ targets, LLM-as-judge versus human-as-judge adjudication, construct-independence guards, and a
8
+ structured rating-export schema. Use before data collection on an AI-vs-expert evaluation.
9
+ triggers: AI benchmarking, AI vs human expert, reader study design, expert panel evaluation, LLM-as-judge, AI evaluation rubric, model benchmark design, human baseline comparison, AI-output rating, evaluation rubric design
10
+ tools: Read, Write, Edit, Bash, Grep, Glob
11
+ model: inherit
12
+ ---
13
+
14
+ # Design-AI-Benchmarking Skill
15
+
16
+ ## Purpose
17
+
18
+ This skill pressure-tests an AI-vs-human-expert benchmark **before any ratings are collected**, so that
19
+ the comparison is fair, the rubric measures distinct constructs, the scale is calibrated, and the
20
+ reported reliability is interpretable. It is the AI-evaluation specialization of `/design-study`: where
21
+ `/design-study` reviews a study in general, this skill owns the specific machinery of comparing AI
22
+ system(s) to a panel of human experts (or to each other) on rated outputs.
23
+
24
+ Use it when:
25
+ - one or more AI systems will be scored against a human-expert reference (reader study, annotation
26
+ panel, AI-output evaluation, model-vs-model bench)
27
+ - a rubric and rating protocol must be locked before reviewers begin
28
+ - a benchmark feels vulnerable to "the highest score is just the most tautological item" or
29
+ "low agreement, but we cannot tell why" criticism
30
+ - a reviewer or editor asks how the evaluation controlled for rater drift, leakage, or judge bias
31
+
32
+ Do **not** use it for: general study/validity review (use `/design-study`); statistical execution such
33
+ as ICC or DeLong (use `/analyze-stats`); reporting-guideline item audits (use `/check-reporting`);
34
+ or reviewing an already-written manuscript (use `/peer-review` or `/self-review`).
35
+
36
+ ---
37
+
38
+ ## Communication Rules
39
+
40
+ - Communicate with the user in their preferred language.
41
+ - Use English for statistical, machine-learning, and reporting-guideline terminology.
42
+ - Be direct about evaluation-validity risks, but always propose the smallest feasible fix first.
43
+ - Never invent reviewer ratings, reference labels, or agreement statistics; those come from collected
44
+ data only.
45
+
46
+ ---
47
+
48
+ ## Standard Output
49
+
50
+ ```text
51
+ ## AI-Benchmark Design Review
52
+ Evaluation question: ...
53
+ Arms / systems compared: ...
54
+ Reference (human-expert panel): ...
55
+ Unit of rating: (item / case / output)
56
+
57
+ ### Rubric (decoupled dimensions)
58
+ - dimension -> construct -> anchors (1..k)
59
+
60
+ ### Calibration probes (blinded, randomized)
61
+ - positive-control / known-bad / instability / mechanism-contradiction
62
+
63
+ ### Reviewer panel
64
+ - n reviewers, metadata captured, per-reviewer randomized order
65
+
66
+ ### Reliability plan
67
+ - overall IRR target + control-item IRR (reported separately)
68
+
69
+ ### Judge strategy
70
+ - human-as-judge / LLM-as-judge / both + adjudication rule
71
+
72
+ ### Validity risks
73
+ 1. ...
74
+
75
+ ### Minimal fixes
76
+ - ...
77
+
78
+ ### Decision
79
+ - Ready to collect / Needs rubric revision / Needs arm or judge redesign
80
+ ```
81
+
82
+ ---
83
+
84
+ ## Workflow
85
+
86
+ ### Phase 1: Define the evaluation question and arms
87
+
88
+ Pin down, in writing:
89
+ - the exact claim the benchmark must support (e.g., "system A's outputs are perceptually
90
+ indistinguishable from expert outputs", not "system A is deployment-ready")
91
+ - every arm/system being compared, and what each arm receives as input (same items, same information
92
+ access, same output format) so no arm has a hidden advantage
93
+ - the human-expert reference: who they are, and whether they set ground truth, provide a comparison
94
+ arm, or both
95
+ - the unit of rating (item, case, output) and how many units each reviewer sees
96
+
97
+ **Gate:** Present the reconstructed evaluation question, arms, and reference to the user and confirm
98
+ before designing the rubric. A wrong reconstruction misdirects the entire benchmark.
99
+
100
+ ### Phase 2: Design a decoupled multi-dimensional rubric
101
+
102
+ - **Decouple the axes.** Each rated dimension measures one construct. Keep "is the output valid/correct"
103
+ separate from "is it novel", "is it feasible/measurable", "does it add value over current tools", and
104
+ "would it change action". A candidate can be high-validity yet low-added-value ("real but redundant");
105
+ a single blended score hides this divergence.
106
+ - **Anchor every scale point** with a short verbal descriptor; pilot the anchors with at least one
107
+ reviewer before locking.
108
+ - **Pre-specify discriminant validity**: hypothesize which dimensions should correlate vs be orthogonal,
109
+ then report the full inter-dimension correlation matrix to confirm the rubric measures distinct
110
+ constructs.
111
+ - A worked rubric template lives in `${CLAUDE_SKILL_DIR}/references/elicitation_rubric_template.md`.
112
+
113
+ ### Phase 3: Insert and randomize calibration probes
114
+
115
+ Plant a small number of deliberate control items, blinded and randomized across raters (record who
116
+ received which via a `probe_arm` flag), to (i) anchor the scale, (ii) measure rater drift/fatigue, and
117
+ (iii) audit the rubric and pipeline itself. Four useful flavors:
118
+ - **Positive control / "too-good" item** — a known-strong or near-tautological item; tests whether
119
+ raters equate "largest effect" with "best", and whether the construct-independence gate (Phase 7) works.
120
+ - **Known-bad negative control** — an engineered defect (fabricated reference, missing key statistic);
121
+ expected to score low.
122
+ - **Instability item** — an estimate that reverses or fails to replicate on a holdout; tests
123
+ caveat-handling.
124
+ - **Mechanism-contradiction item** — an empirical direction that opposes the proposed mechanism.
125
+
126
+ Probes are *planted or adjudicated*, never fabricated to fit a hypothesis.
127
+
128
+ ### Phase 4: Construct the reviewer panel
129
+
130
+ - Recruit reviewers spanning the intended expertise gradient; pre-specify any expertise stratification.
131
+ - Capture reviewer metadata (years of experience, prior AI-evaluation experience, subspecialty) for
132
+ descriptive reporting and stratified analysis.
133
+ - Randomize item order **per reviewer** (not one global seed) and record the order; plan to analyze
134
+ order and fatigue effects.
135
+ - Require each item to be judged standalone; discourage cross-item references in free-text, which signal
136
+ non-independent rating.
137
+
138
+ **Gate:** Present the panel composition, stratification, and randomization plan for user review before
139
+ recruitment is finalized.
140
+
141
+ ### Phase 5: Set inter-rater reliability targets
142
+
143
+ - Pre-specify the agreement statistic (e.g., ICC for continuous ratings, weighted kappa for ordinal)
144
+ and a target with justification.
145
+ - **Report reliability on the planted control items separately** as primary evidence of rubric and
146
+ scale validity. A low overall ICC is interpretable only if raters at least converge on the controls;
147
+ surfacing both numbers prevents "low agreement => bad rubric" or "bad raters" misreads.
148
+ - Plan the minimum ratings-per-item needed for a stable agreement estimate (delegate the math to
149
+ `/analyze-stats`).
150
+
151
+ ### Phase 6: Choose the judge strategy and adjudication
152
+
153
+ - Decide human-as-judge, LLM-as-judge, or both. If an LLM is used as a judge, treat it as one more arm
154
+ whose ratings must themselves be validated against the human panel on the control items.
155
+ - Pre-specify the **adjudication rule** for disagreement (e.g., majority, a third senior reviewer,
156
+ consensus discussion) and who adjudicates.
157
+ - Blind judges to arm identity wherever feasible; record any unavoidable unblinding.
158
+
159
+ ### Phase 7: Construct-independence and leakage guards
160
+
161
+ - Exclude any predictor or input that is a definitional component of the outcome (mathematical
162
+ definition), and flag near-tautological composites built from the outcome's defining components — they
163
+ produce an inflated, near-circular result and belong as labeled probes, not discoveries.
164
+ - Verify no arm sees post-decision or outcome-derived information the others do not.
165
+ - Confirm the reference labels were not derived from the same model output being evaluated.
166
+
167
+ ### Phase 8: Lock a structured export schema
168
+
169
+ Define the machine-readable rating record up front: per-item ratings across every rubric dimension,
170
+ free-text justifications, follow-up flags, the `probe_arm` flag, reviewer id and metadata, item order,
171
+ and timing. A synthetic schema lives in `${CLAUDE_SKILL_DIR}/references/benchmark_export_schema.json`.
172
+
173
+ **Gate:** Present the final rubric, probe set, panel plan, judge strategy, and export schema together;
174
+ collect explicit user approval before any rating begins. Locking these before data collection is the
175
+ whole point — changes afterward compromise the comparison.
176
+
177
+ ---
178
+
179
+ ## Handoff Rules
180
+
181
+ - route to `/analyze-stats` for ICC / weighted kappa / DeLong, agreement sample size, and effect-size
182
+ real-world translation of the benchmark results
183
+ - route to `/check-reporting` for STARD-AI, CLAIM, or TRIPOD+AI item-level reporting once the design is locked
184
+ - route to `/design-study` when the broader study around the benchmark (cohort logic, analysis unit,
185
+ comparator) also needs review
186
+ - route to `/peer-review` or `/self-review` only after ratings exist and a manuscript is being assessed
187
+
188
+ ---
189
+
190
+ ## What This Skill Does NOT Do
191
+
192
+ - It does not compute agreement statistics or run analyses directly (that is `/analyze-stats`).
193
+ - It does not collect or fabricate ratings, reference labels, or probe outcomes.
194
+ - It does not draft manuscript prose or run a reporting-guideline audit.
195
+ - It does not replace a full peer review of a finished manuscript.
196
+
197
+ ## Anti-Hallucination
198
+
199
+ - **Never fabricate references.** All citations must be verified via `/search-lit` with a confirmed DOI
200
+ or PMID. Mark unverified references as `[UNVERIFIED - NEEDS MANUAL CHECK]`.
201
+ - **Never invent reviewer ratings, agreement statistics, reference labels, or probe outcomes** — these
202
+ come from collected data only. A reported ICC, kappa, or score with no underlying rating record is the
203
+ failure mode this skill exists to prevent.
204
+ - **Never invent clinical definitions, diagnostic criteria, or guideline recommendations.** If uncertain,
205
+ flag with `[VERIFY]` and ask the user.
206
+ - If a reporting-guideline item, journal policy, or evaluation standard is uncertain, state the
207
+ uncertainty rather than guessing.
208
+
209
+ ## Reference Files
210
+
211
+ - `${CLAUDE_SKILL_DIR}/references/elicitation_rubric_template.md` -- a synthetic, decoupled
212
+ multi-dimension rating rubric with anchors and a planted-probe column.
213
+ - `${CLAUDE_SKILL_DIR}/references/benchmark_export_schema.json` -- a synthetic JSON schema for the
214
+ per-item rating export (ratings, justifications, probe_arm, reviewer metadata, order, timing).
@@ -0,0 +1,69 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "AI-vs-expert benchmark rating export (synthetic template)",
4
+ "description": "One record per (reviewer, item) rating. Lock this schema before collecting ratings. All example values are illustrative placeholders, not real data.",
5
+ "type": "object",
6
+ "required": ["reviewer_id", "item_id", "arm", "probe_arm", "order_index", "ratings", "justification"],
7
+ "properties": {
8
+ "reviewer_id": {
9
+ "type": "string",
10
+ "description": "Stable pseudonymous id for the reviewer (no personal identifiers).",
11
+ "examples": ["R01"]
12
+ },
13
+ "reviewer_metadata": {
14
+ "type": "object",
15
+ "description": "Captured once per reviewer; repeated here for convenience.",
16
+ "properties": {
17
+ "years_experience": {"type": "integer", "minimum": 0},
18
+ "prior_ai_evaluation": {"type": "boolean"},
19
+ "subspecialty": {"type": "string"}
20
+ }
21
+ },
22
+ "item_id": {"type": "string", "examples": ["item_0042"]},
23
+ "arm": {
24
+ "type": "string",
25
+ "description": "Which system produced the rated output, or the human-expert reference arm.",
26
+ "examples": ["system_a", "system_b", "expert_reference"]
27
+ },
28
+ "probe_arm": {
29
+ "type": ["string", "null"],
30
+ "description": "Non-null when this is a planted control item.",
31
+ "enum": ["pos_control", "neg_control", "instability", "mechanism_contra", null]
32
+ },
33
+ "order_index": {
34
+ "type": "integer",
35
+ "minimum": 0,
36
+ "description": "Position in this reviewer's randomized item order (for fatigue analysis)."
37
+ },
38
+ "ratings": {
39
+ "type": "object",
40
+ "description": "One score per decoupled rubric dimension.",
41
+ "required": ["validity", "novelty", "feasibility", "added_value", "actionability"],
42
+ "properties": {
43
+ "validity": {"type": "integer", "minimum": 1, "maximum": 5},
44
+ "novelty": {"type": "integer", "minimum": 1, "maximum": 5},
45
+ "feasibility": {"type": "integer", "minimum": 1, "maximum": 5},
46
+ "added_value": {"type": "integer", "minimum": 1, "maximum": 5},
47
+ "actionability": {"type": "integer", "minimum": 1, "maximum": 5}
48
+ }
49
+ },
50
+ "justification": {
51
+ "type": "string",
52
+ "description": "Free text, judged standalone; no cross-item references."
53
+ },
54
+ "follow_up": {
55
+ "type": ["string", "null"],
56
+ "description": "What additional evidence would change the rating."
57
+ },
58
+ "judge_type": {
59
+ "type": "string",
60
+ "enum": ["human", "llm"],
61
+ "description": "Whether the rater is a human expert or an LLM-as-judge arm."
62
+ },
63
+ "timing_seconds": {
64
+ "type": ["number", "null"],
65
+ "minimum": 0,
66
+ "description": "Time spent on this item, for fatigue/drift analysis."
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,37 @@
1
+ # Decoupled Elicitation Rubric Template (synthetic)
2
+
3
+ A starting rubric for an AI-vs-human-expert benchmark. Every dimension measures one construct, so a
4
+ candidate can score high on validity yet low on added value ("real but redundant"). All values below
5
+ are illustrative placeholders, not real data — replace them for your own evaluation.
6
+
7
+ ## Per-item rating dimensions
8
+
9
+ | Dimension | Construct (one only) | Anchor 1 (low) | Anchor 3 (mid) | Anchor 5 (high) |
10
+ |-----------|----------------------|----------------|----------------|-----------------|
11
+ | Validity | Is the output correct against the reference? | Contradicted by reference | Partially supported | Fully supported |
12
+ | Novelty | Is it new vs prior work? | Restates known result | Incremental extension | Genuinely new |
13
+ | Feasibility | Can it be measured/obtained in practice? | Not measurable | Measurable with effort | Routinely measurable |
14
+ | Added value | Does it add over a measure already in use? | Redundant with a routine measure | Marginal gain | Clear gain over current tools |
15
+ | Actionability | Would a clinician act on it for an individual? | Would not change action | Might change action | Would change action |
16
+
17
+ Notes:
18
+ - Pilot the anchors with at least one reviewer before locking the scale.
19
+ - Pre-specify which dimensions are expected to correlate (e.g., validity and actionability) vs be
20
+ orthogonal (e.g., novelty and feasibility); report the inter-dimension correlation matrix afterward.
21
+
22
+ ## Planted calibration probes
23
+
24
+ `probe_arm` marks a control item; it is randomized across reviewers and excluded from the primary
25
+ estimate but reported separately for scale validity.
26
+
27
+ | probe_arm | Flavor | What it tests | Expected behavior |
28
+ |-----------|--------|---------------|-------------------|
29
+ | pos_control | Positive / "too-good" (near-tautological) | Whether raters equate "largest effect" with "best"; whether the construct-independence gate fires | High validity, low added value |
30
+ | neg_control | Known-bad (engineered defect) | Whether obvious defects are caught | Low validity |
31
+ | instability | Reverses on holdout | Caveat-handling for unstable estimates | Lower confidence ratings |
32
+ | mechanism_contra | Direction opposes mechanism | Whether raters notice mechanism conflict | Flagged in free-text |
33
+
34
+ ## Per-item free-text fields
35
+
36
+ - justification (required): one or two sentences, judged standalone (no cross-item references)
37
+ - follow_up (optional): what additional evidence would change the rating
@@ -0,0 +1,38 @@
1
+ schema_version: 2
2
+ name: design-ai-benchmarking
3
+ layer: D
4
+ owner_domain: study_design
5
+
6
+ when_to_use: "Design or review a study that benchmarks one or more AI systems against a human-expert panel: arm definition, decoupled rubric, calibration probes, reviewer panel, IRR targets, judge adjudication, and a structured export schema, before ratings are collected."
7
+ when_NOT_to_use: "General study/validity review (use design-study); statistical execution such as ICC/DeLong (use analyze-stats); reporting-guideline item audits (use check-reporting); reviewing a finished manuscript (use peer-review or self-review)."
8
+
9
+ inputs:
10
+ - "evaluation question and the AI system(s) / arms to compare"
11
+ - "candidate outputs or items to be rated"
12
+ - "available human-expert reviewers and their metadata"
13
+ outputs:
14
+ - "benchmark design and validity review (decision notes)"
15
+ - "decoupled rating rubric with anchors and planted calibration probes"
16
+ - "structured rating-export schema (JSON)"
17
+ side_effects:
18
+ - writes_decision_notes
19
+ downstream_consumers:
20
+ - analyze-stats
21
+ - check-reporting
22
+ - design-study
23
+ forbidden_actions:
24
+ - fabricate_reviewer_ratings_or_reference_labels
25
+ - approve_benchmark_with_unblinded_or_leaky_rubric
26
+ - report_irr_without_separate_control_item_reliability
27
+
28
+ # v2.1 quality card
29
+ purpose: "Surface design and validity risks specific to AI-vs-human-expert benchmarks (rubric coupling, scale calibration, rater independence, judge choice) before data collection begins."
30
+ safety_boundaries:
31
+ - "Advisory only: writes decision notes plus rubric/schema artifacts, never ratings or analysis results."
32
+ - "Calibration probes and reference labels are planted or adjudicated, never fabricated to fit a hypothesis."
33
+ known_limitations:
34
+ - "A design review reduces but cannot eliminate evaluation bias; it does not guarantee a valid benchmark."
35
+ - "No standalone demo; rubric and panel decisions require domain-expert judgement."
36
+ validation_commands:
37
+ - "carry the rubric and export schema into analyze-stats for ICC/agreement, then check-reporting (STARD-AI / CLAIM / TRIPOD+AI)"
38
+ evidence_surface: manual_workflow