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,75 @@
|
|
|
1
|
+
# PROBAST Assessment Guide
|
|
2
|
+
|
|
3
|
+
Prediction model Risk Of Bias ASsessment Tool.
|
|
4
|
+
Reference: Wolff RF et al. Ann Intern Med 2019;170(1):51-58. PMID: 30596875.
|
|
5
|
+
AI extension: PROBAST+AI (BMJ 2024).
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
PROBAST assesses 4 domains, each for Risk of Bias AND Applicability.
|
|
10
|
+
- **Signalling questions**: Yes / Probably yes / No / Probably no / No information
|
|
11
|
+
- **Domain judgment**: Low / High / Unclear
|
|
12
|
+
- **Overall judgment**: High if any domain is high; Low only if all domains are low
|
|
13
|
+
|
|
14
|
+
## Domain 1: Participants
|
|
15
|
+
|
|
16
|
+
### Signalling Questions (Risk of Bias)
|
|
17
|
+
1. Were appropriate data sources used (e.g., cohort, RCT, nested case-control)?
|
|
18
|
+
2. Were all inclusions and exclusions of participants appropriate?
|
|
19
|
+
|
|
20
|
+
### Applicability
|
|
21
|
+
- Do the participants and setting match the review question?
|
|
22
|
+
|
|
23
|
+
## Domain 2: Predictors
|
|
24
|
+
|
|
25
|
+
### Signalling Questions (Risk of Bias)
|
|
26
|
+
1. Were predictors defined and assessed in a similar way for all participants?
|
|
27
|
+
2. Were predictor assessments made without knowledge of outcome data?
|
|
28
|
+
3. Are all predictors available at the time the model is intended to be used?
|
|
29
|
+
|
|
30
|
+
### Applicability
|
|
31
|
+
- Do the predictors, their assessment, and timing match the review question?
|
|
32
|
+
|
|
33
|
+
## Domain 3: Outcome
|
|
34
|
+
|
|
35
|
+
### Signalling Questions (Risk of Bias)
|
|
36
|
+
1. Was the outcome determined appropriately?
|
|
37
|
+
2. Was a pre-specified or standard outcome definition used?
|
|
38
|
+
3. Were predictors excluded from the outcome definition?
|
|
39
|
+
4. Was the outcome defined and determined in a similar way for all participants?
|
|
40
|
+
5. Was the outcome determined without knowledge of predictor information?
|
|
41
|
+
6. Was the time interval between predictor assessment and outcome appropriate?
|
|
42
|
+
|
|
43
|
+
### Applicability
|
|
44
|
+
- Does the outcome and its definition/timing match the review question?
|
|
45
|
+
|
|
46
|
+
## Domain 4: Analysis
|
|
47
|
+
|
|
48
|
+
### Signalling Questions (Risk of Bias)
|
|
49
|
+
1. Were there a reasonable number of participants with the outcome?
|
|
50
|
+
2. Were continuous and categorical predictors handled appropriately?
|
|
51
|
+
3. Were all enrolled participants included in the analysis?
|
|
52
|
+
4. Were participants with missing data handled appropriately?
|
|
53
|
+
5. Was selection of predictors based on univariable analysis avoided?
|
|
54
|
+
6. Were complexities in the data accounted for appropriately?
|
|
55
|
+
7. Were relevant model performance measures evaluated appropriately?
|
|
56
|
+
8. Were model overfitting and optimism in model performance accounted for?
|
|
57
|
+
9. Do predictors and their assigned weights in the final model correspond to the reported multivariable analysis?
|
|
58
|
+
|
|
59
|
+
### For Validation Studies (additional)
|
|
60
|
+
- Were the model and its performance evaluated appropriately?
|
|
61
|
+
|
|
62
|
+
## PROBAST+AI Extensions (2024)
|
|
63
|
+
|
|
64
|
+
For AI/ML prediction models, additional considerations:
|
|
65
|
+
- **Data**: Training/validation/test split, data leakage check
|
|
66
|
+
- **Model**: Architecture transparency, hyperparameter tuning method
|
|
67
|
+
- **Performance**: Discrimination (AUC), calibration, fairness across subgroups
|
|
68
|
+
- **Reproducibility**: Code/data availability, external validation
|
|
69
|
+
|
|
70
|
+
## When to Use
|
|
71
|
+
|
|
72
|
+
- Diagnostic prediction models (e.g., AI classifiers for imaging findings)
|
|
73
|
+
- Prognostic prediction models (e.g., risk scores, survival prediction)
|
|
74
|
+
- Both development AND validation studies
|
|
75
|
+
- Use PROBAST+AI when the model involves machine learning or deep learning
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# QUADAS-2 Assessment Guide
|
|
2
|
+
|
|
3
|
+
Quality Assessment of Diagnostic Accuracy Studies, version 2.
|
|
4
|
+
Reference: Whiting PF et al. Ann Intern Med 2011;155(8):529-536.
|
|
5
|
+
|
|
6
|
+
## Structure
|
|
7
|
+
|
|
8
|
+
QUADAS-2 assesses 4 domains. Each domain has:
|
|
9
|
+
- **Signalling questions**: answered Yes / No / Unclear
|
|
10
|
+
- **Risk of bias judgment**: Low / High / Unclear
|
|
11
|
+
- **Applicability concern** (domains 1-3 only): Low / High / Unclear
|
|
12
|
+
|
|
13
|
+
## Domain 1: Patient Selection
|
|
14
|
+
|
|
15
|
+
### Signalling Questions
|
|
16
|
+
1. Was a consecutive or random sample of patients enrolled?
|
|
17
|
+
2. Was a case-control design avoided?
|
|
18
|
+
3. Did the study avoid inappropriate exclusions?
|
|
19
|
+
|
|
20
|
+
### Risk of Bias
|
|
21
|
+
- **Low**: Yes to all signalling questions
|
|
22
|
+
- **High**: No to any signalling question
|
|
23
|
+
- **Unclear**: Insufficient information
|
|
24
|
+
|
|
25
|
+
### Applicability
|
|
26
|
+
- Are there concerns that the included patients and setting do not match the review question?
|
|
27
|
+
|
|
28
|
+
## Domain 2: Index Test
|
|
29
|
+
|
|
30
|
+
### Signalling Questions
|
|
31
|
+
1. Were the index test results interpreted without knowledge of the results of the reference standard?
|
|
32
|
+
2. If a threshold was used, was it pre-specified?
|
|
33
|
+
|
|
34
|
+
### Risk of Bias
|
|
35
|
+
- **Low**: Yes to all signalling questions
|
|
36
|
+
- **High**: No to any signalling question
|
|
37
|
+
- **Unclear**: Insufficient information
|
|
38
|
+
|
|
39
|
+
### Applicability
|
|
40
|
+
- Are there concerns that the index test, its conduct, or interpretation differ from the review question?
|
|
41
|
+
|
|
42
|
+
## Domain 3: Reference Standard
|
|
43
|
+
|
|
44
|
+
### Signalling Questions
|
|
45
|
+
1. Is the reference standard likely to correctly classify the target condition?
|
|
46
|
+
2. Were the reference standard results interpreted without knowledge of the results of the index test?
|
|
47
|
+
|
|
48
|
+
### Risk of Bias
|
|
49
|
+
- **Low**: Yes to all signalling questions
|
|
50
|
+
- **High**: No to any signalling question
|
|
51
|
+
- **Unclear**: Insufficient information
|
|
52
|
+
|
|
53
|
+
### Applicability
|
|
54
|
+
- Are there concerns that the target condition as defined by the reference standard does not match the question?
|
|
55
|
+
|
|
56
|
+
## Domain 4: Flow and Timing
|
|
57
|
+
|
|
58
|
+
### Signalling Questions
|
|
59
|
+
1. Was there an appropriate interval between index test and reference standard?
|
|
60
|
+
2. Did all patients receive the same reference standard?
|
|
61
|
+
3. Were all patients included in the analysis?
|
|
62
|
+
|
|
63
|
+
### Risk of Bias
|
|
64
|
+
- **Low**: Yes to all signalling questions
|
|
65
|
+
- **High**: No to any signalling question
|
|
66
|
+
- **Unclear**: Insufficient information
|
|
67
|
+
|
|
68
|
+
(No applicability concern for this domain)
|
|
69
|
+
|
|
70
|
+
## Common Issues in DTA Studies
|
|
71
|
+
|
|
72
|
+
- **Partial verification bias**: Not all patients receive the reference standard (especially when invasive, e.g., biopsy)
|
|
73
|
+
- **Differential verification**: Different reference standards used for different patients
|
|
74
|
+
- **Incorporation bias**: Index test forms part of the reference standard
|
|
75
|
+
- **Review bias**: Knowledge of index test results influences reference standard interpretation
|
|
76
|
+
- **Clinical review bias**: Additional clinical information available during index test interpretation
|
|
77
|
+
- **Uninterpretable results**: Exclusion of technically inadequate or indeterminate results
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# ROBINS-I Assessment Guide
|
|
2
|
+
|
|
3
|
+
Risk Of Bias In Non-randomised Studies - of Interventions.
|
|
4
|
+
Reference: Sterne JAC et al. BMJ 2016;355:i4919.
|
|
5
|
+
|
|
6
|
+
## Structure
|
|
7
|
+
|
|
8
|
+
ROBINS-I assesses 7 domains + overall judgment.
|
|
9
|
+
- **Signalling questions**: Yes / Probably yes / Probably no / No / No information
|
|
10
|
+
- **Domain judgment**: Low / Moderate / Serious / Critical / No information
|
|
11
|
+
- **Overall judgment**: Lowest of all domain judgments (most conservative)
|
|
12
|
+
|
|
13
|
+
## Pre-assessment Requirements
|
|
14
|
+
|
|
15
|
+
Before applying ROBINS-I, specify:
|
|
16
|
+
1. The target trial (what RCT would ideally answer this question?)
|
|
17
|
+
2. The effect of interest (assignment to intervention vs starting and adhering)
|
|
18
|
+
3. Confounders to be controlled
|
|
19
|
+
|
|
20
|
+
## Domain 1: Bias Due to Confounding
|
|
21
|
+
|
|
22
|
+
### Key Questions
|
|
23
|
+
- Is there potential for confounding not accounted for?
|
|
24
|
+
- Did the authors use appropriate methods to control confounding (matching, regression, propensity score)?
|
|
25
|
+
|
|
26
|
+
### Judgment
|
|
27
|
+
- **Low**: All critical confounders appropriately controlled
|
|
28
|
+
- **Moderate**: Minor concerns about residual confounding
|
|
29
|
+
- **Serious**: Important confounders not adequately controlled
|
|
30
|
+
- **Critical**: Confounding so severe that no useful estimate possible
|
|
31
|
+
|
|
32
|
+
## Domain 2: Bias in Selection of Participants
|
|
33
|
+
|
|
34
|
+
### Key Questions
|
|
35
|
+
- Was selection into the study related to both intervention and outcome?
|
|
36
|
+
- Was start of follow-up and intervention aligned?
|
|
37
|
+
- Were adjustments made for different start times?
|
|
38
|
+
|
|
39
|
+
## Domain 3: Bias in Classification of Interventions
|
|
40
|
+
|
|
41
|
+
### Key Questions
|
|
42
|
+
- Were intervention groups clearly defined?
|
|
43
|
+
- Was information used to classify interventions recorded at the start of the intervention?
|
|
44
|
+
- Could classification of intervention status have been affected by knowledge of the outcome?
|
|
45
|
+
|
|
46
|
+
## Domain 4: Bias Due to Deviations from Intended Interventions
|
|
47
|
+
|
|
48
|
+
### Key Questions
|
|
49
|
+
- Were there deviations from intended intervention beyond what would be expected?
|
|
50
|
+
- Were these deviations unbalanced between groups and likely to affect outcomes?
|
|
51
|
+
- Were important co-interventions balanced across groups?
|
|
52
|
+
|
|
53
|
+
## Domain 5: Bias Due to Missing Data
|
|
54
|
+
|
|
55
|
+
### Key Questions
|
|
56
|
+
- Were outcome data available for all or nearly all participants?
|
|
57
|
+
- Were participants excluded due to missing data on intervention or other variables?
|
|
58
|
+
- Was the proportion of missing data similar across groups?
|
|
59
|
+
- Were appropriate methods used to handle missing data?
|
|
60
|
+
|
|
61
|
+
## Domain 6: Bias in Measurement of Outcomes
|
|
62
|
+
|
|
63
|
+
### Key Questions
|
|
64
|
+
- Could outcome measurement have been influenced by knowledge of intervention?
|
|
65
|
+
- Were outcome assessors blinded?
|
|
66
|
+
- Were outcome measures comparable across groups?
|
|
67
|
+
|
|
68
|
+
## Domain 7: Bias in Selection of Reported Result
|
|
69
|
+
|
|
70
|
+
### Key Questions
|
|
71
|
+
- Were multiple outcome measurements reported?
|
|
72
|
+
- Were multiple analyses performed?
|
|
73
|
+
- Is the reported result likely selected from among multiple measurements or analyses?
|
|
74
|
+
|
|
75
|
+
## Overall Risk of Bias
|
|
76
|
+
|
|
77
|
+
The overall judgment is the most conservative across all domains:
|
|
78
|
+
- **Low**: Low risk in all domains
|
|
79
|
+
- **Moderate**: Low or moderate in all domains
|
|
80
|
+
- **Serious**: Serious in at least one domain, but not critical in any
|
|
81
|
+
- **Critical**: Critical in at least one domain
|
|
82
|
+
|
|
83
|
+
## Recommendation for Synthesis
|
|
84
|
+
|
|
85
|
+
- Studies at **critical** risk of bias should be excluded from meta-analysis
|
|
86
|
+
- Present critical studies in a separate table for completeness
|
|
87
|
+
- Conduct sensitivity analysis excluding serious risk of bias studies
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# RoB 2 Assessment Guide
|
|
2
|
+
|
|
3
|
+
Revised Cochrane Risk-of-Bias tool for Randomised Trials.
|
|
4
|
+
Reference: Sterne JAC et al. BMJ 2019;366:l4898. PMID: 31462531.
|
|
5
|
+
|
|
6
|
+
## Structure
|
|
7
|
+
|
|
8
|
+
RoB 2 assesses 5 domains for each outcome in each study.
|
|
9
|
+
- **Signalling questions**: Yes / Probably yes / Probably no / No / No information
|
|
10
|
+
- **Domain judgment**: Low risk / Some concerns / High risk
|
|
11
|
+
- **Overall judgment**: Most conservative across all domains
|
|
12
|
+
|
|
13
|
+
## Domain 1: Bias Arising from the Randomisation Process
|
|
14
|
+
|
|
15
|
+
### Signalling Questions
|
|
16
|
+
1. Was the allocation sequence random?
|
|
17
|
+
2. Was the allocation sequence concealed until participants were enrolled and assigned?
|
|
18
|
+
3. Did baseline differences between groups suggest a problem with the randomisation process?
|
|
19
|
+
|
|
20
|
+
### Judgment
|
|
21
|
+
- **Low**: Adequate random sequence generation AND allocation concealment, no problematic baseline imbalances
|
|
22
|
+
- **Some concerns**: Information insufficient to permit judgment
|
|
23
|
+
- **High**: Inadequate sequence generation or concealment, or problematic baseline imbalances suggest failure
|
|
24
|
+
|
|
25
|
+
## Domain 2: Bias Due to Deviations from Intended Interventions
|
|
26
|
+
|
|
27
|
+
### Effect of Interest: Assignment (intention-to-treat)
|
|
28
|
+
1. Were participants aware of their assigned intervention during the trial?
|
|
29
|
+
2. Were carers and people delivering the interventions aware of assigned intervention?
|
|
30
|
+
3. Were there deviations from the intended intervention that arose because of the trial context?
|
|
31
|
+
4. Were these deviations likely to have affected the outcome?
|
|
32
|
+
5. Was an appropriate analysis used to estimate the effect of assignment to intervention?
|
|
33
|
+
|
|
34
|
+
### Effect of Interest: Adherence (per-protocol)
|
|
35
|
+
1-2. Same as above
|
|
36
|
+
3. Were important non-protocol interventions balanced across groups?
|
|
37
|
+
4. Could failures in implementing the intervention have affected the outcome?
|
|
38
|
+
5. Did trial participants adhere to the assigned intervention regimen?
|
|
39
|
+
6. Was an appropriate analysis used to estimate the effect of adhering to intervention?
|
|
40
|
+
|
|
41
|
+
## Domain 3: Bias Due to Missing Outcome Data
|
|
42
|
+
|
|
43
|
+
### Signalling Questions
|
|
44
|
+
1. Were data for this outcome available for all, or nearly all, participants randomised?
|
|
45
|
+
2. Is there evidence that the result was not biased by missing outcome data?
|
|
46
|
+
3. Could missingness in the outcome depend on its true value?
|
|
47
|
+
4. Is it likely that missingness depended on its true value?
|
|
48
|
+
|
|
49
|
+
### Judgment
|
|
50
|
+
- **Low**: Data available for all/nearly all (>95%), or evidence result not biased by missing data
|
|
51
|
+
- **Some concerns**: Missingness could depend on true value but unlikely
|
|
52
|
+
- **High**: Missingness likely dependent on true value
|
|
53
|
+
|
|
54
|
+
## Domain 4: Bias in Measurement of the Outcome
|
|
55
|
+
|
|
56
|
+
### Signalling Questions
|
|
57
|
+
1. Was the method of measuring the outcome inappropriate?
|
|
58
|
+
2. Could measurement or ascertainment of the outcome have differed between groups?
|
|
59
|
+
3. Were outcome assessors aware of the intervention received by study participants?
|
|
60
|
+
4. Could assessment of the outcome have been influenced by knowledge of intervention?
|
|
61
|
+
5. Is it likely that assessment was influenced by knowledge of intervention?
|
|
62
|
+
|
|
63
|
+
## Domain 5: Bias in Selection of the Reported Result
|
|
64
|
+
|
|
65
|
+
### Signalling Questions
|
|
66
|
+
1. Were the data that produced this result analysed in accordance with a pre-specified analysis plan finalised before unblinded outcome data were available?
|
|
67
|
+
2. Is the numerical result likely to have been selected from multiple eligible outcome measurements or analyses of the data?
|
|
68
|
+
|
|
69
|
+
## Overall Risk of Bias
|
|
70
|
+
|
|
71
|
+
- **Low risk**: Low risk in all domains
|
|
72
|
+
- **Some concerns**: Some concerns in at least one domain, but not high risk in any
|
|
73
|
+
- **High risk**: High risk in at least one domain, OR some concerns in multiple domains in a way that substantially lowers confidence
|
|
74
|
+
|
|
75
|
+
## When to Use
|
|
76
|
+
|
|
77
|
+
- Use for **individually randomised, parallel-group trials** (default)
|
|
78
|
+
- Variants available for: cluster-randomised trials, crossover trials
|
|
79
|
+
- Do NOT use for non-randomised studies (use ROBINS-I instead)
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Data Integrity Checklist
|
|
2
|
+
|
|
3
|
+
**Applies to**: the full span of Phase 3 (Extraction) ~ Phase 6 (Statistical synthesis) ~ Phase 9 (Circulation). Blocks the numerical-consistency risks specific to meta-analysis.
|
|
4
|
+
|
|
5
|
+
## 1. Extraction stage
|
|
6
|
+
|
|
7
|
+
### DI-1. Formalize the extraction consensus log
|
|
8
|
+
- **Problem pattern**: Comparative extraction results kept only as inline comments inside the R analysis script — no standalone consensus log → arm-specific numbers become irretraceable once the script is edited.
|
|
9
|
+
- **Rule**: At the start of every MA project, create `2_Data/extraction_consensus_log.md` or `3_Extraction/extraction_consensus_log.md`. Columns: study_id, arm, numerator, denominator, source_page, source_type (text/table/figure/KM-reconstruction), extractor_initials, second_reviewer_initials, timestamp, notes. Comparative extractions must live only as formal rows, never as script comments.
|
|
10
|
+
|
|
11
|
+
### DI-2. Mandatory double-check of 2x2 cell counts
|
|
12
|
+
- **Problem pattern**: Hand-typed 2x2 cells with arm order swapped against the source paper, or with numerator/denominator misread from a KM-derived subgroup rather than the raw table. Both fail silently until a third reviewer back-calculates the proportion.
|
|
13
|
+
- **Rule**: Every 2x2 / comparative extraction requires (a) a first extraction + (b) an independent second re-extraction + (c) source re-check on any mismatch + a consensus-log row. Perform the Phase 6b "numerical safety gate".
|
|
14
|
+
|
|
15
|
+
### DI-3. Complete the KM-reconstruction audit trail
|
|
16
|
+
- **Problem pattern**: Subgroup cell counts reconstructed from a published KM curve without preserving the WebPlotDigitizer trace or the IPDfromKM reconstruction log → numbers cannot be re-derived if a reviewer challenges them.
|
|
17
|
+
- **Rule**: KM-reconstruction outputs must be kept as a set in `3_Extraction/km_reconstruction/{study_id}/`: (a) the WebPlotDigitizer JSON, (b) the IPDfromKM CSV, and (c) metadata for tool version + coordinate values + parameters + date. Link them in the consensus log as type "km-reconstruction".
|
|
18
|
+
|
|
19
|
+
### DI-4. Denominator change = source page citation + consensus-log row
|
|
20
|
+
- **Problem pattern**: Denominator correction (e.g., treatment-naive subset) entered only as an R-script comment without citing the source paper's page/table → the correction's rationale is lost at revision.
|
|
21
|
+
- **Rule**: Every denominator change requires (a) a source page/table citation, (b) a sentence stating the rationale, and (c) one consensus-log row. Reject the change if any of the three is missing.
|
|
22
|
+
|
|
23
|
+
### DI-5. Methodology mismatch random spot-check
|
|
24
|
+
- **Problem pattern**: A source paper reports per-protocol analysis while the SR framework is ITT/ITD (or vice versa). Without a methodology spot-check, the study's effect estimate is silently re-used under a different analysis framework.
|
|
25
|
+
- **Rule**: Include a "methodology flag" in the extraction spot-check scope — whether each study's source analysis unit (per-protocol / ITT / ITD) matches our SR framework. Re-extract on mismatch.
|
|
26
|
+
|
|
27
|
+
## 2. 3~5-way consistency
|
|
28
|
+
|
|
29
|
+
### DI-6. PRISMA flow 5-way consistency
|
|
30
|
+
- **Problem pattern**: PRISMA flow numbers drift across the search CSV, the screening log, the Methods prose, the Results prose, and the Figure 1 caption — five surfaces reach submission in three mutually inconsistent states (reversed database order, divergent full-text-assessed counts, stale caption numbers).
|
|
31
|
+
- **Rule**: Verify the PRISMA flow numbers as consistent across five places simultaneously:
|
|
32
|
+
1. `1_Search/*.csv` original (source of truth, no edits)
|
|
33
|
+
2. `2_Screening/prisma_flow_final.md`
|
|
34
|
+
3. Manuscript Methods prose
|
|
35
|
+
4. Manuscript Results prose (where mentioned again)
|
|
36
|
+
5. Figure 1 caption (both `5_Figures/_captions.md` and the short DOCX caption)
|
|
37
|
+
- **ID-Set Gate Rule 5**: fix the prose first → then render the diagram. If the diagram is built first, editing the prose causes drift.
|
|
38
|
+
- **Automation candidate**: manage `k`, `n`, and the search numbers in a single YAML source and substitute them into the prose/diagram templates.
|
|
39
|
+
|
|
40
|
+
### DI-7. Single source for k = `4_Analysis/*.csv`
|
|
41
|
+
- **Problem pattern**: Included-study count `k` quoted as two different values across consecutive manuscript versions because it was hand-typed into prose rather than derived from the analysis CSV.
|
|
42
|
+
- **Rule**: Derive k only from the `4_Analysis/*.csv` row count. When entering k into the manuscript / MANIFEST / PROSPERO, also state the CSV path + row count.
|
|
43
|
+
|
|
44
|
+
## 3. Pre-submission cleanup
|
|
45
|
+
|
|
46
|
+
### DI-8. Remove every tag / TODO
|
|
47
|
+
- **Problem pattern**: `TODO`, `[VERIFY-CSV]`, "to be regenerated" strings survive into the submission package — found in R scripts, figure captions, and supplementary material banners.
|
|
48
|
+
- **Rule**: 0 hits for the following grep before submission day:
|
|
49
|
+
```bash
|
|
50
|
+
rg -n "VERIFY-CSV|TODO|FIXME|XXX|to be regenerated|PH TODO|to-do" \
|
|
51
|
+
7_Manuscript/ supplement/ 5_Figures/ 6_Tables/ 1_Code/
|
|
52
|
+
```
|
|
53
|
+
- **`[VERIFY-CSV]` lifecycle**: attach (v6) → verify (v7) → mark (v8+) → remove (submission). Record each stage in the MANIFEST.
|
|
54
|
+
|
|
55
|
+
### DI-9. State bias-driven homogeneity interpretation
|
|
56
|
+
- **Problem pattern**: In a DTA pool where every included study is retrospective with differential verification, Sp I²=0% reflects universalized bias compression rather than true between-study homogeneity — easy to over-interpret as robust agreement.
|
|
57
|
+
- **Rule**: When I²=0% and QUADAS-2 Domain 4 risk are both high/unclear → state "universalized bias compression" explicitly and frame as an "upper-bound estimate". Bias context is mandatory in the Discussion.
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# ICMJE COI Form Generation Guide
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Most journals (Springer/CVIR, Lancet, npj, etc.) require ICMJE Conflict of Interest
|
|
6
|
+
disclosure forms from all authors. This guide documents how to batch-generate pre-filled
|
|
7
|
+
forms using `python-docx`.
|
|
8
|
+
|
|
9
|
+
## Template Location
|
|
10
|
+
|
|
11
|
+
Use any existing blank ICMJE form as template. Suggested locations:
|
|
12
|
+
- A previously-used filled form from one of your manuscripts (under `<project>/submission/{journal}/icmje_forms/`).
|
|
13
|
+
- Download a blank from https://www.icmje.org/disclosure-of-interest/.
|
|
14
|
+
|
|
15
|
+
## ICMJE Form Structure (docx)
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Table 0 (Header): 6 rows × 2 cols
|
|
19
|
+
Row 0: Title ("ICMJE DISCLOSURE FORM")
|
|
20
|
+
Row 1: Date
|
|
21
|
+
Row 2: Author name ← PRE-FILL THIS
|
|
22
|
+
Row 3: Manuscript title ← PRE-FILL THIS
|
|
23
|
+
Row 4: Manuscript number ← Leave blank or fill if known
|
|
24
|
+
Row 5: Instructions text
|
|
25
|
+
|
|
26
|
+
Table 1 (Disclosures): 19 rows × 5 cols
|
|
27
|
+
Row 0: Column headers
|
|
28
|
+
Row 1: Time frame header (since initial planning)
|
|
29
|
+
Row 2: Item 1 — Support for present manuscript
|
|
30
|
+
Row 3: Time frame header (past 36 months)
|
|
31
|
+
Rows 4-15: Items 2-13 (grants, royalties, consulting, etc.)
|
|
32
|
+
→ Col 3: Entity name (leave blank if no conflict)
|
|
33
|
+
→ Col 4: Specifications (leave blank if no conflict)
|
|
34
|
+
Row 16: Empty
|
|
35
|
+
Row 17: Certification header
|
|
36
|
+
Row 18: Certification text ← ADD "X" to certify
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Python Script: Batch Generate
|
|
40
|
+
|
|
41
|
+
```python
|
|
42
|
+
#!/usr/bin/env python3
|
|
43
|
+
"""Batch-generate ICMJE COI forms from a template."""
|
|
44
|
+
import shutil
|
|
45
|
+
from pathlib import Path
|
|
46
|
+
from docx import Document
|
|
47
|
+
|
|
48
|
+
def generate_coi_forms(
|
|
49
|
+
template_path: str,
|
|
50
|
+
output_dir: str,
|
|
51
|
+
manuscript_title: str,
|
|
52
|
+
authors: list[tuple[str, str]], # [(name, email), ...]
|
|
53
|
+
manuscript_number: str = "",
|
|
54
|
+
date_str: str = "",
|
|
55
|
+
):
|
|
56
|
+
"""
|
|
57
|
+
Generate one ICMJE COI form per author.
|
|
58
|
+
|
|
59
|
+
KNOWN ISSUES (python-docx + ICMJE form):
|
|
60
|
+
1. Merged cells: Table 0 Row 0 and Table 1 headers use merged cells.
|
|
61
|
+
Writing to cell.text replaces ALL merged cell content.
|
|
62
|
+
→ Use cell.paragraphs[0].runs approach instead.
|
|
63
|
+
2. Formatting loss: Direct cell.text assignment strips bold/italic.
|
|
64
|
+
→ Preserve runs and only modify run.text.
|
|
65
|
+
3. XML namespace errors: Some ICMJE forms have custom XML.
|
|
66
|
+
python-docx may warn about "lxml.etree.XMLSyntaxError".
|
|
67
|
+
→ These warnings are usually harmless; the output is still valid.
|
|
68
|
+
"""
|
|
69
|
+
out = Path(output_dir)
|
|
70
|
+
out.mkdir(parents=True, exist_ok=True)
|
|
71
|
+
|
|
72
|
+
for i, (name, email) in enumerate(authors, 1):
|
|
73
|
+
# Copy template to preserve all formatting
|
|
74
|
+
fname = f"ICMJE_COI_{i:02d}_{name.replace(' ', '_')}.docx"
|
|
75
|
+
dst = out / fname
|
|
76
|
+
shutil.copy2(template_path, dst)
|
|
77
|
+
|
|
78
|
+
doc = Document(str(dst))
|
|
79
|
+
t0 = doc.tables[0]
|
|
80
|
+
|
|
81
|
+
# Pre-fill header fields
|
|
82
|
+
# IMPORTANT: Access the cell, find existing text, append to it
|
|
83
|
+
# Don't replace — some cells have label + value in same cell
|
|
84
|
+
|
|
85
|
+
# Row 1: Date
|
|
86
|
+
if date_str:
|
|
87
|
+
_safe_append(t0.rows[1].cells[0], f" {date_str}")
|
|
88
|
+
|
|
89
|
+
# Row 2: Author name
|
|
90
|
+
_safe_append(t0.rows[2].cells[0], f" {name}")
|
|
91
|
+
|
|
92
|
+
# Row 3: Manuscript title
|
|
93
|
+
_safe_append(t0.rows[3].cells[0], f" {manuscript_title}")
|
|
94
|
+
|
|
95
|
+
# Row 4: Manuscript number
|
|
96
|
+
if manuscript_number:
|
|
97
|
+
_safe_append(t0.rows[4].cells[0], f" {manuscript_number}")
|
|
98
|
+
|
|
99
|
+
doc.save(str(dst))
|
|
100
|
+
print(f" Created: {fname}")
|
|
101
|
+
|
|
102
|
+
print(f"\nGenerated {len(authors)} COI forms in {output_dir}")
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def _safe_append(cell, text):
|
|
106
|
+
"""Append text to a cell without destroying existing formatting.
|
|
107
|
+
|
|
108
|
+
This avoids the common python-docx pitfall where cell.text = "new"
|
|
109
|
+
destroys all runs and formatting in merged cells.
|
|
110
|
+
"""
|
|
111
|
+
if cell.paragraphs:
|
|
112
|
+
p = cell.paragraphs[0]
|
|
113
|
+
if p.runs:
|
|
114
|
+
# Append to last run to preserve formatting
|
|
115
|
+
p.runs[-1].text += text
|
|
116
|
+
else:
|
|
117
|
+
# No runs — add one
|
|
118
|
+
run = p.add_run(text)
|
|
119
|
+
else:
|
|
120
|
+
cell.text = text
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
# === Example usage ===
|
|
124
|
+
if __name__ == "__main__":
|
|
125
|
+
# Replace with the actual author roster for your manuscript.
|
|
126
|
+
authors = [
|
|
127
|
+
("Author One", "author1@example.com"),
|
|
128
|
+
("Author Two", "author2@example.com"),
|
|
129
|
+
("Author Three", "author3@example.com"),
|
|
130
|
+
# ...
|
|
131
|
+
]
|
|
132
|
+
|
|
133
|
+
generate_coi_forms(
|
|
134
|
+
template_path="path/to/blank_ICMJE_template.docx",
|
|
135
|
+
output_dir="submission/{journal}/icmje_coi_forms/",
|
|
136
|
+
manuscript_title="Your Manuscript Title Here",
|
|
137
|
+
authors=authors,
|
|
138
|
+
date_str="YYYY-MM-DD",
|
|
139
|
+
)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Common Pitfalls
|
|
143
|
+
|
|
144
|
+
### 1. Merged Cell Destruction
|
|
145
|
+
**Problem**: `cell.text = "new value"` on a merged cell deletes content in ALL merged cells.
|
|
146
|
+
**Fix**: Use `_safe_append()` or access `cell.paragraphs[0].runs[-1].text`.
|
|
147
|
+
|
|
148
|
+
### 2. XML/SQL-like Errors
|
|
149
|
+
**Problem**: `lxml.etree.XMLSyntaxError` when opening some ICMJE forms.
|
|
150
|
+
This happens because ICMJE's official template contains custom XML namespaces
|
|
151
|
+
that python-docx doesn't fully support.
|
|
152
|
+
**Fix**: These warnings are cosmetic. The output file is still valid Word doc.
|
|
153
|
+
If errors persist, use `shutil.copy2()` first, then open the copy.
|
|
154
|
+
|
|
155
|
+
### 3. Formatting Loss on Save
|
|
156
|
+
**Problem**: Bold/italic disappears after saving.
|
|
157
|
+
**Fix**: Never assign to `cell.text` directly. Always work through
|
|
158
|
+
`cell.paragraphs[0].runs` to preserve formatting.
|
|
159
|
+
|
|
160
|
+
### 4. Empty Cells for "No Conflict"
|
|
161
|
+
**Problem**: Some journals want explicit "None" vs empty cell.
|
|
162
|
+
**Fix**: Check journal-specific requirements. CVIR (Springer) accepts empty cells.
|
|
163
|
+
|
|
164
|
+
## Workflow for New Projects
|
|
165
|
+
|
|
166
|
+
1. Copy any existing ICMJE form as template (or download blank from icmje.org)
|
|
167
|
+
2. Update `authors` list with names and emails
|
|
168
|
+
3. Update `manuscript_title`
|
|
169
|
+
4. Run script → generates N individual docx files
|
|
170
|
+
5. Send to co-authors for review/signature
|
|
171
|
+
6. Collect signed forms before submission
|
|
172
|
+
|
|
173
|
+
## Author Email List (JSON format)
|
|
174
|
+
|
|
175
|
+
Store alongside COI forms for reference:
|
|
176
|
+
```json
|
|
177
|
+
[
|
|
178
|
+
["Author Name", "email@example.com"],
|
|
179
|
+
...
|
|
180
|
+
]
|
|
181
|
+
```
|