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,21 @@
|
|
|
1
|
+
# Checklist Licenses
|
|
2
|
+
|
|
3
|
+
Attribution for bundled reporting guideline checklists.
|
|
4
|
+
|
|
5
|
+
| File | Guideline | Reference | License |
|
|
6
|
+
|------|-----------|-----------|---------|
|
|
7
|
+
| STROBE.md | STROBE 2007 | von Elm E et al. PLoS Med 2007 | CC BY |
|
|
8
|
+
| STARD.md | STARD 2015 | Bossuyt PM et al. BMJ 2015 | CC BY 4.0 |
|
|
9
|
+
| TRIPOD_AI.md | TRIPOD+AI 2024 | Collins GS et al. BMJ 2024 | CC BY 4.0 |
|
|
10
|
+
| PRISMA_2020.md | PRISMA 2020 | Page MJ et al. BMJ 2021 | CC BY |
|
|
11
|
+
| ARRIVE_2.md | ARRIVE 2.0 | Percie du Sert N et al. PLoS Biol 2020 | CC0 |
|
|
12
|
+
| PRISMA_DTA.md | PRISMA-DTA 2018 | McInnes MDF et al. JAMA 2018 | CC BY |
|
|
13
|
+
| QUADAS2.md | QUADAS-2 | Whiting PF et al. Ann Intern Med 2011 | CC BY |
|
|
14
|
+
| RoB2.md | RoB 2 | Sterne JAC et al. BMJ 2019 | CC BY |
|
|
15
|
+
| ROBINS_I.md | ROBINS-I | Sterne JAC et al. BMJ 2016 | CC BY |
|
|
16
|
+
| PROBAST.md | PROBAST | Wolff RF et al. Ann Intern Med 2019 | CC BY |
|
|
17
|
+
| NOS.md | Newcastle-Ottawa Scale | Wells GA et al. Ottawa Hospital Research Institute | Public Domain |
|
|
18
|
+
|
|
19
|
+
These files are educational summaries of published assessment tools. The original
|
|
20
|
+
checklist documents should be cited in any manuscript that uses them. All files are
|
|
21
|
+
compatible with the MIT license of this repository.
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# PROSPERO Registration Template
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
PROSPERO (International Prospective Register of Systematic Reviews) requires completion of
|
|
6
|
+
a structured web form. This template provides field-by-field guidance with word limits and
|
|
7
|
+
common pitfalls from real registration experience.
|
|
8
|
+
|
|
9
|
+
**Key constraint**: Initial registrations are NOT allowed after data extraction is completed.
|
|
10
|
+
Searching and screening may be completed.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Form Fields Reference
|
|
15
|
+
|
|
16
|
+
### REVIEW TITLE AND BASIC DETAILS
|
|
17
|
+
|
|
18
|
+
#### 1. Review title (max 50 words)
|
|
19
|
+
Include: study design (systematic review, meta-analysis, pooled analysis), condition,
|
|
20
|
+
intervention, population qualifier if relevant.
|
|
21
|
+
|
|
22
|
+
#### 2. Review question (max 250 words)
|
|
23
|
+
Structure around PICO/PIRD. State both primary and secondary objectives clearly.
|
|
24
|
+
For pooled analysis designs, distinguish between pooled proportion and comparative questions.
|
|
25
|
+
|
|
26
|
+
#### 3. Condition/domain being studied (max 200 words)
|
|
27
|
+
Define the condition. Explain why it matters. Note the clinical gap.
|
|
28
|
+
|
|
29
|
+
#### 4. Keywords
|
|
30
|
+
Semicolon-separated. Include MeSH-equivalent terms.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
### ELIGIBILITY CRITERIA
|
|
35
|
+
|
|
36
|
+
#### 5. Population (max 200 words)
|
|
37
|
+
State included and excluded populations. Include age, disease status, anatomical specifics.
|
|
38
|
+
|
|
39
|
+
#### 6. Intervention/exposure (max 200 words)
|
|
40
|
+
Define all eligible interventions with specifics (technique, device, imaging guidance).
|
|
41
|
+
State minimum reporting requirement ("must report at least one clinical outcome").
|
|
42
|
+
|
|
43
|
+
#### 7. Comparator/control (max 200 words)
|
|
44
|
+
If both comparative and single-arm studies are included, state this explicitly:
|
|
45
|
+
"For the comparative analysis, [comparator description]. For the pooled proportion analysis,
|
|
46
|
+
single-arm studies without a comparator are also included."
|
|
47
|
+
|
|
48
|
+
#### 8. Type of study to be included (max 150 words)
|
|
49
|
+
List included and excluded study designs separately. Be specific about minimum sample size
|
|
50
|
+
(e.g., "case reports with fewer than 5 patients excluded").
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### SEARCHING AND SCREENING
|
|
55
|
+
|
|
56
|
+
#### 9. Searches (max 300 words)
|
|
57
|
+
Name databases, date range, language restrictions. Reference supplementary search strategies.
|
|
58
|
+
|
|
59
|
+
#### 10. Search strategy (max 300 words)
|
|
60
|
+
Show actual search blocks with Boolean structure. No need for full line-by-line syntax here
|
|
61
|
+
(reference supplementary materials for that).
|
|
62
|
+
|
|
63
|
+
#### Sub-fields in the web form:
|
|
64
|
+
- **Search for unpublished studies**: Yes/No (select based on protocol)
|
|
65
|
+
- **Main databases**: Select from checklist (PubMed, Embase.com vs Embase via Ovid — distinguish!)
|
|
66
|
+
- **Language restrictions**: State explicitly
|
|
67
|
+
- **Date restrictions**: State explicitly
|
|
68
|
+
- **Other methods**: Check ONLY what was actually done:
|
|
69
|
+
- reference list checking (backward citation)
|
|
70
|
+
- contacting authors
|
|
71
|
+
- conference proceedings
|
|
72
|
+
- trial registers
|
|
73
|
+
- forward citation searching (snowballing)
|
|
74
|
+
- **WARNING**: Do not check methods you did not perform — reviewers may ask for results
|
|
75
|
+
- **Link to search strategy**: Reference protocol or supplementary materials
|
|
76
|
+
- **Selection process**: "Two reviewers independently..." with disagreement resolution
|
|
77
|
+
- **Other info about screening**: PRISMA flow diagram reference (optional)
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### DATA COLLECTION PROCESS
|
|
82
|
+
|
|
83
|
+
#### 11. Data extraction (max 300 words)
|
|
84
|
+
List extracted variables by category: study characteristics, population, intervention,
|
|
85
|
+
outcomes. State unit of analysis policy (patient vs tumor level). If Kaplan-Meier
|
|
86
|
+
reconstruction is used, cite methods (Tierney 2007, Guyot 2012).
|
|
87
|
+
|
|
88
|
+
#### Sub-fields:
|
|
89
|
+
- **Extraction method**: Select "independently by at least two people"
|
|
90
|
+
- **Author contact**: Yes/No
|
|
91
|
+
- **IPD**: Usually No for standard MA
|
|
92
|
+
|
|
93
|
+
#### 12. Risk of bias/Quality assessment (max 200 words)
|
|
94
|
+
Name tool(s) per study design. If using tools not in the PROSPERO checklist (e.g., JBI),
|
|
95
|
+
select "Other" and describe in text.
|
|
96
|
+
|
|
97
|
+
Common tool mapping:
|
|
98
|
+
| Study design | Tool |
|
|
99
|
+
|---|---|
|
|
100
|
+
| RCT | Cochrane RoB 2 |
|
|
101
|
+
| Non-randomized comparative | Newcastle-Ottawa Scale (NOS) or ROBINS-I |
|
|
102
|
+
| Single-arm / case series | JBI Critical Appraisal Checklist (select "Other") |
|
|
103
|
+
| DTA | QUADAS-2 |
|
|
104
|
+
| Prediction model | PROBAST |
|
|
105
|
+
|
|
106
|
+
State number of assessors and disagreement resolution.
|
|
107
|
+
|
|
108
|
+
#### 13. Reporting bias assessment
|
|
109
|
+
For pooled proportion (k>=10): funnel plot + Egger's regression test.
|
|
110
|
+
For comparative (k<10): funnel plot visual inspection only.
|
|
111
|
+
Do NOT promise trim-and-fill or contour-enhanced funnel unless actually planned.
|
|
112
|
+
|
|
113
|
+
#### 14. Certainty assessment
|
|
114
|
+
Select "No" unless GRADE or equivalent is explicitly planned in the protocol.
|
|
115
|
+
If "Yes": requires Summary of Findings table — significant additional work.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
### OUTCOMES TO BE ANALYSED
|
|
120
|
+
|
|
121
|
+
#### 15. Primary outcomes (max 300 words)
|
|
122
|
+
Define each outcome precisely: what it measures, how it is defined, at what time points.
|
|
123
|
+
State the effect measure (proportion, OR, HR, etc.).
|
|
124
|
+
|
|
125
|
+
#### 16. Secondary outcomes (max 300 words)
|
|
126
|
+
List all secondary outcomes. Include exploratory outcomes that will be "extracted if reported."
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
### PLANNED DATA SYNTHESIS
|
|
131
|
+
|
|
132
|
+
#### 17. Strategy for data synthesis (max 400 words)
|
|
133
|
+
Structure as:
|
|
134
|
+
1. **Primary analysis**: model, estimator, transformation
|
|
135
|
+
2. **Secondary analysis**: model, estimator, CI adjustment
|
|
136
|
+
3. **Heterogeneity**: I-squared, Q test, interpretation thresholds
|
|
137
|
+
4. **Publication bias**: methods (reference field 13)
|
|
138
|
+
5. **Software**: R packages with versions
|
|
139
|
+
|
|
140
|
+
#### 18. Subgroups/subsets (max 250 words)
|
|
141
|
+
Number and list all pre-specified subgroup analyses.
|
|
142
|
+
Number and list all pre-specified sensitivity analyses.
|
|
143
|
+
State interaction test method.
|
|
144
|
+
Mention leave-one-out if planned.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
### CURRENT REVIEW STAGE
|
|
149
|
+
|
|
150
|
+
#### 19. Review stage checklist
|
|
151
|
+
| Stage | Allowed at registration |
|
|
152
|
+
|---|---|
|
|
153
|
+
| Pilot work | Started or Completed OK |
|
|
154
|
+
| Formal searching | Started or Completed OK |
|
|
155
|
+
| Screening | Started or Completed OK |
|
|
156
|
+
| **Data extraction** | **Not started or Started ONLY** |
|
|
157
|
+
| Risk of bias | Not started |
|
|
158
|
+
| Data synthesis | Not started |
|
|
159
|
+
|
|
160
|
+
**CRITICAL**: If data extraction is "Completed", registration will be REJECTED.
|
|
161
|
+
If protocol restructuring invalidates prior extraction → defensible to mark "Not started."
|
|
162
|
+
|
|
163
|
+
#### 20. Review status
|
|
164
|
+
Usually: "The review is planned or ongoing"
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### REVIEW AFFILIATION, FUNDING AND PEER REVIEW
|
|
169
|
+
|
|
170
|
+
#### 21. Review team members
|
|
171
|
+
All authors with ORCID and affiliation. One must be Guarantor + Named Contact.
|
|
172
|
+
Guarantor = typically first or corresponding author.
|
|
173
|
+
|
|
174
|
+
#### 22. Funding
|
|
175
|
+
- If no funding: "This review received no specific funding from any agency in the public,
|
|
176
|
+
commercial, or not-for-profit sectors."
|
|
177
|
+
- Do NOT write "supported by academic institutions" unless there is actual institutional funding.
|
|
178
|
+
|
|
179
|
+
#### 23. Peer review
|
|
180
|
+
Usually "Not peer reviewed" for initial registration.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
### ADDITIONAL INFORMATION
|
|
185
|
+
|
|
186
|
+
#### 24. Additional info (max 250 words)
|
|
187
|
+
Standard text: "Any important protocol amendments will be documented in the PROSPERO record
|
|
188
|
+
and clearly reported in the final publication."
|
|
189
|
+
|
|
190
|
+
#### 25. MeSH terms
|
|
191
|
+
Auto-generated but editable. Review and add missing terms (e.g., Microwaves for MWA studies).
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Common Pitfalls Checklist
|
|
196
|
+
|
|
197
|
+
Before submitting, verify:
|
|
198
|
+
|
|
199
|
+
- [ ] **HTML entities**: Preview PDF and check all `>=`, `<`, `&` symbols display correctly
|
|
200
|
+
(common breakage: `>`, `<`, `&` appearing literally)
|
|
201
|
+
- [ ] **Word limits**: Each field within stated maximum
|
|
202
|
+
- [ ] **Database names**: Embase.com vs Embase via Ovid (different options in form)
|
|
203
|
+
- [ ] **Other methods**: Only checked items actually performed
|
|
204
|
+
- [ ] **RoB tool**: JBI requires "Other" selection (not in standard list)
|
|
205
|
+
- [ ] **Certainty/GRADE**: "No" unless explicitly planned with SoF table
|
|
206
|
+
- [ ] **Funding text**: Matches actual funding status
|
|
207
|
+
- [ ] **Data extraction stage**: Not marked as "Completed"
|
|
208
|
+
- [ ] **Similar records**: All reviewed and confirmed "not similar"
|
|
209
|
+
- [ ] **All authors**: Listed with correct ORCID and affiliation
|
|
210
|
+
- [ ] **End date**: In the future (update if past)
|
|
211
|
+
- [ ] **Comparator field**: Addresses both comparative and single-arm inclusion if applicable
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Output Format
|
|
216
|
+
|
|
217
|
+
When generating PROSPERO content for the user:
|
|
218
|
+
1. Produce a single Markdown file with all fields, word counts per field
|
|
219
|
+
2. Convert to DOCX via pandoc for copy-paste convenience
|
|
220
|
+
3. Flag any fields requiring user decision (e.g., author contact, unpublished search)
|
|
221
|
+
4. Include the Common Pitfalls Checklist at the end
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"""AI-Assisted Pre-Screening Template for R3 Adjudication.
|
|
2
|
+
|
|
3
|
+
PURPOSE
|
|
4
|
+
-------
|
|
5
|
+
For systematic review screening, the methodologically sound workflow requires
|
|
6
|
+
TWO independent human reviewers with Cohen's kappa, followed by adjudication
|
|
7
|
+
of disagreements (R3) by the first reviewer. R3 commonly involves 100+ records
|
|
8
|
+
and is the bottleneck.
|
|
9
|
+
|
|
10
|
+
This template generates AI-assisted *suggestions* (NOT decisions). The first
|
|
11
|
+
reviewer must still confirm or overturn each suggestion. This preserves
|
|
12
|
+
methodological integrity while compressing R3 from 2-3 hours x 2-3 days to
|
|
13
|
+
~30-60 minutes.
|
|
14
|
+
|
|
15
|
+
NOT a replacement for human reviewer. Methods boilerplate is provided below.
|
|
16
|
+
|
|
17
|
+
INPUT
|
|
18
|
+
-----
|
|
19
|
+
TSV with at minimum these columns:
|
|
20
|
+
uid, title, abstract_preview, journal, doi, round2_tag, round2_reason
|
|
21
|
+
|
|
22
|
+
`round2_tag` values expected:
|
|
23
|
+
INCLUDE -> AI default = CONFIRM-INCLUDE; flag review/conf abstract patterns
|
|
24
|
+
MAYBE -> AI requires per-uid manual decisions (UNCERTAIN if not pre-coded)
|
|
25
|
+
EXCLUDE -> typically not in R3 sheet; if present, AI default = CONFIRM-EXCLUDE
|
|
26
|
+
|
|
27
|
+
OUTPUT
|
|
28
|
+
------
|
|
29
|
+
Same TSV plus columns:
|
|
30
|
+
ai_suggestion : INCLUDE / EXCLUDE / UNCERTAIN / CONFIRM-INCLUDE / CONFIRM-EXCLUDE
|
|
31
|
+
ai_reason : one-sentence justification
|
|
32
|
+
|
|
33
|
+
USAGE
|
|
34
|
+
-----
|
|
35
|
+
1. Copy this file to your project's `1_Code/` directory.
|
|
36
|
+
2. Customize:
|
|
37
|
+
- `PROJECT_PECOS` (eligibility criteria summary)
|
|
38
|
+
- `MAYBE_DECISIONS` (per-uid manual judgments after reading each abstract)
|
|
39
|
+
- `EXCLUDE_PATTERNS` (project-specific keyword patterns)
|
|
40
|
+
3. Run; review priority-sorted output (use companion `make_review_priority_view.py`).
|
|
41
|
+
|
|
42
|
+
METHODS BOILERPLATE
|
|
43
|
+
-------------------
|
|
44
|
+
"Round 3 adjudication of records flagged as 'maybe' by either reviewer was
|
|
45
|
+
performed by the first reviewer (initials) with AI-assisted pre-screening
|
|
46
|
+
(model name and version). The AI model was prompted with the prespecified
|
|
47
|
+
PECOS criteria and produced a suggestion plus brief justification for each
|
|
48
|
+
record; the first reviewer independently confirmed or overturned every
|
|
49
|
+
suggestion against the title, abstract, and (when needed) full text. AI
|
|
50
|
+
suggestions were not used as final inclusion decisions."
|
|
51
|
+
|
|
52
|
+
CITATION
|
|
53
|
+
--------
|
|
54
|
+
Inspired by emerging AI-assisted screening practice (e.g., Khalil et al.,
|
|
55
|
+
Syst Rev 2022). Document model and version in the manuscript.
|
|
56
|
+
"""
|
|
57
|
+
from __future__ import annotations
|
|
58
|
+
import csv
|
|
59
|
+
from pathlib import Path
|
|
60
|
+
|
|
61
|
+
# ============================================================================
|
|
62
|
+
# 1. PROJECT CONFIGURATION — customize per project
|
|
63
|
+
# ============================================================================
|
|
64
|
+
|
|
65
|
+
PROJECT_PECOS = """
|
|
66
|
+
Replace this string with a one-paragraph summary of your PECOS criteria.
|
|
67
|
+
Used as documentation only; the AI logic below must be coded explicitly.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
# Per-uid MAYBE decisions. Fill after reading each MAYBE abstract.
|
|
71
|
+
# Format: uid -> (suggestion, one-sentence reason)
|
|
72
|
+
# Suggestion values: INCLUDE / EXCLUDE / UNCERTAIN
|
|
73
|
+
MAYBE_DECISIONS: dict[str, tuple[str, str]] = {
|
|
74
|
+
# "study_0042": ("INCLUDE", "Title confirms target population + intervention; design = RCT."),
|
|
75
|
+
# "study_0099": ("EXCLUDE", "Conference abstract without full publication."),
|
|
76
|
+
# "study_0123": ("UNCERTAIN", "Abstract truncated; full text needed to confirm intervention arm."),
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
# ============================================================================
|
|
80
|
+
# 2. INCLUDE-row heuristic classifier — common patterns; tune for your project
|
|
81
|
+
# ============================================================================
|
|
82
|
+
|
|
83
|
+
# Hard EXCLUDE keyword patterns (title or first 300 chars of abstract)
|
|
84
|
+
REVIEW_KEYWORDS = [
|
|
85
|
+
"systematic review", "meta-analysis", "narrative review",
|
|
86
|
+
" review of ", "scoping review", "review article",
|
|
87
|
+
"editorial", "commentary", "letter to the editor",
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
# Conference abstract / supplement detection
|
|
91
|
+
CONF_JOURNAL_KEYWORDS = ["abstracts", "supplement"]
|
|
92
|
+
# Common DOI markers for supplements (tune to your field)
|
|
93
|
+
CONF_DOI_PATTERNS = ["suppl_", "/circ.144.suppl", "/circ.146.suppl",
|
|
94
|
+
".abstract.", "-snis.", "-esmint."]
|
|
95
|
+
|
|
96
|
+
# Single case report markers
|
|
97
|
+
CASE_KEYWORDS = ["case report", "case series"]
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def classify_include_row(uid: str, title: str, abstract: str, journal: str,
|
|
101
|
+
doi: str, reason: str,
|
|
102
|
+
topic_keywords: list[str] | None = None) -> tuple[str, str]:
|
|
103
|
+
"""Heuristic AI suggestion for INCLUDE-tagged rows.
|
|
104
|
+
|
|
105
|
+
Default = CONFIRM-INCLUDE. Returns EXCLUDE for clear review/conference/
|
|
106
|
+
case-report patterns, or when no topic keyword appears in title or abstract.
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
topic_keywords: list of lowercase keywords; if NONE found in title or
|
|
110
|
+
abstract, suggest EXCLUDE. Pass project topic terms (e.g., for an
|
|
111
|
+
aneurysm SR: ["aneurysm", "intracranial", "cerebral", "vasc"]).
|
|
112
|
+
"""
|
|
113
|
+
t = title.lower()
|
|
114
|
+
a = abstract.lower()
|
|
115
|
+
j = journal.lower()
|
|
116
|
+
d = doi.lower()
|
|
117
|
+
|
|
118
|
+
# Review / editorial filter
|
|
119
|
+
if (any(k in t for k in REVIEW_KEYWORDS) or
|
|
120
|
+
any(k in a[:300] for k in REVIEW_KEYWORDS)):
|
|
121
|
+
if "primary" not in a[:500] and "we developed" not in a[:500]:
|
|
122
|
+
return ("EXCLUDE", "Likely review/editorial based on title/abstract keywords.")
|
|
123
|
+
|
|
124
|
+
# Conference abstract filter
|
|
125
|
+
if (any(k in j for k in CONF_JOURNAL_KEYWORDS) or
|
|
126
|
+
any(k in d for k in CONF_DOI_PATTERNS)):
|
|
127
|
+
return ("EXCLUDE",
|
|
128
|
+
"Conference abstract / supplement; likely no full peer-reviewed publication.")
|
|
129
|
+
|
|
130
|
+
# Single case report
|
|
131
|
+
if any(k in t for k in CASE_KEYWORDS):
|
|
132
|
+
if "single" in t or "single case" in a[:300]:
|
|
133
|
+
return ("EXCLUDE", "Single case report -- excluded by study design criterion.")
|
|
134
|
+
|
|
135
|
+
# Off-topic check
|
|
136
|
+
if topic_keywords:
|
|
137
|
+
if (not any(k in t for k in topic_keywords) and
|
|
138
|
+
not any(k in a[:500] for k in topic_keywords)):
|
|
139
|
+
return ("EXCLUDE", "No topic keyword in title or abstract.")
|
|
140
|
+
|
|
141
|
+
return ("CONFIRM-INCLUDE",
|
|
142
|
+
"Title/abstract consistent with PECOS; default include, verify at full-text extraction.")
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
# ============================================================================
|
|
146
|
+
# 3. Main pipeline
|
|
147
|
+
# ============================================================================
|
|
148
|
+
|
|
149
|
+
def run_pre_screening(src_tsv: Path, dst_tsv: Path,
|
|
150
|
+
topic_keywords: list[str] | None = None) -> None:
|
|
151
|
+
"""Read screening TSV, add ai_suggestion/ai_reason columns, write output."""
|
|
152
|
+
rows = list(csv.DictReader(src_tsv.open(encoding="utf-8"), delimiter="\t"))
|
|
153
|
+
if not rows:
|
|
154
|
+
raise SystemExit(f"No rows in {src_tsv}")
|
|
155
|
+
|
|
156
|
+
in_fields = list(rows[0].keys())
|
|
157
|
+
extra = [c for c in ("ai_suggestion", "ai_reason") if c not in in_fields]
|
|
158
|
+
out_fields = ["uid", "ai_suggestion", "ai_reason"] + [
|
|
159
|
+
c for c in in_fields if c not in ("uid", "ai_suggestion", "ai_reason")
|
|
160
|
+
]
|
|
161
|
+
|
|
162
|
+
counts: dict[str, int] = {}
|
|
163
|
+
with dst_tsv.open("w", encoding="utf-8", newline="") as f:
|
|
164
|
+
w = csv.DictWriter(f, fieldnames=out_fields, delimiter="\t",
|
|
165
|
+
quoting=csv.QUOTE_MINIMAL)
|
|
166
|
+
w.writeheader()
|
|
167
|
+
|
|
168
|
+
for r in rows:
|
|
169
|
+
uid = r["uid"]
|
|
170
|
+
tag = r.get("round2_tag", "").upper()
|
|
171
|
+
|
|
172
|
+
if tag == "MAYBE":
|
|
173
|
+
if uid in MAYBE_DECISIONS:
|
|
174
|
+
sug, why = MAYBE_DECISIONS[uid]
|
|
175
|
+
else:
|
|
176
|
+
sug, why = ("UNCERTAIN",
|
|
177
|
+
"MAYBE row without pre-coded decision; full review needed.")
|
|
178
|
+
elif tag == "INCLUDE":
|
|
179
|
+
sug, why = classify_include_row(
|
|
180
|
+
uid,
|
|
181
|
+
r.get("title", ""),
|
|
182
|
+
r.get("abstract_preview", ""),
|
|
183
|
+
r.get("journal", ""),
|
|
184
|
+
r.get("doi", ""),
|
|
185
|
+
r.get("round2_reason", ""),
|
|
186
|
+
topic_keywords=topic_keywords,
|
|
187
|
+
)
|
|
188
|
+
elif tag == "EXCLUDE":
|
|
189
|
+
sug, why = ("CONFIRM-EXCLUDE",
|
|
190
|
+
"Round 2 EXCLUDE; reviewer to confirm with brief check.")
|
|
191
|
+
else:
|
|
192
|
+
sug, why = ("UNCERTAIN", f"Unexpected round2_tag={tag!r}")
|
|
193
|
+
|
|
194
|
+
counts[sug] = counts.get(sug, 0) + 1
|
|
195
|
+
r["ai_suggestion"] = sug
|
|
196
|
+
r["ai_reason"] = why
|
|
197
|
+
w.writerow({k: r.get(k, "") for k in out_fields})
|
|
198
|
+
|
|
199
|
+
print(f"Wrote {dst_tsv} ({len(rows)} rows)")
|
|
200
|
+
print("AI suggestion distribution:")
|
|
201
|
+
for k in sorted(counts):
|
|
202
|
+
print(f" {k}: {counts[k]}")
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
# ============================================================================
|
|
206
|
+
# 4. Companion: priority-sorted view
|
|
207
|
+
# ============================================================================
|
|
208
|
+
|
|
209
|
+
PRIORITY_ORDER = {
|
|
210
|
+
"UNCERTAIN": 0,
|
|
211
|
+
"EXCLUDE": 1,
|
|
212
|
+
"INCLUDE": 2,
|
|
213
|
+
"CONFIRM-EXCLUDE": 3,
|
|
214
|
+
"CONFIRM-INCLUDE": 4,
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def write_priority_view(src_tsv: Path, dst_tsv: Path) -> None:
|
|
219
|
+
"""Sort AI-pre-screened TSV by review priority."""
|
|
220
|
+
rows = list(csv.DictReader(src_tsv.open(encoding="utf-8"), delimiter="\t"))
|
|
221
|
+
rows.sort(key=lambda r: (PRIORITY_ORDER.get(r["ai_suggestion"], 9), r["uid"]))
|
|
222
|
+
fields = list(rows[0].keys())
|
|
223
|
+
with dst_tsv.open("w", encoding="utf-8", newline="") as f:
|
|
224
|
+
w = csv.DictWriter(f, fieldnames=fields, delimiter="\t",
|
|
225
|
+
quoting=csv.QUOTE_MINIMAL)
|
|
226
|
+
w.writeheader()
|
|
227
|
+
w.writerows(rows)
|
|
228
|
+
print(f"Wrote priority view: {dst_tsv}")
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
# ============================================================================
|
|
232
|
+
# 5. Example invocation
|
|
233
|
+
# ============================================================================
|
|
234
|
+
|
|
235
|
+
if __name__ == "__main__":
|
|
236
|
+
# Customize these paths and topic keywords for your project.
|
|
237
|
+
PROJECT_ROOT = Path(__file__).resolve().parent
|
|
238
|
+
SRC = PROJECT_ROOT / "round3_adjudication_TEMPLATE.tsv"
|
|
239
|
+
AI = PROJECT_ROOT / "round3_adjudication_AI_TEMPLATE.tsv"
|
|
240
|
+
PRIORITY = PROJECT_ROOT / "round3_priority_TEMPLATE.tsv"
|
|
241
|
+
|
|
242
|
+
TOPIC_KEYWORDS = ["TOPIC1", "TOPIC2"] # e.g., ["aneurysm", "intracranial"]
|
|
243
|
+
|
|
244
|
+
run_pre_screening(SRC, AI, topic_keywords=TOPIC_KEYWORDS)
|
|
245
|
+
write_priority_view(AI, PRIORITY)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# JBI Critical Appraisal Checklist for Case Series
|
|
2
|
+
|
|
3
|
+
Reference: Munn Z, Barker TH, Moola S, et al. Methodological quality of case series
|
|
4
|
+
studies: an introduction to the JBI critical appraisal tool. JBI Evid Synth. 2020;18(10):2127-2133.
|
|
5
|
+
|
|
6
|
+
## 10 Signalling Questions
|
|
7
|
+
|
|
8
|
+
| # | Question | Y/N/U/NA |
|
|
9
|
+
|---|----------|----------|
|
|
10
|
+
| Q1 | Were there clear criteria for inclusion in the case series? | |
|
|
11
|
+
| Q2 | Was the condition measured in a standard, reliable way for all participants included in the case series? | |
|
|
12
|
+
| Q3 | Were valid methods used for identification of the condition for all participants included in the case series? | |
|
|
13
|
+
| Q4 | Did the case series have consecutive inclusion of participants? | |
|
|
14
|
+
| Q5 | Did the case series have complete inclusion of participants? | |
|
|
15
|
+
| Q6 | Was there clear reporting of the demographics of the participants in the study? | |
|
|
16
|
+
| Q7 | Was there clear reporting of clinical information of the participants? | |
|
|
17
|
+
| Q8 | Were the outcomes or follow-up results of cases clearly reported? | |
|
|
18
|
+
| Q9 | Was there clear reporting of the presenting site(s)/clinic(s) demographic information? | |
|
|
19
|
+
| Q10 | Was statistical analysis appropriate? | |
|
|
20
|
+
|
|
21
|
+
## Scoring
|
|
22
|
+
|
|
23
|
+
- **Y** = Yes (criterion met)
|
|
24
|
+
- **N** = No (criterion not met)
|
|
25
|
+
- **U** = Unclear
|
|
26
|
+
- **NA** = Not applicable
|
|
27
|
+
|
|
28
|
+
## Overall Appraisal
|
|
29
|
+
|
|
30
|
+
| Rating | Criterion |
|
|
31
|
+
|--------|-----------|
|
|
32
|
+
| **Include** | ≥7 "Yes" responses |
|
|
33
|
+
| **Exclude** | <7 "Yes" responses (or critical methodological concerns) |
|
|
34
|
+
| **Seek further info** | Insufficient information to judge key items |
|
|
35
|
+
|
|
36
|
+
## Notes
|
|
37
|
+
|
|
38
|
+
- Q4 and Q5 distinguish consecutive vs complete inclusion:
|
|
39
|
+
- Q4 (consecutive): Were participants enrolled sequentially without selection bias?
|
|
40
|
+
- Q5 (complete): Were all eligible participants during the study period included?
|
|
41
|
+
- Q9 applies to multi-site studies; for single-site studies, mark as NA if site demographics
|
|
42
|
+
are adequately covered by Q6.
|
|
43
|
+
- When used alongside NOS for mixed comparative + single-arm meta-analyses, map NOS to
|
|
44
|
+
comparative studies and JBI to case series. In PROSPERO, select "Other" for RoB tool
|
|
45
|
+
and specify both.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Newcastle-Ottawa Scale (NOS) Assessment Guide
|
|
2
|
+
|
|
3
|
+
Quality assessment tool for non-randomised studies in meta-analyses.
|
|
4
|
+
Reference: Wells GA et al. Ottawa Hospital Research Institute.
|
|
5
|
+
|
|
6
|
+
## Structure
|
|
7
|
+
|
|
8
|
+
NOS uses a "star system" (maximum 9 stars) across 3 categories.
|
|
9
|
+
Higher stars = higher quality.
|
|
10
|
+
|
|
11
|
+
## Cohort Studies (max 9 stars)
|
|
12
|
+
|
|
13
|
+
### Selection (max 4 stars)
|
|
14
|
+
1. **Representativeness of the exposed cohort** (1 star)
|
|
15
|
+
- a) Truly representative of the average [describe] in the community *
|
|
16
|
+
- b) Somewhat representative *
|
|
17
|
+
- c) Selected group of users
|
|
18
|
+
- d) No description
|
|
19
|
+
|
|
20
|
+
2. **Selection of the non-exposed cohort** (1 star)
|
|
21
|
+
- a) Drawn from the same community as the exposed *
|
|
22
|
+
- b) Drawn from a different source
|
|
23
|
+
- c) No description
|
|
24
|
+
|
|
25
|
+
3. **Ascertainment of exposure** (1 star)
|
|
26
|
+
- a) Secure record (e.g., surgical records) *
|
|
27
|
+
- b) Structured interview *
|
|
28
|
+
- c) Written self-report
|
|
29
|
+
- d) No description
|
|
30
|
+
|
|
31
|
+
4. **Demonstration that outcome was not present at start** (1 star)
|
|
32
|
+
- a) Yes *
|
|
33
|
+
- b) No
|
|
34
|
+
|
|
35
|
+
### Comparability (max 2 stars)
|
|
36
|
+
5. **Comparability of cohorts on the basis of design or analysis** (up to 2 stars)
|
|
37
|
+
- a) Study controls for [most important factor] *
|
|
38
|
+
- b) Study controls for any additional factor *
|
|
39
|
+
|
|
40
|
+
### Outcome (max 3 stars)
|
|
41
|
+
6. **Assessment of outcome** (1 star)
|
|
42
|
+
- a) Independent blind assessment *
|
|
43
|
+
- b) Record linkage *
|
|
44
|
+
- c) Self-report
|
|
45
|
+
- d) No description
|
|
46
|
+
|
|
47
|
+
7. **Was follow-up long enough for outcomes to occur?** (1 star)
|
|
48
|
+
- a) Yes (select adequate follow-up period) *
|
|
49
|
+
- b) No
|
|
50
|
+
|
|
51
|
+
8. **Adequacy of follow-up of cohorts** (1 star)
|
|
52
|
+
- a) Complete follow-up (all subjects accounted for) *
|
|
53
|
+
- b) Subjects lost to follow-up unlikely to introduce bias (<=20% lost, or description provided) *
|
|
54
|
+
- c) Follow-up rate <80% and no description of those lost
|
|
55
|
+
- d) No statement
|
|
56
|
+
|
|
57
|
+
## Case-Control Studies (max 9 stars)
|
|
58
|
+
|
|
59
|
+
### Selection (max 4 stars)
|
|
60
|
+
1. Is the case definition adequate?
|
|
61
|
+
2. Representativeness of the cases
|
|
62
|
+
3. Selection of controls
|
|
63
|
+
4. Definition of controls
|
|
64
|
+
|
|
65
|
+
### Comparability (max 2 stars)
|
|
66
|
+
5. Comparability of cases and controls (same 2-star system)
|
|
67
|
+
|
|
68
|
+
### Exposure (max 3 stars)
|
|
69
|
+
6. Ascertainment of exposure
|
|
70
|
+
7. Same method of ascertainment for cases and controls
|
|
71
|
+
8. Non-response rate
|
|
72
|
+
|
|
73
|
+
## Interpretation
|
|
74
|
+
|
|
75
|
+
| Stars | Quality |
|
|
76
|
+
|-------|---------|
|
|
77
|
+
| 7-9 | Good (high quality) |
|
|
78
|
+
| 4-6 | Fair (moderate quality) |
|
|
79
|
+
| 0-3 | Poor (low quality) |
|
|
80
|
+
|
|
81
|
+
Alternative thresholds may be pre-specified in the protocol.
|
|
82
|
+
|
|
83
|
+
## When to Use
|
|
84
|
+
|
|
85
|
+
- Observational cohort studies in intervention or exposure meta-analyses
|
|
86
|
+
- Case-control studies
|
|
87
|
+
- Simpler alternative to ROBINS-I when full domain-level assessment is not needed
|
|
88
|
+
- Note: NOS does not provide domain-level judgments -- only an aggregate score
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# PRISMA-DTA Checklist
|
|
2
|
+
|
|
3
|
+
Preferred Reporting Items for Systematic Reviews and Meta-Analyses of Diagnostic Test Accuracy Studies.
|
|
4
|
+
Reference: McInnes MDF et al. JAMA 2018;319(4):388-396.
|
|
5
|
+
|
|
6
|
+
## Checklist Items
|
|
7
|
+
|
|
8
|
+
| # | Section | Item |
|
|
9
|
+
|---|---------|------|
|
|
10
|
+
| 1 | Title | Identify the report as a systematic review (+/- meta-analysis) of diagnostic test accuracy studies |
|
|
11
|
+
| 2 | Abstract - Structured | Provide structured summary including objectives, data sources, study eligibility, participants, interventions, study appraisal and synthesis methods, results, limitations, conclusions, registration number |
|
|
12
|
+
| 3 | Introduction - Rationale | Describe the rationale for the review in the context of what is already known |
|
|
13
|
+
| 4 | Introduction - Objectives | State precise objectives, including PIRD elements |
|
|
14
|
+
| 5 | Methods - Protocol | Indicate if a review protocol exists, where it can be accessed, and registration information |
|
|
15
|
+
| 6 | Methods - Eligibility | Specify study characteristics and reporting characteristics used as criteria for eligibility |
|
|
16
|
+
| 7 | Methods - Information sources | Describe all information sources in the search and date last searched |
|
|
17
|
+
| 8 | Methods - Search | Present full electronic search strategy for at least one database |
|
|
18
|
+
| 9 | Methods - Study selection | State the process for selecting studies |
|
|
19
|
+
| 10 | Methods - Data collection | Describe method of data extraction from primary DTA studies and any processes for obtaining and confirming data from investigators |
|
|
20
|
+
| 11 | Methods - Data items | List and define all variables for which data were sought and any assumptions/simplifications made |
|
|
21
|
+
| 12 | Methods - Risk of bias | Describe methods used for assessing risk of bias of individual studies and how this information is used in data synthesis |
|
|
22
|
+
| 13 | Methods - Diagnostic accuracy measures | State the principal diagnostic accuracy measures and how they were calculated |
|
|
23
|
+
| 14 | Methods - Synthesis | Describe methods of handling data and combining results of studies including measures of statistical consistency |
|
|
24
|
+
| 15 | Methods - Risk of bias across studies | Specify any assessment of risk of bias that may affect the cumulative evidence |
|
|
25
|
+
| 16 | Methods - Additional analyses | Describe methods of additional analyses if done (e.g., sensitivity or subgroup analyses, meta-regression) |
|
|
26
|
+
| 17 | Results - Study selection | Give numbers of studies screened, assessed for eligibility, and included with reasons for exclusions at each stage; consider a flow diagram |
|
|
27
|
+
| 18 | Results - Study characteristics | For each study, present characteristics for which data were extracted and provide the citations |
|
|
28
|
+
| 19 | Results - Risk of bias within studies | Present risk of bias assessments for each included study |
|
|
29
|
+
| 20 | Results - Individual study results | For each analysis in each study, report 2x2 data with confidence intervals |
|
|
30
|
+
| 21 | Results - Synthesis of results | Describe test performance and present key results including confidence intervals for the meta-analysis |
|
|
31
|
+
| 22 | Results - Risk of bias across studies | Present results of any assessment of risk of bias across studies |
|
|
32
|
+
| 23 | Results - Additional analyses | Give results of additional analyses (subgroup, sensitivity, meta-regression) |
|
|
33
|
+
| 24 | Discussion - Summary | Summarize the main findings including strength of evidence |
|
|
34
|
+
| 25 | Discussion - Limitations | Discuss limitations at study and outcome level and at review level |
|
|
35
|
+
| 26 | Discussion - Conclusions | Provide a general interpretation of the results in the context of other evidence and implications for future research |
|
|
36
|
+
| 27 | Funding | Describe sources of funding for the systematic review and other support; role of funders |
|