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.
- package/LICENSE +50 -0
- package/README.md +602 -0
- package/README_FIRST.md +27 -0
- package/bin/medsci-skills.js +159 -0
- package/installers/install-macos.command +19 -0
- package/installers/install-windows.cmd +26 -0
- package/installers/install-windows.ps1 +17 -0
- package/installers/install.py +218 -0
- package/metadata/skills_catalog.json +452 -0
- package/package.json +48 -0
- package/skills/academic-aio/SKILL.md +408 -0
- package/skills/academic-aio/references/case_studies/kjr_mllm_2025.md +82 -0
- package/skills/academic-aio/references/checklists/AIO_GENERAL.md +354 -0
- package/skills/academic-aio/references/journal_summarybox_templates.yaml +126 -0
- package/skills/academic-aio/references/oac_funding_checklist.yaml +129 -0
- package/skills/academic-aio/references/reporting_guideline_mapping.md +39 -0
- package/skills/academic-aio/references/schema_markup_templates/CodeRepository.jsonld +32 -0
- package/skills/academic-aio/references/schema_markup_templates/Dataset.jsonld +36 -0
- package/skills/academic-aio/references/schema_markup_templates/Person.jsonld +30 -0
- package/skills/academic-aio/references/schema_markup_templates/README.md +43 -0
- package/skills/academic-aio/references/schema_markup_templates/ScholarlyArticle.jsonld +55 -0
- package/skills/academic-aio/scripts/batch_metadata_audit.py +169 -0
- package/skills/academic-aio/scripts/validate_schema.py +118 -0
- package/skills/academic-aio/skill.yml +36 -0
- package/skills/academic-aio/templates/aio_audit_checklist.md.j2 +108 -0
- package/skills/add-journal/SKILL.md +482 -0
- package/skills/add-journal/skill.yml +33 -0
- package/skills/analyze-stats/SKILL.md +598 -0
- package/skills/analyze-stats/references/analysis_guides/missing_data.md +109 -0
- package/skills/analyze-stats/references/analysis_guides/nhis_icd10_mapping.md +247 -0
- package/skills/analyze-stats/references/analysis_guides/propensity_score.md +132 -0
- package/skills/analyze-stats/references/analysis_guides/regression.md +115 -0
- package/skills/analyze-stats/references/analysis_guides/repeated_measures.md +160 -0
- package/skills/analyze-stats/references/analysis_guides/survey_weighted.md +366 -0
- package/skills/analyze-stats/references/analysis_guides/test_selection.md +86 -0
- package/skills/analyze-stats/references/style/figure_style.mplstyle +69 -0
- package/skills/analyze-stats/references/style/theme_publication.R +147 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/ajr.yaml +51 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/european_radiology.yaml +55 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/jama.yaml +66 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/lancet.yaml +57 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/nejm.yaml +51 -0
- package/skills/analyze-stats/references/table-standards/journal-profiles/radiology.yaml +66 -0
- package/skills/analyze-stats/references/table-standards/table-standards.md +287 -0
- package/skills/analyze-stats/references/table-standards/table-types/diagnostic_accuracy.md +36 -0
- package/skills/analyze-stats/references/table-standards/table-types/meta_analysis.md +58 -0
- package/skills/analyze-stats/references/table-standards/table-types/model_comparison.md +36 -0
- package/skills/analyze-stats/references/table-standards/table-types/regression_results.md +50 -0
- package/skills/analyze-stats/references/table-standards/table-types/table1_demographics.md +51 -0
- package/skills/analyze-stats/references/table-standards/tool-comparison.md +79 -0
- package/skills/analyze-stats/references/templates/agreement_analysis.py +436 -0
- package/skills/analyze-stats/references/templates/dca_plot.R +237 -0
- package/skills/analyze-stats/references/templates/diagnostic_accuracy.py +401 -0
- package/skills/analyze-stats/references/templates/dta_meta_analysis.R +384 -0
- package/skills/analyze-stats/references/templates/forest_plot.py +412 -0
- package/skills/analyze-stats/references/templates/likert_summary.py +356 -0
- package/skills/analyze-stats/references/templates/meta_analysis.R +365 -0
- package/skills/analyze-stats/references/templates/propensity_score.py +478 -0
- package/skills/analyze-stats/references/templates/regression.py +425 -0
- package/skills/analyze-stats/references/templates/repeated_measures.py +434 -0
- package/skills/analyze-stats/references/templates/sample_size.R +382 -0
- package/skills/analyze-stats/references/templates/survey_weighted_analysis.py +411 -0
- package/skills/analyze-stats/references/templates/survival_analysis.py +325 -0
- package/skills/analyze-stats/references/templates/table1_demographics.py +287 -0
- package/skills/analyze-stats/scripts/check_generated_code.py +335 -0
- package/skills/analyze-stats/skill.yml +38 -0
- package/skills/analyze-stats/tests/fixtures/gen_bad.R +16 -0
- package/skills/analyze-stats/tests/fixtures/gen_bad.py +24 -0
- package/skills/analyze-stats/tests/fixtures/gen_clean.py +21 -0
- package/skills/analyze-stats/tests/test_generated_code.sh +59 -0
- package/skills/analyze-stats/tests/test_survival_template.sh +53 -0
- package/skills/author-strategy/SKILL.md +117 -0
- package/skills/author-strategy/analyze_patterns.py +303 -0
- package/skills/author-strategy/fetch_pubmed.py +374 -0
- package/skills/author-strategy/skill.yml +34 -0
- package/skills/batch-cohort/SKILL.md +223 -0
- package/skills/batch-cohort/references/base_template_knhanes.R +210 -0
- package/skills/batch-cohort/references/batch_template_generator.R +222 -0
- package/skills/batch-cohort/references/variable_coding_registry.md +136 -0
- package/skills/batch-cohort/skill.yml +35 -0
- package/skills/calc-sample-size/SKILL.md +491 -0
- package/skills/calc-sample-size/references/formulas.md +655 -0
- package/skills/calc-sample-size/references/observational_cohort.md +49 -0
- package/skills/calc-sample-size/skill.yml +51 -0
- package/skills/check-reporting/SKILL.md +534 -0
- package/skills/check-reporting/references/LICENSES.md +41 -0
- package/skills/check-reporting/references/checklists/AMSTAR2.md +54 -0
- package/skills/check-reporting/references/checklists/ARRIVE_2.md +234 -0
- package/skills/check-reporting/references/checklists/CARE.md +102 -0
- package/skills/check-reporting/references/checklists/CLAIM_2024.md +128 -0
- package/skills/check-reporting/references/checklists/CLEAR.md +113 -0
- package/skills/check-reporting/references/checklists/CONSORT.md +86 -0
- package/skills/check-reporting/references/checklists/COSMIN_RoB.md +136 -0
- package/skills/check-reporting/references/checklists/GRRAS.md +61 -0
- package/skills/check-reporting/references/checklists/MI_CLEAR_LLM.md +167 -0
- package/skills/check-reporting/references/checklists/MOOSE.md +85 -0
- package/skills/check-reporting/references/checklists/NOS.md +88 -0
- package/skills/check-reporting/references/checklists/PRISMA_2020.md +135 -0
- package/skills/check-reporting/references/checklists/PRISMA_DTA.md +36 -0
- package/skills/check-reporting/references/checklists/PRISMA_P.md +56 -0
- package/skills/check-reporting/references/checklists/PROBAST.md +75 -0
- package/skills/check-reporting/references/checklists/PROBAST_AI.md +130 -0
- package/skills/check-reporting/references/checklists/QUADAS2.md +77 -0
- package/skills/check-reporting/references/checklists/QUADAS_C.md +131 -0
- package/skills/check-reporting/references/checklists/ROBINS_E.md +179 -0
- package/skills/check-reporting/references/checklists/ROBINS_I.md +87 -0
- package/skills/check-reporting/references/checklists/ROBIS.md +114 -0
- package/skills/check-reporting/references/checklists/ROB_ME.md +126 -0
- package/skills/check-reporting/references/checklists/RoB2.md +79 -0
- package/skills/check-reporting/references/checklists/RoB_NMA.md +96 -0
- package/skills/check-reporting/references/checklists/SPIRIT.md +112 -0
- package/skills/check-reporting/references/checklists/SQUIRE_2.md +68 -0
- package/skills/check-reporting/references/checklists/STARD.md +129 -0
- package/skills/check-reporting/references/checklists/STARD_AI.md +211 -0
- package/skills/check-reporting/references/checklists/STROBE.md +80 -0
- package/skills/check-reporting/references/checklists/SWiM.md +33 -0
- package/skills/check-reporting/references/checklists/TRIPOD.md +157 -0
- package/skills/check-reporting/references/checklists/TRIPOD_AI.md +140 -0
- package/skills/check-reporting/references/step4c_registration_timing.md +93 -0
- package/skills/check-reporting/references/step4d_prisma_figure_audit.md +137 -0
- package/skills/check-reporting/scripts/check_checklist_exists.py +183 -0
- package/skills/check-reporting/scripts/check_checklist_version.py +168 -0
- package/skills/check-reporting/scripts/check_framework_naming.py +206 -0
- package/skills/check-reporting/scripts/check_prisma_figure.py +209 -0
- package/skills/check-reporting/scripts/prisma_cascade_check.py +274 -0
- package/skills/check-reporting/skill.yml +41 -0
- package/skills/check-reporting/tests/fixtures/framework_bad.md +8 -0
- package/skills/check-reporting/tests/fixtures/framework_clean.md +7 -0
- package/skills/check-reporting/tests/test_checklist_fail_fast.sh +77 -0
- package/skills/check-reporting/tests/test_checklist_version.sh +72 -0
- package/skills/check-reporting/tests/test_framework_naming.sh +45 -0
- package/skills/check-reporting/tests/test_prisma_cascade.sh +104 -0
- package/skills/clean-data/SKILL.md +180 -0
- package/skills/clean-data/references/cleaning_patterns.md +299 -0
- package/skills/clean-data/references/profiling_template.py +304 -0
- package/skills/clean-data/scripts/check_structural_zero.py +174 -0
- package/skills/clean-data/skill.yml +35 -0
- package/skills/clean-data/tests/fixtures/smoking.csv +8 -0
- package/skills/clean-data/tests/test_structural_zero.sh +49 -0
- package/skills/cross-national/SKILL.md +264 -0
- package/skills/cross-national/skill.yml +37 -0
- package/skills/define-variables/SKILL.md +146 -0
- package/skills/define-variables/references/common_definitions.md +190 -0
- package/skills/define-variables/skill.yml +34 -0
- package/skills/define-variables/templates/variable_operationalization.md +64 -0
- package/skills/deidentify/SKILL.md +203 -0
- package/skills/deidentify/deidentify.py +1224 -0
- package/skills/deidentify/locales/_template.json +45 -0
- package/skills/deidentify/locales/au.json +43 -0
- package/skills/deidentify/locales/ca.json +44 -0
- package/skills/deidentify/locales/cn.json +47 -0
- package/skills/deidentify/locales/de.json +48 -0
- package/skills/deidentify/locales/fr.json +48 -0
- package/skills/deidentify/locales/in.json +48 -0
- package/skills/deidentify/locales/jp.json +48 -0
- package/skills/deidentify/locales/kr.json +48 -0
- package/skills/deidentify/locales/uk.json +45 -0
- package/skills/deidentify/locales/us.json +43 -0
- package/skills/deidentify/references/date_shift_guide.md +82 -0
- package/skills/deidentify/references/hipaa_18_identifiers.md +48 -0
- package/skills/deidentify/references/korean_phi_patterns.md +135 -0
- package/skills/deidentify/skill.yml +43 -0
- package/skills/deidentify/tests/README.md +26 -0
- package/skills/deidentify/tests/test_clean.csv +16 -0
- package/skills/deidentify/tests/test_edge_cases.csv +11 -0
- package/skills/deidentify/tests/test_phi_korean.csv +11 -0
- package/skills/design-ai-benchmarking/SKILL.md +214 -0
- package/skills/design-ai-benchmarking/references/benchmark_export_schema.json +69 -0
- package/skills/design-ai-benchmarking/references/elicitation_rubric_template.md +37 -0
- package/skills/design-ai-benchmarking/skill.yml +38 -0
- package/skills/design-study/SKILL.md +298 -0
- package/skills/design-study/skill.yml +33 -0
- package/skills/fill-icmje-coi/SKILL.md +216 -0
- package/skills/fill-icmje-coi/scripts/fill_icmje_coi.py +140 -0
- package/skills/fill-icmje-coi/skill.yml +35 -0
- package/skills/fill-icmje-coi/templates/icmje_coi_seed_synthetic.docx +0 -0
- package/skills/fill-protocol/SKILL.md +248 -0
- package/skills/fill-protocol/examples/example_irb_template.yaml +53 -0
- package/skills/fill-protocol/references/best_practices.md +121 -0
- package/skills/fill-protocol/scripts/doc_to_docx.py +111 -0
- package/skills/fill-protocol/scripts/fill_form.py +611 -0
- package/skills/fill-protocol/scripts/inspect_template.py +61 -0
- package/skills/fill-protocol/setup.sh +162 -0
- package/skills/fill-protocol/skill.yml +37 -0
- package/skills/find-cohort-gap/SKILL.md +309 -0
- package/skills/find-cohort-gap/references/cohort_profile_template.md +93 -0
- package/skills/find-cohort-gap/references/onepager_template.md +84 -0
- package/skills/find-cohort-gap/references/pattern_scoring_rubric.md +169 -0
- package/skills/find-cohort-gap/references/saturation_query_templates.md +143 -0
- package/skills/find-cohort-gap/skill.yml +35 -0
- package/skills/find-journal/POLICY.md +87 -0
- package/skills/find-journal/SKILL.md +340 -0
- package/skills/find-journal/references/journal_profiles/AJNR.md +29 -0
- package/skills/find-journal/references/journal_profiles/AJR.md +30 -0
- package/skills/find-journal/references/journal_profiles/Abdominal_Radiology.md +30 -0
- package/skills/find-journal/references/journal_profiles/Academic_Radiology.md +30 -0
- package/skills/find-journal/references/journal_profiles/Annals_of_Internal_Medicine.md +33 -0
- package/skills/find-journal/references/journal_profiles/Artificial_Intelligence_in_Medicine.md +28 -0
- package/skills/find-journal/references/journal_profiles/BMC_Medicine.md +31 -0
- package/skills/find-journal/references/journal_profiles/British_Journal_of_Radiology.md +39 -0
- package/skills/find-journal/references/journal_profiles/CVIR.md +30 -0
- package/skills/find-journal/references/journal_profiles/Chest.md +39 -0
- package/skills/find-journal/references/journal_profiles/Clinical_Radiology.md +30 -0
- package/skills/find-journal/references/journal_profiles/Clinical_and_Molecular_Hepatology.md +32 -0
- package/skills/find-journal/references/journal_profiles/Diabetes_Metabolism_Journal.md +36 -0
- package/skills/find-journal/references/journal_profiles/Diagnostic_and_Interventional_Radiology.md +32 -0
- package/skills/find-journal/references/journal_profiles/Endocrinology_and_Metabolism.md +37 -0
- package/skills/find-journal/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +39 -0
- package/skills/find-journal/references/journal_profiles/European_Radiology.md +29 -0
- package/skills/find-journal/references/journal_profiles/Hepatology_Communications.md +40 -0
- package/skills/find-journal/references/journal_profiles/Hepatology_International.md +37 -0
- package/skills/find-journal/references/journal_profiles/IEEE_JBHI.md +28 -0
- package/skills/find-journal/references/journal_profiles/IEEE_TMI.md +28 -0
- package/skills/find-journal/references/journal_profiles/INSI.md +29 -0
- package/skills/find-journal/references/journal_profiles/Investigative_Radiology.md +25 -0
- package/skills/find-journal/references/journal_profiles/JACC_Advances.md +41 -0
- package/skills/find-journal/references/journal_profiles/JACC_Asia.md +30 -0
- package/skills/find-journal/references/journal_profiles/JACR.md +28 -0
- package/skills/find-journal/references/journal_profiles/JAMA.md +40 -0
- package/skills/find-journal/references/journal_profiles/JAMA_Network_Open.md +30 -0
- package/skills/find-journal/references/journal_profiles/JCSM.md +39 -0
- package/skills/find-journal/references/journal_profiles/JKMS.md +32 -0
- package/skills/find-journal/references/journal_profiles/JMIR.md +29 -0
- package/skills/find-journal/references/journal_profiles/JMIR_Medical_Education.md +29 -0
- package/skills/find-journal/references/journal_profiles/JNIS.md +35 -0
- package/skills/find-journal/references/journal_profiles/JVIR.md +31 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Biomedical_Informatics.md +29 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +40 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Magnetic_Resonance_Imaging.md +30 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Nuclear_Medicine.md +31 -0
- package/skills/find-journal/references/journal_profiles/Journal_of_Stroke.md +32 -0
- package/skills/find-journal/references/journal_profiles/KJR.md +38 -0
- package/skills/find-journal/references/journal_profiles/Korean_Circulation_Journal.md +38 -0
- package/skills/find-journal/references/journal_profiles/Korean_Journal_of_Internal_Medicine.md +36 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Diabetes_and_Endocrinology.md +40 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Gastroenterology_and_Hepatology.md +49 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Infectious_Diseases.md +38 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Neurology.md +39 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Oncology.md +40 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Psychiatry.md +38 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Public_Health.md +30 -0
- package/skills/find-journal/references/journal_profiles/Lancet_Respiratory_Medicine.md +39 -0
- package/skills/find-journal/references/journal_profiles/Liver_International.md +33 -0
- package/skills/find-journal/references/journal_profiles/Medical_Image_Analysis.md +28 -0
- package/skills/find-journal/references/journal_profiles/NEJM.md +33 -0
- package/skills/find-journal/references/journal_profiles/Nature_Machine_Intelligence.md +31 -0
- package/skills/find-journal/references/journal_profiles/Nature_Medicine.md +39 -0
- package/skills/find-journal/references/journal_profiles/Neuroradiology.md +31 -0
- package/skills/find-journal/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +39 -0
- package/skills/find-journal/references/journal_profiles/PLOS_Medicine.md +32 -0
- package/skills/find-journal/references/journal_profiles/RYAI.md +28 -0
- package/skills/find-journal/references/journal_profiles/Radiology.md +29 -0
- package/skills/find-journal/references/journal_profiles/Skeletal_Radiology.md +31 -0
- package/skills/find-journal/references/journal_profiles/Stroke.md +37 -0
- package/skills/find-journal/references/journal_profiles/The_BMJ.md +31 -0
- package/skills/find-journal/references/journal_profiles/The_Lancet.md +31 -0
- package/skills/find-journal/references/journal_profiles/The_Lancet_Digital_Health.md +29 -0
- package/skills/find-journal/references/journal_profiles/World_Journal_of_Hepatology.md +53 -0
- package/skills/find-journal/references/journal_profiles/npj_Digital_Medicine.md +29 -0
- package/skills/find-journal/skill.yml +34 -0
- package/skills/fulltext-retrieval/SKILL.md +174 -0
- package/skills/fulltext-retrieval/fetch_oa.py +433 -0
- package/skills/fulltext-retrieval/pdf_to_md.py +160 -0
- package/skills/fulltext-retrieval/skill.yml +41 -0
- package/skills/generate-codebook/SKILL.md +155 -0
- package/skills/generate-codebook/references/codebook_schema.md +76 -0
- package/skills/generate-codebook/scripts/generate_codebook.py +278 -0
- package/skills/generate-codebook/skill.yml +35 -0
- package/skills/generate-codebook/tests/test_generate_codebook.sh +76 -0
- package/skills/grant-builder/SKILL.md +251 -0
- package/skills/grant-builder/skill.yml +34 -0
- package/skills/humanize/SKILL.md +251 -0
- package/skills/humanize/references/ai_patterns.md +571 -0
- package/skills/humanize/skill.yml +33 -0
- package/skills/intake-project/SKILL.md +264 -0
- package/skills/intake-project/skill.yml +34 -0
- package/skills/lit-sync/SKILL.md +448 -0
- package/skills/lit-sync/references/locale/ko/note_templates.md +110 -0
- package/skills/lit-sync/skill.yml +52 -0
- package/skills/lit-sync/tests/test_poll_logic.sh +92 -0
- package/skills/ma-scout/SKILL.md +640 -0
- package/skills/ma-scout/references/project_readme_template.md +95 -0
- package/skills/ma-scout/references/project_readme_template_ko.md +82 -0
- package/skills/ma-scout/skill.yml +33 -0
- package/skills/make-figures/SKILL.md +957 -0
- package/skills/make-figures/references/critic_rubrics/data_plot.md +166 -0
- package/skills/make-figures/references/critic_rubrics/flow_diagram.md +169 -0
- package/skills/make-figures/references/design_principles.md +181 -0
- package/skills/make-figures/references/exemplar_diagrams/README.md +65 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/README.md +15 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/template_input.yaml +37 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/template_output.pdf +0 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/template_output.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/consort/template_output_600.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/other/other_02.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/other/other_02.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/other/other_02_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/README.md +15 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_01.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_01.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_01_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_03.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_03.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_03_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_04.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_04.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_04_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_05.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_05.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_05_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_06.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_06.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_06_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_07.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_07.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_07_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_08.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_08.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_08_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_09.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_09.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_09_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_10.meta.yaml +4 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_10.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/pipeline/pipeline_10_why.md +13 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/README.md +15 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/template_input.yaml +47 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/template_output.pdf +0 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/template_output.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/prisma/template_output_600.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/README.md +15 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/template_input.yaml +40 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/template_output.pdf +0 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/template_output.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/stard/template_output_600.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_input.yaml +43 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_input_pptx.yaml +43 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_output.pdf +0 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_output.png +0 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_output.pptx +0 -0
- package/skills/make-figures/references/exemplar_diagrams/strobe/template_output_600.png +0 -0
- package/skills/make-figures/references/figure_specs.md +291 -0
- package/skills/make-figures/references/flow_diagram_lessons.md +164 -0
- package/skills/make-figures/references/jacc_central_illustration_principles.md +91 -0
- package/skills/make-figures/references/medical_illustration_sources.md +98 -0
- package/skills/make-figures/references/pipeline_concepts_medical_ai.md +240 -0
- package/skills/make-figures/references/reporting_guideline_figure_map.md +104 -0
- package/skills/make-figures/references/visual_abstract_templates/european_radiology.pptx +0 -0
- package/skills/make-figures/references/visual_abstract_templates/jacc_central_illustration.pptx +0 -0
- package/skills/make-figures/references/visual_abstract_templates/medsci_default.pptx +0 -0
- package/skills/make-figures/references/visual_abstract_templates/template_guide.md +114 -0
- package/skills/make-figures/scripts/build_jacc_template.py +77 -0
- package/skills/make-figures/scripts/build_prisma2020_template.py +371 -0
- package/skills/make-figures/scripts/build_strobe_template.py +351 -0
- package/skills/make-figures/scripts/critic_figure.py +264 -0
- package/skills/make-figures/scripts/derive_figure_legend_counts.py +138 -0
- package/skills/make-figures/scripts/extract_exemplar_from_pdf.py +186 -0
- package/skills/make-figures/scripts/fetch_official_templates.sh +88 -0
- package/skills/make-figures/scripts/fill_prisma_template.py +142 -0
- package/skills/make-figures/scripts/generate_flow_diagram.R +133 -0
- package/skills/make-figures/scripts/generate_image.py +99 -0
- package/skills/make-figures/scripts/generate_visual_abstract.py +438 -0
- package/skills/make-figures/scripts/validate_pptx_mac_compat.py +233 -0
- package/skills/make-figures/skill.yml +52 -0
- package/skills/make-figures/templates/official/NOTES.md +62 -0
- package/skills/make-figures/templates/official/consort2010/CONSORT_2025_editable_checklist.docx +0 -0
- package/skills/make-figures/templates/official/consort2010/CONSORT_2025_flow_diagram.docx +0 -0
- package/skills/make-figures/templates/official/prisma2020/PRISMA_2020_flow_new_v1.pptx +0 -0
- package/skills/make-figures/templates/official/prisma2020/PRISMA_2020_flow_new_v2.pptx +0 -0
- package/skills/make-figures/templates/official/prisma2020/PRISMA_2020_flow_updated_v2.pptx +0 -0
- package/skills/make-figures/templates/official/spirit2013/SPIRIT_2025_editable_checklist.docx +0 -0
- package/skills/make-figures/templates/official/spirit2013/SPIRIT_2025_participant_timeline.docx +0 -0
- package/skills/make-figures/templates/official/stard2015/STARD_2015_checklist.docx +0 -0
- package/skills/make-figures/templates/official/stard2015/STARD_2015_flow_diagram.pdf +0 -0
- package/skills/make-figures/tests/fixtures/figure1_flow.yaml +8 -0
- package/skills/make-figures/tests/fixtures/manuscript_ok.md +9 -0
- package/skills/make-figures/tests/fixtures/manuscript_stale.md +4 -0
- package/skills/make-figures/tests/test_legend_reconcile.sh +36 -0
- package/skills/manage-project/SKILL.md +358 -0
- package/skills/manage-project/references/pre_submission_checklist.md +53 -0
- package/skills/manage-project/references/project_state_template.json +37 -0
- package/skills/manage-project/references/scaffold_templates.md +118 -0
- package/skills/manage-project/references/status_output_format.md +44 -0
- package/skills/manage-project/references/timeline_example.md +20 -0
- package/skills/manage-project/skill.yml +36 -0
- package/skills/manage-project/templates/SSOT.yaml.template +41 -0
- package/skills/manage-refs/LICENSE.zotero-mcp +21 -0
- package/skills/manage-refs/NOTICE.md +29 -0
- package/skills/manage-refs/SKILL.md +289 -0
- package/skills/manage-refs/citation_styles/README.md +40 -0
- package/skills/manage-refs/citation_styles/american-journal-of-roentgenology.csl +211 -0
- package/skills/manage-refs/citation_styles/cardiovascular-and-interventional-radiology.csl +19 -0
- package/skills/manage-refs/citation_styles/european-radiology.csl +19 -0
- package/skills/manage-refs/citation_styles/journal-of-cachexia-sarcopenia-and-muscle.csl +150 -0
- package/skills/manage-refs/citation_styles/journal-of-korean-medical-science-strict.csl +533 -0
- package/skills/manage-refs/citation_styles/journal-of-korean-medical-science.csl +16 -0
- package/skills/manage-refs/citation_styles/korean-journal-of-radiology.csl +155 -0
- package/skills/manage-refs/citation_styles/nature.csl +189 -0
- package/skills/manage-refs/citation_styles/nlm-citation-sequence.csl +535 -0
- package/skills/manage-refs/citation_styles/radiology.csl +228 -0
- package/skills/manage-refs/citation_styles/springer-basic-brackets.csl +187 -0
- package/skills/manage-refs/citation_styles/springer-vancouver-brackets.csl +276 -0
- package/skills/manage-refs/citation_styles/vancouver-superscript.csl +536 -0
- package/skills/manage-refs/citation_styles/vancouver.csl +535 -0
- package/skills/manage-refs/references/REFERENCE_STYLE_SPECS.md +59 -0
- package/skills/manage-refs/references/check_xref_symptoms.md +35 -0
- package/skills/manage-refs/scripts/_vendor_citation_writer.py +600 -0
- package/skills/manage-refs/scripts/check_citation_keys.py +112 -0
- package/skills/manage-refs/scripts/check_csl_render.py +102 -0
- package/skills/manage-refs/scripts/check_xref.py +633 -0
- package/skills/manage-refs/scripts/fill_journal_abbrev.py +104 -0
- package/skills/manage-refs/scripts/inject_zotero_cwyw.py +133 -0
- package/skills/manage-refs/scripts/md_marker_convert.py +193 -0
- package/skills/manage-refs/scripts/pre_submission_gate.sh +238 -0
- package/skills/manage-refs/scripts/render_pandoc.sh +88 -0
- package/skills/manage-refs/skill.yml +70 -0
- package/skills/manage-refs/tests/fixtures/pre_submission_gate/README.md +32 -0
- package/skills/manage-refs/tests/fixtures/pre_submission_gate/manuscript.md +10 -0
- package/skills/manage-refs/tests/fixtures/pre_submission_gate/refs.bib +34 -0
- package/skills/manage-refs/tests/fixtures/pre_submission_gate/run.sh +117 -0
- package/skills/manage-refs/tests/test_vN_docx_check.sh +145 -0
- package/skills/meta-analysis/SKILL.md +739 -0
- package/skills/meta-analysis/references/LICENSES.md +21 -0
- package/skills/meta-analysis/references/PROSPERO_template.md +221 -0
- package/skills/meta-analysis/references/ai_pre_screening_template.py +245 -0
- package/skills/meta-analysis/references/checklists/JBI_Case_Series.md +45 -0
- package/skills/meta-analysis/references/checklists/NOS.md +88 -0
- package/skills/meta-analysis/references/checklists/PRISMA_DTA.md +36 -0
- package/skills/meta-analysis/references/checklists/PROBAST.md +75 -0
- package/skills/meta-analysis/references/checklists/QUADAS2.md +77 -0
- package/skills/meta-analysis/references/checklists/ROBINS_I.md +87 -0
- package/skills/meta-analysis/references/checklists/RoB2.md +79 -0
- package/skills/meta-analysis/references/data_integrity_checklist.md +57 -0
- package/skills/meta-analysis/references/icmje_coi_guide.md +181 -0
- package/skills/meta-analysis/references/phase10_recovery.md +136 -0
- package/skills/meta-analysis/references/phase4_km_composite.md +58 -0
- package/skills/meta-analysis/references/phase6_statistical_synthesis.md +148 -0
- package/skills/meta-analysis/references/phase9_circulation.md +84 -0
- package/skills/meta-analysis/references/post_submission_release_ops.md +41 -0
- package/skills/meta-analysis/references/r_templates.md +132 -0
- package/skills/meta-analysis/references/review_orchestration.md +40 -0
- package/skills/meta-analysis/references/submission_package_drift.md +71 -0
- package/skills/meta-analysis/scripts/check_pool_consistency.py +201 -0
- package/skills/meta-analysis/scripts/cohort_overlap_check.py +242 -0
- package/skills/meta-analysis/scripts/dta_extraction_qc.py +137 -0
- package/skills/meta-analysis/scripts/screening_reconcile.py +160 -0
- package/skills/meta-analysis/skill.yml +47 -0
- package/skills/meta-analysis/templates/FINAL_POOL_LOCK.yaml.template +70 -0
- package/skills/meta-analysis/templates/extraction_form_v2.md +129 -0
- package/skills/meta-analysis/templates/supplementary_8file_checklist.md +94 -0
- package/skills/meta-analysis/tests/test_pool_consistency.sh +123 -0
- package/skills/orchestrate/SKILL.md +501 -0
- package/skills/orchestrate/references/dialogue_nodes.md +196 -0
- package/skills/orchestrate/references/report_template.md +109 -0
- package/skills/orchestrate/references/report_template_ko.md +88 -0
- package/skills/orchestrate/skill.yml +44 -0
- package/skills/peer-review/SKILL.md +381 -0
- package/skills/peer-review/references/aczel_2021_reviewer2_patterns.md +88 -0
- package/skills/peer-review/references/domain-probes/ai_overclaiming.md +47 -0
- package/skills/peer-review/references/domain-probes/narrative_review.md +44 -0
- package/skills/peer-review/references/domain-probes/observational_confounding.md +48 -0
- package/skills/peer-review/references/domain-probes/radiomics.md +38 -0
- package/skills/peer-review/references/domain-probes/sr_ma.md +87 -0
- package/skills/peer-review/references/domain-probes/survival_prognostic.md +68 -0
- package/skills/peer-review/references/exemplar_reviews/README.md +43 -0
- package/skills/peer-review/references/exemplar_reviews/ai_overclaiming.md +47 -0
- package/skills/peer-review/references/exemplar_reviews/calibration_missing.md +44 -0
- package/skills/peer-review/references/exemplar_reviews/data_leakage.md +48 -0
- package/skills/peer-review/references/exemplar_reviews/reference_standard_validity.md +45 -0
- package/skills/peer-review/references/narrative_review_audit.md +67 -0
- package/skills/peer-review/references/reviewer_calibration/README.md +34 -0
- package/skills/peer-review/references/reviewer_calibration/compliance_floor.md +52 -0
- package/skills/peer-review/references/reviewer_profiles/AJR.md +82 -0
- package/skills/peer-review/references/reviewer_profiles/EURE.md +64 -0
- package/skills/peer-review/references/reviewer_profiles/INSI.md +57 -0
- package/skills/peer-review/references/reviewer_profiles/KJR.md +100 -0
- package/skills/peer-review/references/reviewer_profiles/README.md +32 -0
- package/skills/peer-review/references/reviewer_profiles/RYAI.md +86 -0
- package/skills/peer-review/skill.yml +39 -0
- package/skills/present-paper/SKILL.md +675 -0
- package/skills/present-paper/references/critic_rubrics/slide.md +155 -0
- package/skills/present-paper/references/generate_pptx_templates.py +604 -0
- package/skills/present-paper/references/medical_presentation_templates.md +277 -0
- package/skills/present-paper/references/slide_design_principles.md +202 -0
- package/skills/present-paper/references/slide_visual_styles/nature_lancet.md +168 -0
- package/skills/present-paper/references/workflow-checklist.md +109 -0
- package/skills/present-paper/scripts/extract_pdf_figures.py +243 -0
- package/skills/present-paper/scripts/inject_pronunciation_notes.py +178 -0
- package/skills/present-paper/scripts/inject_speaker_notes.py +133 -0
- package/skills/present-paper/scripts/strip_notes_for_sharing.py +140 -0
- package/skills/present-paper/scripts/trim_caption.py +271 -0
- package/skills/present-paper/skill.yml +41 -0
- package/skills/present-paper/templates/build_pptx_nature_lancet.py +688 -0
- package/skills/publish-skill/SKILL.md +370 -0
- package/skills/publish-skill/references/license-compatibility-matrix.md +132 -0
- package/skills/publish-skill/references/pii-patterns.md +130 -0
- package/skills/publish-skill/scripts/audit_skill.sh +278 -0
- package/skills/publish-skill/skill.yml +35 -0
- package/skills/render-pdf-doc/SKILL.md +146 -0
- package/skills/render-pdf-doc/references/known_pitfalls.md +53 -0
- package/skills/render-pdf-doc/references/pandoc_korean_cheatsheet.md +77 -0
- package/skills/render-pdf-doc/scripts/check_deps.sh +42 -0
- package/skills/render-pdf-doc/scripts/infer_colwidths.py +164 -0
- package/skills/render-pdf-doc/scripts/render_pdf.sh +98 -0
- package/skills/render-pdf-doc/skill.yml +57 -0
- package/skills/render-pdf-doc/templates/anchor-doc.md +27 -0
- package/skills/render-pdf-doc/templates/anchor-doc_ko.md +25 -0
- package/skills/render-pdf-doc/templates/briefing-handout.md +33 -0
- package/skills/render-pdf-doc/templates/briefing-handout_ko.md +31 -0
- package/skills/render-pdf-doc/templates/proposal-cover.md +33 -0
- package/skills/render-pdf-doc/templates/proposal-cover_ko.md +31 -0
- package/skills/render-pdf-doc/templates/reference-table.md +22 -0
- package/skills/render-pdf-doc/templates/reference-table_ko.md +20 -0
- package/skills/replicate-study/SKILL.md +150 -0
- package/skills/replicate-study/references/harmonization_3country.csv +47 -0
- package/skills/replicate-study/references/harmonization_knhanes_nhanes.csv +68 -0
- package/skills/replicate-study/references/methodology_extraction_template.md +134 -0
- package/skills/replicate-study/skill.yml +37 -0
- package/skills/review-paper/SKILL.md +104 -0
- package/skills/review-paper/references/macro_skeleton.md +6 -0
- package/skills/review-paper/skill.yml +25 -0
- package/skills/revise/SKILL.md +515 -0
- package/skills/revise/references/r2r_voice.md +346 -0
- package/skills/revise/skill.yml +43 -0
- package/skills/search-lit/SKILL.md +443 -0
- package/skills/search-lit/references/parse_pubmed.py +326 -0
- package/skills/search-lit/references/pubmed_eutils.sh +111 -0
- package/skills/search-lit/skill.yml +46 -0
- package/skills/self-review/SKILL.md +1045 -0
- package/skills/self-review/references/domain-probes/ai_overclaiming.md +47 -0
- package/skills/self-review/references/domain-probes/narrative_review.md +44 -0
- package/skills/self-review/references/domain-probes/observational_confounding.md +48 -0
- package/skills/self-review/references/domain-probes/radiomics.md +38 -0
- package/skills/self-review/references/domain-probes/sr_ma.md +87 -0
- package/skills/self-review/references/domain-probes/survival_prognostic.md +68 -0
- package/skills/self-review/references/exemplar_findings/README.md +43 -0
- package/skills/self-review/references/exemplar_findings/cohort_arithmetic_mismatch.md +35 -0
- package/skills/self-review/references/exemplar_findings/estimand_drift_posthoc_primary.md +39 -0
- package/skills/self-review/references/exemplar_findings/scope_overreach_cross_sectional.md +35 -0
- package/skills/self-review/references/exemplar_findings/unadjusted_confounder.md +36 -0
- package/skills/self-review/references/panel_review_template.md +177 -0
- package/skills/self-review/scripts/check_artifact_coverage.py +301 -0
- package/skills/self-review/scripts/check_claim_artifact.py +248 -0
- package/skills/self-review/scripts/check_classical_style.py +185 -0
- package/skills/self-review/scripts/check_cohort_arithmetic.py +481 -0
- package/skills/self-review/scripts/check_confounding_completeness.py +287 -0
- package/skills/self-review/scripts/check_panel_diversity.py +336 -0
- package/skills/self-review/scripts/check_reference_adequacy.py +392 -0
- package/skills/self-review/scripts/check_reviewer_team_consistency.py +412 -0
- package/skills/self-review/scripts/check_scope_coherence.py +177 -0
- package/skills/self-review/skill.yml +47 -0
- package/skills/self-review/tests/fixtures/claim_manuscript.md +17 -0
- package/skills/self-review/tests/fixtures/claim_prereg.md +6 -0
- package/skills/self-review/tests/fixtures/cohort_bad.md +21 -0
- package/skills/self-review/tests/fixtures/cohort_clean.md +21 -0
- package/skills/self-review/tests/fixtures/cohort_partition.csv +5 -0
- package/skills/self-review/tests/fixtures/coverage_analysis/31_delong_nested_added_value.csv +3 -0
- package/skills/self-review/tests/fixtures/coverage_analysis/table1_demographics.csv +3 -0
- package/skills/self-review/tests/fixtures/coverage_clean.md +13 -0
- package/skills/self-review/tests/fixtures/coverage_manuscript.md +11 -0
- package/skills/self-review/tests/fixtures/panel_collapse.json +27 -0
- package/skills/self-review/tests/fixtures/panel_good.json +32 -0
- package/skills/self-review/tests/fixtures/panel_monoculture.json +32 -0
- package/skills/self-review/tests/fixtures/refadeq_letter.md +13 -0
- package/skills/self-review/tests/fixtures/refadeq_original_fixed.md +42 -0
- package/skills/self-review/tests/fixtures/refadeq_original_uncited.md +40 -0
- package/skills/self-review/tests/fixtures/scope_bad.md +9 -0
- package/skills/self-review/tests/fixtures/scope_clean.md +8 -0
- package/skills/self-review/tests/fixtures/scope_surrogate.md +8 -0
- package/skills/self-review/tests/fixtures/style_bad.md +13 -0
- package/skills/self-review/tests/fixtures/style_clean.md +11 -0
- package/skills/self-review/tests/fixtures/table1_by_exposure.csv +11 -0
- package/skills/self-review/tests/test_artifact_coverage.sh +44 -0
- package/skills/self-review/tests/test_claim_artifact.sh +50 -0
- package/skills/self-review/tests/test_classical_style.sh +44 -0
- package/skills/self-review/tests/test_cohort_arithmetic.sh +49 -0
- package/skills/self-review/tests/test_confounding_completeness.sh +66 -0
- package/skills/self-review/tests/test_panel_diversity.sh +55 -0
- package/skills/self-review/tests/test_panel_mode.sh +69 -0
- package/skills/self-review/tests/test_reference_adequacy.sh +68 -0
- package/skills/self-review/tests/test_reviewer_team_consistency.sh +138 -0
- package/skills/self-review/tests/test_scope_coherence.sh +46 -0
- package/skills/setup-medsci/SKILL.md +110 -0
- package/skills/setup-medsci/references/setup-checklist.md +51 -0
- package/skills/setup-medsci/skill.yml +30 -0
- package/skills/sync-submission/SKILL.md +382 -0
- package/skills/sync-submission/scripts/author_registry_example.yaml +36 -0
- package/skills/sync-submission/scripts/blind_sweep.py +203 -0
- package/skills/sync-submission/scripts/check_asset_anonymization.py +300 -0
- package/skills/sync-submission/scripts/check_cross_artifact_stale.py +211 -0
- package/skills/sync-submission/scripts/cover_letter_drift_check.py +451 -0
- package/skills/sync-submission/scripts/cross_document_n_check.py +486 -0
- package/skills/sync-submission/scripts/detect_copy_divergence.py +136 -0
- package/skills/sync-submission/scripts/preflight_gate.py +458 -0
- package/skills/sync-submission/scripts/scope_drift_check.py +362 -0
- package/skills/sync-submission/scripts/sync_submission.py +169 -0
- package/skills/sync-submission/skill.yml +43 -0
- package/skills/sync-submission/tests/fixtures/copy_ok.md +5 -0
- package/skills/sync-submission/tests/fixtures/copy_stale.md +5 -0
- package/skills/sync-submission/tests/fixtures/ssot.md +5 -0
- package/skills/sync-submission/tests/test_asset_anonymization.sh +99 -0
- package/skills/sync-submission/tests/test_copy_divergence.sh +44 -0
- package/skills/sync-submission/tests/test_cross_artifact_stale.sh +80 -0
- package/skills/sync-submission/tests/test_cross_document_n.sh +132 -0
- package/skills/sync-submission/tests/test_preflight_gate.sh +112 -0
- package/skills/sync-submission/tests/test_scope_drift.sh +122 -0
- package/skills/sync-submission/tests/test_vN_docx_assertion.sh +51 -0
- package/skills/verify-refs/SKILL.md +177 -0
- package/skills/verify-refs/references/manual_checkpoint_guide.md +100 -0
- package/skills/verify-refs/scripts/verify_cli.sh +62 -0
- package/skills/verify-refs/scripts/verify_refs.py +782 -0
- package/skills/verify-refs/skill.yml +44 -0
- package/skills/verify-refs/tests/fixtures/pagination_placeholder.bib +17 -0
- package/skills/verify-refs/tests/test_pagination_placeholder.sh +42 -0
- package/skills/version-dataset/SKILL.md +143 -0
- package/skills/version-dataset/references/manifest_schema.md +72 -0
- package/skills/version-dataset/scripts/version_dataset.py +242 -0
- package/skills/version-dataset/skill.yml +35 -0
- package/skills/version-dataset/tests/test_version_dataset.sh +52 -0
- package/skills/write-paper/SKILL.md +1148 -0
- package/skills/write-paper/references/exemplar_methods/README.md +38 -0
- package/skills/write-paper/references/exemplar_methods/ai_validation_tripod_claim.md +47 -0
- package/skills/write-paper/references/exemplar_methods/diagnostic_accuracy_stard.md +50 -0
- package/skills/write-paper/references/exemplar_methods/observational_cohort_strobe.md +43 -0
- package/skills/write-paper/references/journal_profiles/AJNR.md +185 -0
- package/skills/write-paper/references/journal_profiles/AJR.md +149 -0
- package/skills/write-paper/references/journal_profiles/Abdominal_Radiology.md +139 -0
- package/skills/write-paper/references/journal_profiles/Academic_Radiology.md +90 -0
- package/skills/write-paper/references/journal_profiles/Annals_of_Internal_Medicine.md +150 -0
- package/skills/write-paper/references/journal_profiles/Artificial_Intelligence_in_Medicine.md +82 -0
- package/skills/write-paper/references/journal_profiles/British_Journal_of_Radiology.md +161 -0
- package/skills/write-paper/references/journal_profiles/CVIR.md +157 -0
- package/skills/write-paper/references/journal_profiles/Chest.md +270 -0
- package/skills/write-paper/references/journal_profiles/Clinical_Radiology.md +160 -0
- package/skills/write-paper/references/journal_profiles/Clinical_and_Molecular_Hepatology.md +147 -0
- package/skills/write-paper/references/journal_profiles/Diabetes_Metabolism_Journal.md +163 -0
- package/skills/write-paper/references/journal_profiles/Diagnostic_and_Interventional_Radiology.md +216 -0
- package/skills/write-paper/references/journal_profiles/Endocrinology_and_Metabolism.md +167 -0
- package/skills/write-paper/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +192 -0
- package/skills/write-paper/references/journal_profiles/European_Radiology.md +159 -0
- package/skills/write-paper/references/journal_profiles/Hepatology_Communications.md +110 -0
- package/skills/write-paper/references/journal_profiles/Hepatology_International.md +106 -0
- package/skills/write-paper/references/journal_profiles/IEEE_TMI.md +180 -0
- package/skills/write-paper/references/journal_profiles/INSI.md +163 -0
- package/skills/write-paper/references/journal_profiles/Investigative_Radiology.md +86 -0
- package/skills/write-paper/references/journal_profiles/JACC_Advances.md +197 -0
- package/skills/write-paper/references/journal_profiles/JACC_Asia.md +168 -0
- package/skills/write-paper/references/journal_profiles/JACR.md +87 -0
- package/skills/write-paper/references/journal_profiles/JAMA.md +188 -0
- package/skills/write-paper/references/journal_profiles/JAMA_Network_Open.md +170 -0
- package/skills/write-paper/references/journal_profiles/JCSM.md +266 -0
- package/skills/write-paper/references/journal_profiles/JKMS.md +201 -0
- package/skills/write-paper/references/journal_profiles/JMIR.md +88 -0
- package/skills/write-paper/references/journal_profiles/JMIR_Medical_Education.md +86 -0
- package/skills/write-paper/references/journal_profiles/JNIS.md +227 -0
- package/skills/write-paper/references/journal_profiles/JVIR.md +158 -0
- package/skills/write-paper/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +191 -0
- package/skills/write-paper/references/journal_profiles/Journal_of_Stroke.md +176 -0
- package/skills/write-paper/references/journal_profiles/KJR.md +185 -0
- package/skills/write-paper/references/journal_profiles/Korean_Circulation_Journal.md +184 -0
- package/skills/write-paper/references/journal_profiles/Korean_Journal_of_Internal_Medicine.md +178 -0
- package/skills/write-paper/references/journal_profiles/Lancet_Gastroenterology_and_Hepatology.md +127 -0
- package/skills/write-paper/references/journal_profiles/Liver_International.md +165 -0
- package/skills/write-paper/references/journal_profiles/Medical_Image_Analysis.md +147 -0
- package/skills/write-paper/references/journal_profiles/NEJM.md +147 -0
- package/skills/write-paper/references/journal_profiles/Nature_Medicine.md +181 -0
- package/skills/write-paper/references/journal_profiles/Neuroradiology.md +151 -0
- package/skills/write-paper/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +184 -0
- package/skills/write-paper/references/journal_profiles/PLOS_Medicine.md +166 -0
- package/skills/write-paper/references/journal_profiles/RYAI.md +124 -0
- package/skills/write-paper/references/journal_profiles/Radiology.md +173 -0
- package/skills/write-paper/references/journal_profiles/Skeletal_Radiology.md +135 -0
- package/skills/write-paper/references/journal_profiles/Stroke.md +210 -0
- package/skills/write-paper/references/journal_profiles/The_BMJ.md +121 -0
- package/skills/write-paper/references/journal_profiles/The_Lancet.md +112 -0
- package/skills/write-paper/references/journal_profiles/The_Lancet_Digital_Health.md +104 -0
- package/skills/write-paper/references/journal_profiles/World_Journal_of_Hepatology.md +106 -0
- package/skills/write-paper/references/journal_profiles/npj_Digital_Medicine.md +93 -0
- package/skills/write-paper/references/paper_types/ai_validation.md +270 -0
- package/skills/write-paper/references/paper_types/animal_study.md +194 -0
- package/skills/write-paper/references/paper_types/case_report.md +237 -0
- package/skills/write-paper/references/paper_types/cross_national.md +328 -0
- package/skills/write-paper/references/paper_types/letter.md +127 -0
- package/skills/write-paper/references/paper_types/meta_analysis.md +181 -0
- package/skills/write-paper/references/paper_types/nhis_cohort.md +297 -0
- package/skills/write-paper/references/paper_types/original_article.md +221 -0
- package/skills/write-paper/references/paper_types/technical_note.md +131 -0
- package/skills/write-paper/references/section_guides/discussion.md +155 -0
- package/skills/write-paper/references/section_guides/introduction.md +108 -0
- package/skills/write-paper/references/section_guides/methods.md +144 -0
- package/skills/write-paper/references/section_guides/results.md +113 -0
- package/skills/write-paper/references/section_guides/step7_1_classical_qc.md +67 -0
- package/skills/write-paper/references/section_guides/step7_4a_audit_recovery.md +74 -0
- package/skills/write-paper/references/section_guides/title_abstract.md +123 -0
- package/skills/write-paper/references/section_templates/methods_statistical.md +147 -0
- package/skills/write-paper/scripts/check_placeholders.py +182 -0
- package/skills/write-paper/skill.yml +48 -0
- package/skills/write-paper/tests/test_placeholders.sh +107 -0
- package/skills/write-protocol/SKILL.md +243 -0
- package/skills/write-protocol/references/ethics_checklist.md +150 -0
- package/skills/write-protocol/references/protocol_template.md +304 -0
- package/skills/write-protocol/skill.yml +34 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-study
|
|
3
|
+
description: >
|
|
4
|
+
Study design and validity review for radiology and medical AI research. Identifies analysis unit,
|
|
5
|
+
cohort logic, leakage risks, comparator design, validation strategy, and reporting guideline fit before
|
|
6
|
+
drafting or submission.
|
|
7
|
+
triggers: study design, leakage check, cohort design, analysis plan, validation strategy, comparator design, bias check
|
|
8
|
+
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
9
|
+
model: inherit
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Design-Study Skill
|
|
13
|
+
|
|
14
|
+
## Purpose
|
|
15
|
+
|
|
16
|
+
This skill pressure-tests whether a study is answerable, interpretable, and defensible before large amounts of drafting or analysis work accumulate.
|
|
17
|
+
|
|
18
|
+
Use it when:
|
|
19
|
+
- a study question is known but the analysis plan is still fluid
|
|
20
|
+
- the user wants a methods sanity check
|
|
21
|
+
- a manuscript feels vulnerable to reviewer criticism
|
|
22
|
+
- a peer review requires explicit methodological diagnosis
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Communication Rules
|
|
27
|
+
|
|
28
|
+
- Communicate with the user in their preferred language.
|
|
29
|
+
- Use English for statistical, radiologic, and reporting-guideline terminology.
|
|
30
|
+
- Be direct about validity risks, but always propose the smallest feasible fix first.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Core Review Questions
|
|
35
|
+
|
|
36
|
+
Always inspect these dimensions:
|
|
37
|
+
|
|
38
|
+
1. What is the exact research question?
|
|
39
|
+
2. What is the analysis unit: patient, lesion, exam, study, phase, report?
|
|
40
|
+
3. What is the index date or decision point?
|
|
41
|
+
4. How are inclusion and exclusion criteria applied?
|
|
42
|
+
5. Is there any information leakage?
|
|
43
|
+
6. What is the reference standard or endpoint definition?
|
|
44
|
+
7. What comparator is clinically meaningful?
|
|
45
|
+
8. What validation strategy is used?
|
|
46
|
+
9. What uncertainty reporting is required?
|
|
47
|
+
10. Which reporting guideline best fits?
|
|
48
|
+
11. Are exposure/outcome/covariate **definitions literature-grounded**, or invented ad-hoc from the data dictionary? If ad-hoc, defer to `/define-variables` before drafting Methods.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Standard Output
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
## Study Design Review
|
|
56
|
+
Question: ...
|
|
57
|
+
Study type: ...
|
|
58
|
+
Analysis unit: ...
|
|
59
|
+
Index date / prediction timepoint: ...
|
|
60
|
+
|
|
61
|
+
### Strengths
|
|
62
|
+
- ...
|
|
63
|
+
|
|
64
|
+
### Major validity risks
|
|
65
|
+
1. ...
|
|
66
|
+
2. ...
|
|
67
|
+
|
|
68
|
+
### Minimal fixes
|
|
69
|
+
- ...
|
|
70
|
+
|
|
71
|
+
### Reporting fit
|
|
72
|
+
- Recommended guideline: ...
|
|
73
|
+
|
|
74
|
+
### Decision
|
|
75
|
+
- Ready for analysis / Needs redesign / Drafting can proceed with limitations
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Workflow
|
|
81
|
+
|
|
82
|
+
### Phase 1: Reconstruct the study
|
|
83
|
+
|
|
84
|
+
Extract from protocol, draft, slides, tables, or notes:
|
|
85
|
+
- clinical problem
|
|
86
|
+
- intended use case
|
|
87
|
+
- population
|
|
88
|
+
- inputs
|
|
89
|
+
- outputs
|
|
90
|
+
- outcome definition
|
|
91
|
+
- timing of variable availability
|
|
92
|
+
|
|
93
|
+
**Gate:** Present the reconstructed study summary (question, analysis unit, intended use)
|
|
94
|
+
to the user. Confirm before proceeding — if the reconstruction is wrong, the entire
|
|
95
|
+
validity review will be misdirected.
|
|
96
|
+
|
|
97
|
+
### Phase 2: Check structural validity
|
|
98
|
+
|
|
99
|
+
#### A. Analysis unit
|
|
100
|
+
|
|
101
|
+
Look for mismatches such as:
|
|
102
|
+
- patient-level claim from lesion-level analysis
|
|
103
|
+
- exam-level split with patient overlap
|
|
104
|
+
- phase-level samples treated as independent
|
|
105
|
+
|
|
106
|
+
#### B. Leakage
|
|
107
|
+
|
|
108
|
+
Look for:
|
|
109
|
+
- postoperative features used for preoperative prediction
|
|
110
|
+
- normalization or thresholding performed before data split
|
|
111
|
+
- repeated exams across train/test
|
|
112
|
+
- reader annotations derived from outcome information
|
|
113
|
+
- **input-text contamination for NLP/LLM extraction tasks**: if the model input includes report
|
|
114
|
+
sections such as clinical history, indication, impression, prior diagnosis, or referral text, confirm
|
|
115
|
+
that those fields do not literally name or strongly imply the target label. If the target is already
|
|
116
|
+
present in the supplied text, the task is information retrieval under label leakage, not phenotype
|
|
117
|
+
inference; redesign the input mask, report a sensitivity analysis excluding leaky fields, or reframe the
|
|
118
|
+
claim.
|
|
119
|
+
- **construct dependence** (a predictor that is a definitional component of the outcome). Two cases:
|
|
120
|
+
(i) *mathematical definition* — an input that computes the outcome (when the outcome is HOMA-IR =
|
|
121
|
+
f(fasting insulin, fasting glucose), those two inputs are not independent predictors); (ii)
|
|
122
|
+
*near-tautological composite* — a ratio or score built from the outcome's defining components, which
|
|
123
|
+
shows an inflated, near-circular association. Test: "could this predictor be derived, in whole or
|
|
124
|
+
part, from the outcome's definition or the same measurement?" If yes, exclude it, or retain it only
|
|
125
|
+
as a labeled calibration probe rather than a reported discovery.
|
|
126
|
+
|
|
127
|
+
#### F. Time origin & survivorship (incident / transition models)
|
|
128
|
+
|
|
129
|
+
For any time-to-event or incident/transition design, check before drafting:
|
|
130
|
+
- **Time origin per model.** Each incident model starts its at-risk clock at the correct origin. Watch for **immortal-time bias** (a span in which the event cannot occur, misattributed to one group) and **left-truncation / delayed entry** (subjects entering the risk set after the origin).
|
|
131
|
+
- **Mediator-ascertainment-window survivorship.** A "progressor" / transition label that is conditional on *surviving to* a later ascertainment (a second scan, a follow-up visit) is survivorship-biased; plan a landmark time or an explicit intermediate-state (multistate / illness-death) model.
|
|
132
|
+
- **Primary-analysis-set selection.** If the primary will not be the full cohort (e.g., complete-case while a large fraction is missing), pre-specify the selection justification and a MAR rationale; do not let the complete-case model become primary because it is the significant one (an outcome-dependent choice).
|
|
133
|
+
- A design that cannot yet answer these should say so honestly — but note that at review time a Methods/Limitations admission that the issue was *"not formally assessed"* is escalated to a MAJOR by the survival probe (S1), not waved through as a limitation.
|
|
134
|
+
|
|
135
|
+
#### C. Reference standard
|
|
136
|
+
|
|
137
|
+
Check:
|
|
138
|
+
- who established ground truth
|
|
139
|
+
- when it was established
|
|
140
|
+
- whether blinding was possible
|
|
141
|
+
- whether only a subset had gold standard verification
|
|
142
|
+
- **Construct ↔ nominal-definition match.** Does the exposure/finding *construct* stay inside its stated definition, or does it quietly exceed it? An "incidentaloma" defined as an *indeterminate* finding must not include frank malignancy reads; a label that overshoots its definition inflates the apparent cohort and breaks the κ. For each construct, restate the nominal definition and confirm every included case satisfies it.
|
|
143
|
+
- **Per-flag reference-standard concordance.** When the index finding is flagged against a reference standard, report the concordance *per flag category* (not just overall). A construct where a large fraction of flags do not match the reference standard (e.g., ~86% non-match) is measuring something other than the named construct.
|
|
144
|
+
- **Manuscript definition ↔ `variable_operationalization.md`.** The variable definitions written in Methods must match the operationalization table verbatim (dictionary-first). A blinded re-classification form must quote the analytic protocol's definition verbatim — paraphrase / "common-sense extension" in the form (but not the Methods) is the documented cause of a low κ that is a *definition mismatch*, not real disagreement. Cross-check with `/define-variables` output before drafting.
|
|
145
|
+
|
|
146
|
+
#### D. Validation
|
|
147
|
+
|
|
148
|
+
Classify:
|
|
149
|
+
- apparent only
|
|
150
|
+
- internal split
|
|
151
|
+
- cross-validation
|
|
152
|
+
- temporal validation
|
|
153
|
+
- external validation
|
|
154
|
+
- multi-center external validation
|
|
155
|
+
|
|
156
|
+
#### E. Reader / Expert-Elicitation Study Design
|
|
157
|
+
|
|
158
|
+
When the study elicits expert ratings (reader study, annotation panel, AI-output evaluation), check
|
|
159
|
+
the following before data collection.
|
|
160
|
+
|
|
161
|
+
**Rubric design**
|
|
162
|
+
- **Decouple the axes.** Each rated dimension should measure one construct. Keep "is the finding
|
|
163
|
+
valid/correct" separate from "is it novel", "is it feasible to measure", "does it add value over
|
|
164
|
+
current tools", and "would it change action". A candidate can be high-validity yet low-added-value
|
|
165
|
+
("real but redundant"); a single blended score hides this.
|
|
166
|
+
- **Anchor every Likert point** with a short verbal descriptor; pilot the anchors with at least one
|
|
167
|
+
reviewer before locking.
|
|
168
|
+
- **Pre-specify discriminant validity**: hypothesize which dimensions should correlate vs be
|
|
169
|
+
orthogonal, then report the full inter-dimension correlation matrix to confirm the rubric measures
|
|
170
|
+
distinct constructs.
|
|
171
|
+
|
|
172
|
+
**Calibration probes (planted control items)**
|
|
173
|
+
Insert a small number of deliberate control items, blinded and randomized across raters (record who
|
|
174
|
+
received which, e.g. a `probe_arm` flag), to (i) anchor the scale, (ii) measure rater drift and
|
|
175
|
+
fatigue, and (iii) audit the rubric and pipeline itself. Four useful flavors:
|
|
176
|
+
- **Positive control / "too-good" item** — a known-strong or near-tautological item; tests whether
|
|
177
|
+
raters equate "largest effect" with "best", and whether an upstream construct-independence gate works.
|
|
178
|
+
- **Known-bad negative control** — an engineered defect (fabricated reference, missing key statistic);
|
|
179
|
+
expected to score low.
|
|
180
|
+
- **Instability item** — an estimate that reverses or fails to replicate on holdout; tests caveat handling.
|
|
181
|
+
- **Mechanism-contradiction item** — an empirical direction that opposes the proposed mechanism.
|
|
182
|
+
|
|
183
|
+
Report inter-rater reliability **on the control items separately** as primary evidence of rubric and
|
|
184
|
+
scale validity; a low overall ICC is interpretable only if raters at least converge on the controls.
|
|
185
|
+
|
|
186
|
+
**Operational rigor**
|
|
187
|
+
- Randomize item order **per reviewer** (not one global seed); analyze order and fatigue effects.
|
|
188
|
+
- Collect reviewer metadata (years of experience, prior AI-evaluation experience, subspecialty) for
|
|
189
|
+
descriptive reporting.
|
|
190
|
+
- Define a structured export schema (per-item ratings, free-text justifications, follow-ups, timing) up front.
|
|
191
|
+
- Require each item to be judged standalone; discourage cross-item references in free-text, which
|
|
192
|
+
signal non-independent rating.
|
|
193
|
+
|
|
194
|
+
For an AI-system-versus-human-expert benchmark specifically, route to `/design-ai-benchmarking`, which
|
|
195
|
+
extends this subsection with arm definition, LLM-as-judge versus human-as-judge adjudication, and a
|
|
196
|
+
structured export schema.
|
|
197
|
+
|
|
198
|
+
### Phase 3: Clinical framing
|
|
199
|
+
|
|
200
|
+
Ask whether the comparator and endpoint support the stated claim:
|
|
201
|
+
- is the model better than current practice or just another model?
|
|
202
|
+
- is the endpoint clinically meaningful?
|
|
203
|
+
- does performance translate to action?
|
|
204
|
+
- **incremental value**: if the study frames the model/marker as adding value *beyond* / *on top of* / *incremental to* an existing tool (a clinical score, a routine test, a baseline model), the design must pre-specify the baseline comparator built from the in-routine-use predictors **and** an incremental-value metric — ΔC-index / ΔAUC (with a paired CI, e.g. DeLong), categorical or continuous NRI, IDI, or decision-curve net benefit. A standalone discrimination number ("our model's AUC was 0.84") does not support a "beyond X" claim; without the nested-model comparison the finding may be real but redundant. Plan this at design time — it cannot be added post hoc without the baseline model.
|
|
205
|
+
- **fine-tuning contribution baseline**: if an NLP/LLM study claims that fine-tuning, LoRA, prompt
|
|
206
|
+
engineering, or a multi-agent wrapper improves extraction/classification, pre-specify a same-backbone
|
|
207
|
+
zero-shot or few-shot comparator on the identical input, output schema, and test split. A comparison
|
|
208
|
+
only against a weaker or unrelated baseline cannot establish that the proposed adaptation adds value.
|
|
209
|
+
- **endpoint↔conclusion scope**: decide up front what *kind* of conclusion the design can support, so the manuscript does not overreach. A cross-sectional / single-visit / prevalence design cannot support a prognostic or surveillance claim (rescreen interval, disease progression) — that needs longitudinal follow-up. A binary surrogate endpoint (present/absent, >0, dichotomized) is risk stratification, not a patient-care directive (defer/withhold/initiate therapy). At review time `/self-review` §D + `check_scope_coherence.py` flag `CROSS_SECTIONAL_PROGNOSTIC` / `SURROGATE_CARE_DIRECTIVE` against the conclusion.
|
|
210
|
+
|
|
211
|
+
### Phase 4: Reporting fit
|
|
212
|
+
|
|
213
|
+
Recommend one primary guideline:
|
|
214
|
+
- `TRIPOD-AI`
|
|
215
|
+
- `CLAIM`
|
|
216
|
+
- `STARD`
|
|
217
|
+
- `STROBE`
|
|
218
|
+
- `PRISMA`
|
|
219
|
+
- `CARE`
|
|
220
|
+
- `ARRIVE`
|
|
221
|
+
- journal-specific additions if needed
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Frequent Failure Modes
|
|
226
|
+
|
|
227
|
+
### Diagnostic AI
|
|
228
|
+
- no clinically relevant comparator
|
|
229
|
+
- exam-level split instead of patient-level split
|
|
230
|
+
- unclear reference standard
|
|
231
|
+
- AUROC-only reporting without threshold metrics
|
|
232
|
+
|
|
233
|
+
### Prognostic modeling
|
|
234
|
+
- unclear time zero
|
|
235
|
+
- immortal time bias
|
|
236
|
+
- feature timing mismatch
|
|
237
|
+
- no calibration
|
|
238
|
+
|
|
239
|
+
### Retrospective cohort / screening database
|
|
240
|
+
- **time zero misalignment**: cohort entry ≠ follow-up start → immortal time bias
|
|
241
|
+
- interval-censored outcomes treated as exact → underestimation of event times
|
|
242
|
+
- healthy volunteer bias unacknowledged → inflated external validity claims
|
|
243
|
+
- surveillance bias from unequal follow-up frequency between groups
|
|
244
|
+
- **3 bias classification (Hernan/Robins)**: selection bias (who enters), information bias (how measured), confounding (what else differs) — explicitly map each threat
|
|
245
|
+
- **confounding completeness**: pre-specify the adjustment set from a DAG (not a Table-1 p < 0.05 rule), and plan to report whether any measured covariate that turns out imbalanced by exposure but outside the adjustment set leaves the primary estimate robust (an extended-adjustment sensitivity model). At review time `/self-review` Phase 2.5e + the O1–O6 probes in `observational_confounding.md` check this against Table 1.
|
|
246
|
+
|
|
247
|
+
### Multimodal LLM / report generation
|
|
248
|
+
- no clear rubric for clinical correctness
|
|
249
|
+
- benchmark labels derived from noisy reports without adjudication
|
|
250
|
+
- unsupported claims about safety or workflow benefit
|
|
251
|
+
- input text contains the target label or diagnosis being predicted
|
|
252
|
+
- no same-backbone zero-shot/few-shot baseline for a fine-tuning or prompt-engineering claim
|
|
253
|
+
|
|
254
|
+
### Imaging meta-analysis
|
|
255
|
+
- overlapping cohorts
|
|
256
|
+
- paired modalities analyzed as independent
|
|
257
|
+
- heterogeneity metrics missing
|
|
258
|
+
- zero-cell handling unspecified
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Minimal-Fix Principle
|
|
263
|
+
|
|
264
|
+
Whenever possible, recommend the smallest feasible repair first:
|
|
265
|
+
|
|
266
|
+
- clarify the claim
|
|
267
|
+
- narrow the target population
|
|
268
|
+
- add a limitation statement
|
|
269
|
+
- add a clinically relevant baseline
|
|
270
|
+
- re-run one key sensitivity analysis
|
|
271
|
+
- redefine the endpoint more explicitly
|
|
272
|
+
|
|
273
|
+
Escalate to redesign only when the central claim is not defensible otherwise.
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Handoff Rules
|
|
278
|
+
|
|
279
|
+
- route to `analyze-stats` when the design is basically sound but analysis details need refinement
|
|
280
|
+
- route to `check-reporting` after the design is locked
|
|
281
|
+
- route to `self-review` when the user wants a pre-submission quality check on their own manuscript
|
|
282
|
+
- route back to `write-paper` only after the main validity risks are documented
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## What This Skill Does NOT Do
|
|
287
|
+
|
|
288
|
+
- It does not compute statistics directly
|
|
289
|
+
- It does not draft full manuscript prose
|
|
290
|
+
- It does not resolve raw data engineering issues
|
|
291
|
+
- It does not replace a full peer review when journal-facing tone is required
|
|
292
|
+
|
|
293
|
+
## Anti-Hallucination
|
|
294
|
+
|
|
295
|
+
- **Never fabricate references.** All citations must be verified via `/search-lit` with confirmed DOI or PMID. Mark unverified references as `[UNVERIFIED - NEEDS MANUAL CHECK]`.
|
|
296
|
+
- **Never invent clinical definitions, diagnostic criteria, or guideline recommendations.** If uncertain, flag with `[VERIFY]` and ask the user.
|
|
297
|
+
- **Never fabricate numerical results** — compliance percentages, scores, effect sizes, or sample sizes must come from actual data or analysis output.
|
|
298
|
+
- If a reporting guideline item, journal policy, or clinical standard is uncertain, state the uncertainty rather than guessing.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
schema_version: 2
|
|
2
|
+
name: design-study
|
|
3
|
+
layer: D
|
|
4
|
+
owner_domain: study_design
|
|
5
|
+
|
|
6
|
+
when_to_use: "Review study design and validity (analysis unit, cohort logic, leakage, comparator, validation, reporting fit) before drafting or submission."
|
|
7
|
+
when_NOT_to_use: "Sample-size math (use calc-sample-size); variable definitions (use define-variables)."
|
|
8
|
+
|
|
9
|
+
inputs:
|
|
10
|
+
- "study description / draft protocol"
|
|
11
|
+
outputs:
|
|
12
|
+
- "design and validity review (decision notes)"
|
|
13
|
+
side_effects:
|
|
14
|
+
- writes_decision_notes
|
|
15
|
+
downstream_consumers:
|
|
16
|
+
- calc-sample-size
|
|
17
|
+
- define-variables
|
|
18
|
+
- write-protocol
|
|
19
|
+
forbidden_actions:
|
|
20
|
+
- write_project_artifacts_beyond_decision_notes
|
|
21
|
+
- approve_design_with_uncorrected_leakage
|
|
22
|
+
|
|
23
|
+
# v2.1 quality card
|
|
24
|
+
purpose: "Surface design and validity risks (leakage, analysis unit, comparator, validation strategy) before a study is built or written."
|
|
25
|
+
safety_boundaries:
|
|
26
|
+
- "Advisory only: writes decision notes, not analysis or manuscript artifacts."
|
|
27
|
+
- "Names validity threats explicitly rather than rubber-stamping a design."
|
|
28
|
+
known_limitations:
|
|
29
|
+
- "A review reduces but cannot eliminate design risk; it is not a guarantee of validity."
|
|
30
|
+
- "No standalone demo; recommendations require researcher judgement."
|
|
31
|
+
validation_commands:
|
|
32
|
+
- "carry findings into write-protocol Methods and re-check with /self-review"
|
|
33
|
+
evidence_surface: manual_workflow
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fill-icmje-coi
|
|
3
|
+
description: >
|
|
4
|
+
Batch-generate per-author ICMJE Conflict of Interest Disclosure Forms
|
|
5
|
+
(`coi_disclosure.docx`) for manuscript submission. Pre-fills all 13 disclosure
|
|
6
|
+
items as "☒ None" + final certification ☒ using a synthetic seed template
|
|
7
|
+
shipped with the skill, then clones the seed per author with Date, Name, and
|
|
8
|
+
Manuscript Title replaced. Designed for the common case of hospital-based
|
|
9
|
+
observational research where no author has real financial conflicts; the
|
|
10
|
+
circulated forms become "reply 'no changes' + sign" for most authors and only
|
|
11
|
+
flag those who need to amend.
|
|
12
|
+
triggers: ICMJE, COI form, conflict of interest form, disclosure form, coi_disclosure.docx, 이해상충, 이해상충 폼, icmje 폼, 저자 동의서, submission forms
|
|
13
|
+
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
14
|
+
model: inherit
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Fill-ICMJE-COI Skill
|
|
18
|
+
|
|
19
|
+
You are helping a researcher prepare ICMJE Conflict of Interest Disclosure Forms
|
|
20
|
+
for every co-author on a manuscript about to be submitted to an ICMJE member
|
|
21
|
+
journal (CHEST, NEJM, JAMA, Lancet, Radiology, etc.). This skill batch-generates
|
|
22
|
+
one personalized `.docx` per author from a synthetic all-None seed shipped with
|
|
23
|
+
the skill, avoiding 10–20 minutes of repetitive Word clicking per author.
|
|
24
|
+
|
|
25
|
+
## Why This Skill Exists
|
|
26
|
+
|
|
27
|
+
The official ICMJE `coi_disclosure.docx` puts every field inside Word Content
|
|
28
|
+
Controls (Structured Document Tags, a.k.a. SDTs). Naive `python-docx`
|
|
29
|
+
manipulation of `cell.text` silently ignores SDT content, so the straightforward
|
|
30
|
+
programmatic approach does not work. The historical workaround was to open the
|
|
31
|
+
template in Word and manually fill each author's form (21 authors × 13
|
|
32
|
+
checkboxes × 2 clicks = ~500 clicks). This skill replaces that by operating
|
|
33
|
+
directly on `word/document.xml` inside the docx zip and doing literal-string
|
|
34
|
+
replacement — but that requires the target strings to already exist in the
|
|
35
|
+
seed, so the skill ships a pre-filled synthetic seed.
|
|
36
|
+
|
|
37
|
+
**Precedent:** a multi-author cohort manuscript submission — 6 authors
|
|
38
|
+
auto-filled in ~5 seconds from the synthetic seed with zero Word clicks.
|
|
39
|
+
|
|
40
|
+
## Core Principles (Do Not Violate)
|
|
41
|
+
|
|
42
|
+
1. **Never author SDT XML from scratch.** Only replace existing strings in an
|
|
43
|
+
already-populated seed. Creating Content Controls programmatically is
|
|
44
|
+
fragile and Word-version-dependent.
|
|
45
|
+
2. **Never ship a real author's filled form as the seed.** The template
|
|
46
|
+
directory contains `icmje_coi_seed_synthetic.docx` with all PII scrubbed
|
|
47
|
+
(synthetic name, title, date; metadata reset to `ICMJE` / `Anonymous`).
|
|
48
|
+
Real-person seeds leak PII through both document.xml and docProps.
|
|
49
|
+
3. **Never modify the 13 disclosure items or certification checkbox.** The
|
|
50
|
+
script only replaces Date/Name/Title. If any author has a real disclosure,
|
|
51
|
+
they must edit in Word manually — the skill's purpose is the common
|
|
52
|
+
all-None case.
|
|
53
|
+
4. **Always verify before circulation.** Each output must have 14 × ☒ and
|
|
54
|
+
13 × "None" in document.xml. The script runs this check implicitly by
|
|
55
|
+
preserving the seed structure; a post-generation grep is cheap insurance.
|
|
56
|
+
|
|
57
|
+
## When to Use This Skill
|
|
58
|
+
|
|
59
|
+
- Manuscript accepted for submission to an ICMJE member journal
|
|
60
|
+
- 3+ co-authors with no real financial conflicts
|
|
61
|
+
- Editorial Manager / submission portal requires per-author ICMJE disclosure docx
|
|
62
|
+
- About to hand-fill the same form 6–21 times
|
|
63
|
+
|
|
64
|
+
Skip this skill when:
|
|
65
|
+
- Any author has a real financial disclosure to list (they fill their own form
|
|
66
|
+
in Word; this skill does not help)
|
|
67
|
+
- Target journal uses its own declaration form (not ICMJE) — check author
|
|
68
|
+
guidelines first
|
|
69
|
+
- Only 1 author (not worth the setup)
|
|
70
|
+
|
|
71
|
+
## Execution
|
|
72
|
+
|
|
73
|
+
### Phase 1 — Intake
|
|
74
|
+
|
|
75
|
+
Ask the user (or extract from conversation):
|
|
76
|
+
1. **Manuscript title** (exact, as it will appear on title page)
|
|
77
|
+
2. **Submission date** (e.g., "April 20, 2026")
|
|
78
|
+
3. **Author list** — ordered, one name per slot: `[(1, "Author One"), (2, "Author Two"), ...]`
|
|
79
|
+
4. **Output directory** — typically `submission/{journal}/icmje_forms/`
|
|
80
|
+
|
|
81
|
+
Present the intake back to the user for confirmation (**Gate 1 — user approval**)
|
|
82
|
+
before generating anything. Explicitly name which authors will get all-None
|
|
83
|
+
forms and remind that anyone with a real disclosure must instead fill their own
|
|
84
|
+
form in Word.
|
|
85
|
+
|
|
86
|
+
### Phase 2 — Generate
|
|
87
|
+
|
|
88
|
+
Invoke the script with the synthetic seed that ships with this skill:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
python3 ${SKILL_DIR}/scripts/fill_icmje_coi.py \
|
|
92
|
+
--seed ${SKILL_DIR}/templates/icmje_coi_seed_synthetic.docx \
|
|
93
|
+
--seed-name "Placeholder Author" \
|
|
94
|
+
--seed-title "Placeholder Manuscript Title" \
|
|
95
|
+
--seed-date "January 1, 2000" \
|
|
96
|
+
--new-title "{exact manuscript title}" \
|
|
97
|
+
--new-date "{submission date}" \
|
|
98
|
+
--out-dir {out_dir} \
|
|
99
|
+
--authors '[[1,"Author One"],[2,"Author Two"],...]'
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
The script exits nonzero if any seed string is not found, preventing silent
|
|
103
|
+
failures.
|
|
104
|
+
|
|
105
|
+
### Phase 3 — Verify
|
|
106
|
+
|
|
107
|
+
For each generated docx, confirm:
|
|
108
|
+
- ☒ count = 14 (13 disclosure items + 1 final certification)
|
|
109
|
+
- "None" count = 13
|
|
110
|
+
- Correct name appears after "Your Name:"
|
|
111
|
+
- Correct title appears after "Manuscript Title:"
|
|
112
|
+
- No leakage of seed placeholder strings (`Placeholder Author`, `Placeholder Manuscript Title`, `January 1, 2000`)
|
|
113
|
+
|
|
114
|
+
Verification one-liner:
|
|
115
|
+
```bash
|
|
116
|
+
for f in {out_dir}/*.docx; do
|
|
117
|
+
python3 -c "
|
|
118
|
+
import zipfile, sys
|
|
119
|
+
xml = zipfile.ZipFile('$f').read('word/document.xml').decode()
|
|
120
|
+
assert xml.count('☒') == 14, 'bad ☒ count'
|
|
121
|
+
assert xml.count('None') == 13, 'bad None count'
|
|
122
|
+
assert 'Placeholder' not in xml, 'seed leak'
|
|
123
|
+
print('✓ $f')
|
|
124
|
+
"
|
|
125
|
+
done
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Present verification results to user (**Gate 2 — user review**) before handing
|
|
129
|
+
off files.
|
|
130
|
+
|
|
131
|
+
### Phase 4 — Circulation Guidance
|
|
132
|
+
|
|
133
|
+
Provide the user with circulation copy to send with each personalized form (write it in the co-authors' preferred language — Korean is common for Korean co-authors):
|
|
134
|
+
|
|
135
|
+
> Please review the attached ICMJE COI form.
|
|
136
|
+
> - If the contents are correct, sign and reply with a PDF.
|
|
137
|
+
> - If a change is needed, edit/check the relevant item, sign, and reply.
|
|
138
|
+
> - If there are no changes at all, reply "no changes" and return the signed PDF separately.
|
|
139
|
+
|
|
140
|
+
All 6–21 authors can be emailed in one `gws gmail draft` batch (**Gate 3 — user
|
|
141
|
+
approves batch send** before actually dispatching).
|
|
142
|
+
|
|
143
|
+
## Custom Seeds
|
|
144
|
+
|
|
145
|
+
If the user wants a custom seed (e.g., different default wording, pre-filled
|
|
146
|
+
items 2/3 with a common grant), generate it once as follows:
|
|
147
|
+
|
|
148
|
+
1. Open `templates/icmje_coi_seed_synthetic.docx` in Word
|
|
149
|
+
2. Edit the desired fields
|
|
150
|
+
3. Save as a new file under `{project}/submission/{journal}/` or a
|
|
151
|
+
local private seeds directory (outside this repo)
|
|
152
|
+
4. Pass `--seed /path/to/custom.docx` to the script along with the new seed
|
|
153
|
+
values for `--seed-name`, `--seed-title`, `--seed-date`
|
|
154
|
+
|
|
155
|
+
Do NOT commit custom seeds that contain real author names to the public
|
|
156
|
+
medsci-skills repo. Keep them in private per-project directories or a
|
|
157
|
+
local private seeds directory (outside this repo).
|
|
158
|
+
|
|
159
|
+
## Seed Provenance (how the shipped synthetic seed was created)
|
|
160
|
+
|
|
161
|
+
The shipped `templates/icmje_coi_seed_synthetic.docx` was derived from the
|
|
162
|
+
official ICMJE `coi_disclosure.docx` through the following steps:
|
|
163
|
+
|
|
164
|
+
1. Downloaded the official ICMJE template (`https://www.icmje.org/downloads/coi_disclosure.docx`)
|
|
165
|
+
2. Opened in Word, typed placeholder values:
|
|
166
|
+
- Date: `January 1, 2000`
|
|
167
|
+
- Your Name: `Placeholder Author`
|
|
168
|
+
- Manuscript Title: `Placeholder Manuscript Title`
|
|
169
|
+
3. Checked each of the 13 disclosure items' "None" option (14 checkboxes total including final certification)
|
|
170
|
+
4. Typed "None" in the "Name all entities" column for each item
|
|
171
|
+
5. Scrubbed `docProps/core.xml` metadata: creator=`ICMJE`, lastModifiedBy=`Anonymous`, dates=`2000-01-01`
|
|
172
|
+
6. Scrubbed `docProps/app.xml` Company/Manager fields
|
|
173
|
+
|
|
174
|
+
No real author's disclosure data is embedded. The file is safe to redistribute.
|
|
175
|
+
|
|
176
|
+
## Anti-Hallucination
|
|
177
|
+
|
|
178
|
+
- **Never invent author names, email addresses, or ORCIDs.** Pull them
|
|
179
|
+
verbatim from the manuscript's title page or the user's author list.
|
|
180
|
+
- **Never claim to have filled the 13 disclosure items** — they come from the
|
|
181
|
+
seed unchanged. If the user asks whether the script "handled the
|
|
182
|
+
disclosures," the honest answer is "it cloned the seed's ☒ None entries;
|
|
183
|
+
no author-specific disclosure reasoning happened."
|
|
184
|
+
- **Never promise the script works on a blank ICMJE template.** It does not —
|
|
185
|
+
the seed must be pre-filled with all-None ☒ + text.
|
|
186
|
+
- **Never edit seed XML by authoring new SDT elements.** If an error requires
|
|
187
|
+
altering the seed structure, stop and escalate to the user; Word-generated
|
|
188
|
+
SDT XML is the ground truth.
|
|
189
|
+
- **Never push private seed files to public repos.** If the user asks to
|
|
190
|
+
promote a custom seed, verify by `unzip -p seed.docx docProps/core.xml` that
|
|
191
|
+
no real names remain in metadata before committing.
|
|
192
|
+
|
|
193
|
+
## References
|
|
194
|
+
|
|
195
|
+
- ICMJE Disclosure of Interest page: https://www.icmje.org/disclosure-of-interest/
|
|
196
|
+
- ICMJE COI form download: https://www.icmje.org/downloads/coi_disclosure.docx
|
|
197
|
+
- ICMJE FAQ on disclosure forms: https://www.icmje.org/about-icmje/faqs/conflict-of-interest-disclosure-forms/
|
|
198
|
+
- ${SKILL_DIR}/scripts/fill_icmje_coi.py — generator CLI + Python API
|
|
199
|
+
- ${SKILL_DIR}/templates/icmje_coi_seed_synthetic.docx — shipped synthetic seed (PII-free)
|
|
200
|
+
|
|
201
|
+
## Related Skills
|
|
202
|
+
|
|
203
|
+
| Skill | Relationship |
|
|
204
|
+
|---|---|
|
|
205
|
+
| `write-paper` | Completes the manuscript whose title is used as input |
|
|
206
|
+
| `find-journal` | Identifies whether the target journal requires ICMJE form |
|
|
207
|
+
| `add-journal` | Journal profile records whether ICMJE form is required |
|
|
208
|
+
| `revise` | After revision, updated title may require re-generating forms |
|
|
209
|
+
|
|
210
|
+
## Non-Goals
|
|
211
|
+
|
|
212
|
+
- Filling journal-specific disclosure forms (Elsevier Declaration of Interest,
|
|
213
|
+
BMJ ICMJE derivative, etc.) — only the canonical ICMJE form
|
|
214
|
+
- Handling authors with real disclosures — those authors fill their own forms
|
|
215
|
+
- Signing the forms — authors sign manually after receiving their personalized docx
|
|
216
|
+
- Uploading to Editorial Manager — that remains manual, post-signature
|