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,48 @@
|
|
|
1
|
+
<!-- Domain probe module — shared, vendored BYTE-IDENTICAL by /peer-review and /self-review.
|
|
2
|
+
Severity words below (MAJOR / MINOR / major / minor) denote finding severity, NOT a journal
|
|
3
|
+
recommendation. Each consuming skill maps findings to its own output:
|
|
4
|
+
- peer-review: Major / Minor comments + Confidential Comments to the Editor; a confounding /
|
|
5
|
+
design-level flaw is placed as Major #1.
|
|
6
|
+
- self-review: Anticipated Major / Minor Comments (Fatal / Fixable) mapped to category letters.
|
|
7
|
+
Do NOT edit one copy only — run `python3 scripts/check_domain_probe_sync.py --sync`. -->
|
|
8
|
+
|
|
9
|
+
# Observational / Confounding probes (O1–O6)
|
|
10
|
+
|
|
11
|
+
A 6-probe checklist for observational studies (cohort, case-control, cross-sectional, health-screening registry) where the central claim is an exposure–outcome association estimated by adjustment rather than randomization. These probes complement (do not replace) the generic Phase 2 issue checklist and the STROBE reporting items; they target the gap between what a manuscript *says* it adjusted for and what the exposure-stratified data show. O1 is data-checkable and the highest-yield probe — the self-review skill automates it as a deterministic gate (Phase 2.5e, `scripts/check_confounding_completeness.py`) that reads the exposure-stratified Table 1 and the Methods adjustment set.
|
|
12
|
+
|
|
13
|
+
**O1 — Confounding completeness (measured-but-unadjusted)**:
|
|
14
|
+
- Does the exposure-stratified baseline table (Table 1 by exposure) show covariates that are **significantly imbalanced** across exposure groups (p < 0.05, or a standardized mean difference > 0.1) yet are **absent from the adjustment set**?
|
|
15
|
+
- A covariate that was measured, is imbalanced by exposure, and is a plausible cause of the outcome is residual confounding by a *measured* variable — the most preventable kind. Common offenders in metabolic / screening cohorts: smoking pack-years, uric acid, HDL, total cholesterol, HbA1c, eGFR.
|
|
16
|
+
- Is the adjustment set justified (DAG, prior literature, or a pre-specified plan), or is it a short default (age/sex/BMI + a few comorbidities) that silently omits imbalanced labs?
|
|
17
|
+
- Measured-but-unadjusted imbalanced covariate(s) → MAJOR. Recommend an extended-adjustment sensitivity model that adds the omitted covariates and reports whether the primary estimate is robust; the original model stays primary only if the extended model agrees.
|
|
18
|
+
|
|
19
|
+
**O2 — Adjustment-set provenance (DAG vs Table-1-stepwise)**:
|
|
20
|
+
- Was the adjustment set chosen by a causal structure (DAG / explicit confounder reasoning) or by a data-driven "include if Table 1 p < 0.05" / stepwise rule?
|
|
21
|
+
- Data-driven selection risks both directions: **over-adjustment** for mediators or colliders (a variable on the causal path, or a common effect of exposure and outcome, biases the estimate) and **under-adjustment** for a confounder that happens to be balanced in this sample.
|
|
22
|
+
- No stated rationale for inclusion/exclusion of each adjustment variable → MAJOR (the same model can be confounded and over-adjusted at once).
|
|
23
|
+
|
|
24
|
+
**O3 — Selection / collider bias at enrollment**:
|
|
25
|
+
- Is the cohort a self-selected or conditioned sample (health-screening attendees, survivors, a registry conditioned on having had the index test) such that enrollment is a collider opening a backdoor path?
|
|
26
|
+
- Index-event bias (conditioning on a first event), immortal-time bias (exposure defined over a window during which subjects must survive), and prevalent-user bias addressed?
|
|
27
|
+
- Unaddressed selection/collider structure that could generate the reported association → MAJOR; at minimum require an explicit selection-bias paragraph and, where possible, a sensitivity analysis.
|
|
28
|
+
|
|
29
|
+
**O4 — Exposure measurement validity**:
|
|
30
|
+
- Is the exposure a validated/quantitative measure or an unvalidated binary flag (e.g., a single reader's visual call, an ICD code, a self-report) with no in-cohort reliability (κ / ICC) and no severity gradient?
|
|
31
|
+
- Structural-zero dose covariates: a dose/duration variable anchored to a categorical exposure (never-smoker → pack-years = 0, never-drinker → grams = 0) must be treated as a structural zero, not missing — misclassification here both mismeasures the exposure and (O5) collapses the analytic sample.
|
|
32
|
+
- Non-differential misclassification biases toward the null (an underpowered null is not reassurance); differential misclassification can bias either way. Binary/unvalidated exposure with no reliability estimate → MAJOR (or a prominent limitation with a quantitative bias argument).
|
|
33
|
+
|
|
34
|
+
**O5 — Missing-data mechanism & complete-case collapse**:
|
|
35
|
+
- Is the missing-data mechanism (MCAR / MAR / MNAR) stated and justified, with the missingness fraction per key variable reported (ideally by exposure stratum)?
|
|
36
|
+
- Does a dose/duration covariate (pack-years, cessation duration, alcohol grams) entering a complete-case multivariable model collapse n in the unexposed stratum (structural zeros dropped as missing), distorting subgroup estimates? Report n before and after model fitting.
|
|
37
|
+
- If multiple imputation is used, are the mechanism assumption, the number of imputations, the imputation model, and a seed reported, and are structural zeros kept out of the imputation? Unjustified MAR for a large missing fraction, or an undisclosed complete-case collapse → MAJOR.
|
|
38
|
+
|
|
39
|
+
**O6 — Residual confounding quantification (E-value)**:
|
|
40
|
+
- Is an E-value (or a comparable quantitative-bias / negative-control analysis) reported for the **primary** estimate and its confidence limit, so a reader can judge how strong an unmeasured confounder would need to be to explain the association?
|
|
41
|
+
- An E-value computed for a non-primary, supporting estimate but quoted as if it bounds the primary claim is a provenance error (the E-value must trace to the declared primary contrast).
|
|
42
|
+
- For a non-null primary association presented as actionable with no residual-confounding quantification → MAJOR (request an E-value at the point estimate and the bound nearest the null); for a null primary, residual confounding is less load-bearing but power (see the power-aware null check) should be addressed instead.
|
|
43
|
+
|
|
44
|
+
**Output template (O1 example)**:
|
|
45
|
+
> "Table 1 shows that uric acid (p < 0.001), smoking pack-years (p = 0.001), HDL (p < 0.001), total cholesterol (p = 0.010), and HbA1c (p < 0.001) differ significantly across exposure groups, but the multivariable model adjusts only for age, sex, BMI, hypertension, and diabetes. Because these imbalanced laboratory covariates are plausible causes of the outcome, the reported association may carry residual confounding by measured variables. I'd suggest reporting an extended-adjustment sensitivity model that adds the imbalanced covariates and stating whether the primary estimate is materially unchanged; if the extended model attenuates the association, that should be reflected in the Abstract and Conclusions."
|
|
46
|
+
|
|
47
|
+
**Output template (O5 example)**:
|
|
48
|
+
> "The multivariable model appears to be complete-case, and pack-years is included as a continuous covariate. Because never-smokers carry a structural zero rather than a measured value, complete-case deletion can drop a large share of the unexposed stratum (here the analytic n falls from 5,203 to 1,993, with the female subgroup reduced to n ≈ 58), which distorts the subgroup estimates. I'd suggest adjusting for smoking status (never/former/current) rather than pack-years, reserving pack-years for an ever-smoker-restricted secondary analysis, and reporting the missingness fraction by exposure stratum with the MCAR/MAR/MNAR rationale."
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- Domain probe module — shared, vendored BYTE-IDENTICAL by /peer-review and /self-review.
|
|
2
|
+
Severity words below (MAJOR / MINOR / major / minor) denote finding severity, NOT a journal
|
|
3
|
+
recommendation. Each consuming skill maps findings to its own output:
|
|
4
|
+
- peer-review: Major / Minor comments + Confidential Comments to the Editor; a task- or
|
|
5
|
+
design-level flaw is placed as Major #1.
|
|
6
|
+
- self-review: Anticipated Major / Minor Comments (Fatal / Fixable) mapped to category letters.
|
|
7
|
+
Do NOT edit one copy only — run `python3 scripts/check_domain_probe_sync.py --sync`. -->
|
|
8
|
+
|
|
9
|
+
# Radiomics / Feature-Reproducibility probes (R1–R4)
|
|
10
|
+
|
|
11
|
+
A 4-probe checklist for radiomic feature reliability/reproducibility, acquisition–reconstruction parameter sweeps, and reliability/harmonization-based feature filtering claims. These probes complement (do not replace) the generic Phase 2 issue checklist. Their purpose is to keep design-level structural validity from being under-weighted: a review can correctly flag the reporting-layer issues (an over-claiming Abstract, a small external cohort) yet still miss whether the central contribution holds, which softens the assessment by one notch.
|
|
12
|
+
|
|
13
|
+
**R1 — Design-grid circularity (in-domain "prediction" tautology)**:
|
|
14
|
+
- Is an outcome (e.g., feature reliability) predicted from the very grid parameters that were systematically/exhaustively varied to construct the dataset?
|
|
15
|
+
- If so, a high in-domain R² / accuracy is structurally guaranteed by the design ("predicting the construction recipe"), not a discovered relationship — do the predictors simply index the axes of the design grid?
|
|
16
|
+
- Does the manuscript frame in-domain performance as a finding/success and lead the Abstract/Key Points with it?
|
|
17
|
+
- If yes → do **not** endorse the in-domain success. Recommend reframing so the substantive finding is the cross-domain transportability (and, where present, its failure). MAJOR candidate.
|
|
18
|
+
|
|
19
|
+
**R2 — Construct validity / proxy-target gap**:
|
|
20
|
+
- The clinical rationale typically assumes that features which are reliable/stable/robust in the phantom are also better predictors of a biological/clinical target. A feature can be perfectly stable and biologically uninformative — this link is not logically guaranteed.
|
|
21
|
+
- Is any post-filter performance gain shown to be signal recovery, rather than a by-product of removing a degraded/misaligned baseline feature space?
|
|
22
|
+
- Does the manuscript acknowledge and test the orthogonality of the proxy (reliability) and the target (outcome)? Absent → MAJOR candidate.
|
|
23
|
+
|
|
24
|
+
**R3 — Transportability framing vs reporting issue**:
|
|
25
|
+
- When cross-phantom / cross-scanner / cross-center failure (negative R² on the target domain, low Jaccard overlap of selected features, calibration slope < 1) is the substantive result, is it nonetheless framed as a generalization success in the Abstract/Key Points/Conclusion?
|
|
26
|
+
- Does the Results text state explicitly that a negative R² on the target domain means the model performs worse than predicting the mean (i.e., the mapping does not transport), rather than reading it as a weak continuous performance metric?
|
|
27
|
+
- **Calibration link**: if in-domain "success" is partly a design artifact and the cross-domain result is a failure, reframing the Abstract will not rescue the central contribution. This is a design-level finding, not a reporting fix — keep its severity at the design level and do not soften it to a reporting issue.
|
|
28
|
+
|
|
29
|
+
**R4 — Multiplicity (model × threshold / model × cohort grid)**:
|
|
30
|
+
- Are multiple classifiers × multiple reliability thresholds (or cohorts) compared with one-sided tests, with a few reaching p < 0.05?
|
|
31
|
+
- Is multiple-testing correction applied, and is the expected number of false positives by chance named explicitly (e.g., "5 models × 3 thresholds = 15 tests, ≈1 expected false positive")? Do not defer this to a generic "statistical review needed."
|
|
32
|
+
- For a small external cohort (n ≤ ~30), do bootstrap ΔAUC intervals cross zero? If so, restrict any headline-gain claim accordingly (e.g., to a single classifier family in a small cohort).
|
|
33
|
+
|
|
34
|
+
**Output template (R1 example)**:
|
|
35
|
+
> "Because the acquisition parameters were varied as a systematic factorial grid, a model that predicts feature reliability from those same parameters is largely recovering the grid by construction; the in-domain R² ≈ 1.0 therefore reflects design structure rather than a discovered relationship. I'd suggest reframing the Abstract and Key Points so the substantive finding is the cross-phantom/cross-scanner transportability (and its failure), and stating explicitly in the Results that a negative R² on the target domain means the model performs worse than predicting the mean — i.e., the reliability mapping does not transport."
|
|
36
|
+
|
|
37
|
+
**Output template (R4 example)**:
|
|
38
|
+
> "The reported gains come from a grid of [N models] × [M thresholds] one-sided comparisons; with [N×M] tests, roughly one positive is expected by chance alone, and the external cohort (n = [k]) yields bootstrap ΔAUC intervals that cross zero for several thresholds. I'd suggest reporting a multiplicity-adjusted analysis (or stating the expected false-positive count), restricting the headline claim to the classifier family that survives, and marking the ΔAUC intervals that cross zero in the figure."
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<!-- Domain probe module — shared, vendored BYTE-IDENTICAL by /peer-review and /self-review.
|
|
2
|
+
Severity words below (MAJOR / MINOR / major / minor) denote finding severity, NOT a journal
|
|
3
|
+
recommendation. Each consuming skill maps findings to its own output:
|
|
4
|
+
- peer-review: Major / Minor comments + Confidential Comments to the Editor; a task- or
|
|
5
|
+
design-level flaw is placed as Major #1.
|
|
6
|
+
- self-review: Anticipated Major / Minor Comments (Fatal / Fixable) mapped to category letters.
|
|
7
|
+
Do NOT edit one copy only — run `python3 scripts/check_domain_probe_sync.py --sync`. -->
|
|
8
|
+
|
|
9
|
+
# Systematic Review / Meta-Analysis probes (P0–P10)
|
|
10
|
+
|
|
11
|
+
Internal-consistency-first gate (P0) plus a 10-probe checklist (P1–P10). These probes complement (do not replace) the generic Phase 2 issue checklist.
|
|
12
|
+
|
|
13
|
+
**P0 — Internal-consistency-first gate (run before P1; gates any fabrication claim)**:
|
|
14
|
+
- Before alleging fabrication on a manuscript that "feels AI-generated", reproduce the headline pooled statistics, paired study counts (k), and subgroup counts directly from the extracted data table (or supplement included-studies table).
|
|
15
|
+
- If paired k, pooled medians, and subgroup counts reproduce, fabrication is unlikely — **pivot the review to table-vs-source fidelity (P1), comparator definition (P1), and eligibility**, not to a fabrication framing.
|
|
16
|
+
- Only if the table cannot be reproduced, or is internally inconsistent, escalate to a transparency/integrity MAJOR.
|
|
17
|
+
- Rationale: an "AI-smelling" surface is not evidence of fabrication. Real references can be present and the arithmetic coherent while the substantive flaws are extraction, comparator, eligibility, and overclaiming.
|
|
18
|
+
|
|
19
|
+
**P1 — Performance-MA value + comparator-existence probe**:
|
|
20
|
+
- For method-comparison MAs reporting accuracy / DSC / AUC / F1 (model-vs-model, AI-vs-reader, two training paradigms) and for DTA MAs reporting sensitivity / specificity, select ≥2 outlier or headline-driving studies.
|
|
21
|
+
- (a) Verify each sampled arm value against the source paper (PubMed abstract or full text). For DTA cells, check for **sens/spec swap** (source sens=A% / spec=B% appearing in the forest as sens=B% / spec=A%).
|
|
22
|
+
- (b) **Comparator-existence check**: verify the comparator arm is consistently defined and actually exists in each source. A baseline mislabeled as the comparator inflates the headline (e.g., a limited single-source baseline reported as a "centralised" comparator when the source paper has no centralised arm).
|
|
23
|
+
- (c) Per-study schema: `Exists | Correct citation | Eligible (domain-specific) | Same comparator (same task/dataset) | Value matches source | Author-derived/averaged | Verdict`.
|
|
24
|
+
- (d) Severity ladder: `<1pp rounding or author-derived average = minor`; `wrong dataset/task/comparator or not domain-specific = major`; `unfindable or wrong-citation = integrity concern (verify against source); potentially major`.
|
|
25
|
+
- If a confirmed error drives a reported subgroup p-value or a headline claim, register as a primary major finding.
|
|
26
|
+
|
|
27
|
+
**P2 — Cohort / benchmark non-independence probe**:
|
|
28
|
+
- Identify clusters in included studies sharing: (a) institution name, (b) author surname + year proximity, (c) public ICU/EHR database (MIMIC-IV, eICU, MIMIC-III, KNHIS, UK Biobank, Optum, MarketScan, IBM), (d) **public imaging-challenge benchmark** (BraTS, FeTS, TCIA, Kaggle) reused across multiple included studies.
|
|
29
|
+
- For each cluster, fetch PubMed efetch affiliation + abstract Methods database/benchmark source.
|
|
30
|
+
- Flag pairs sharing the same data source + overlapping enrollment period (or the same public benchmark) as "high-confidence non-independence".
|
|
31
|
+
- Manuscript should acknowledge in Limitations + perform a leave-one-dataset-out sensitivity analysis and add a data-provenance column to Table 1. If absent → MAJOR.
|
|
32
|
+
- **Nuance**: map provenance and *request* the provenance column + sensitivity analysis; do NOT assert that a specific study used a given benchmark from coarse supplement labels alone (e.g., a supplement labeling a study only as "Hospital" or "Public" does not confirm BraTS/FeTS use). Confirm against the source before stating it.
|
|
33
|
+
|
|
34
|
+
**P3 — Diagnostic subset N transparency (mixed DTA + prognostic MA)**:
|
|
35
|
+
- Compute bivariate pool denominator (TP+FP+TN+FN) from Table 2 or forest plot.
|
|
36
|
+
- Compare to total N reported in Abstract.
|
|
37
|
+
- If diagnostic subset is <50% of total without explicit "diagnostic subset N = X / Y" in Results → MAJOR transparency gap.
|
|
38
|
+
|
|
39
|
+
**P4 — k=1 subgroup flag**:
|
|
40
|
+
- Inspect subgroup analyses for strata with k=1 (single included study).
|
|
41
|
+
- If a reported subgroup p-value is driven by k=1 stratum → flag MAJOR.
|
|
42
|
+
- Recommend reframing as exploratory or removing from formal subgroup test.
|
|
43
|
+
|
|
44
|
+
**P5 — Supplementary completeness check**:
|
|
45
|
+
- SR-MA supplementary must contain at minimum:
|
|
46
|
+
- PRISMA / PRISMA-DTA checklist with page refs
|
|
47
|
+
- Full-text exclusion list with reasons (per PRISMA 2020 item 16b)
|
|
48
|
+
- Per-study data extraction table
|
|
49
|
+
- Per-study × per-domain risk-of-bias table (QUADAS-2 / QUADAS-AI / PROBAST / PROBAST-AI)
|
|
50
|
+
- Full search strategy verbatim per database
|
|
51
|
+
- If supplementary contains only figure captions or is missing 3+ of these → MAJOR.
|
|
52
|
+
|
|
53
|
+
**P6 — PROSPERO ID format + live URL request**:
|
|
54
|
+
- Standard PROSPERO format: `CRD42` + 4-digit YYYY + 6-digit sequential = 13 chars total. Some pre-2020 IDs are 12 chars (5-digit sequential).
|
|
55
|
+
- IDs with >13 chars or non-numeric tail → FORMAT_ANOMALY (MAJOR).
|
|
56
|
+
- Always request authors provide live registration URL in cover letter for protocol cross-check.
|
|
57
|
+
|
|
58
|
+
**P7 — Reference duplicate detection** (extends `/verify-refs`):
|
|
59
|
+
- Run `/verify-refs` (PubMed + CrossRef). In addition to standard checks, detect duplicate PMID or DOI within reference list.
|
|
60
|
+
- Verbatim duplicates indicate LLM-assisted reference compilation error → MAJOR (cite renumbering required).
|
|
61
|
+
|
|
62
|
+
**P8 — AI Disclosure presence**:
|
|
63
|
+
- `grep -iE "chatgpt|gpt-|llm|generative ai|ai was used|ai-assisted|copilot|claude|gemini|chatbot|large language model"` on manuscript body.
|
|
64
|
+
- If 0 matches AND journal requires AI Disclosure (RYAI / Radiology / RSNA family / Lancet family / JAMA family / most BMJ family / Nature family) → flag MINOR-to-MAJOR.
|
|
65
|
+
|
|
66
|
+
**P9 — Non-significant finding promoted to Abstract (overclaim probe)**:
|
|
67
|
+
- Flag any exploratory or non-significant result (a crossover, a trend, a post-hoc subgroup) that appears in the Abstract or Key Points framed as a finding.
|
|
68
|
+
- Sub-check: does the promoted finding depend on a study flagged or mis-extracted under P1? (A headline crossover can collapse once a mis-extracted comparator is corrected.)
|
|
69
|
+
- Flag "non-inferiority" / "equivalence" asserted without a pre-specified margin. A margin cannot be pre-specified retrospectively — ask the authors to document any pre-existing protocol margin, otherwise drop the non-inferiority language or present it explicitly as a post hoc equivalence / sensitivity analysis.
|
|
70
|
+
|
|
71
|
+
**P10 — Citation-metadata confusion class (over-escalation guard)**:
|
|
72
|
+
- DOI-suffix digits that surface as an apparent article number (e.g., a DOI tail "77196" against article number 26068, or "60466-1" against 6274) are cosmetic metadata confusion, **not** fabrication — do not escalate them as fabricated references.
|
|
73
|
+
- Reference-list duplicates are handled by `/verify-refs` (`duplicate_findings[]`); AI-disclosure presence is the cross-cutting P8 check. Neither is unique to SR/MA.
|
|
74
|
+
|
|
75
|
+
**Output template (P1 cell-swap example)**:
|
|
76
|
+
> "I spot-checked [Author Year] (PMID [...]) against the source paper and found that the values in Figure X are swapped. The source paper reports external-test sensitivity A% / specificity B% (n=N); the manuscript forest entries place [num1/denom1] in the sensitivity slot (which is the source's specificity numerator/denominator) and [num2/denom2] in the specificity slot (which is the source's sensitivity)."
|
|
77
|
+
|
|
78
|
+
**Output template (P1 comparator-existence example)**:
|
|
79
|
+
> "I spot-checked [Author Year] (PMID [...]) against the source. The manuscript lists this study's comparator ('[label]', [value]) in [comparison], but the source paper does not report that arm; the [value] appears to be the study's [limited single-source baseline]. Because this entry contributes to [the pooled comparison / a headline claim], I'd suggest re-extracting the comparator definition per study and adding a comparator-definition column to Table 1 so readers can confirm each arm is the same task on the same data."
|
|
80
|
+
|
|
81
|
+
**Output template (P2 example)**:
|
|
82
|
+
> "[Author1 Year1] uses [Database] (N=...). [Author2 Year2] uses [Database] (N=...). These are nearly certainly overlapping patient pools, and the statistical independence assumption for MA pooling is violated. I'd suggest a sensitivity analysis excluding one of the two studies, plus an explicit cohort-source column in Table 1."
|
|
83
|
+
|
|
84
|
+
**Discipline — leads vs findings (applies to every P0–P10 probe)**:
|
|
85
|
+
- Output from a forensic sub-agent or automated scan is a **lead, never a finding, until confirmed against the source.** Concrete failure modes to discard on inspection: treating recent (in-press / current-year) publication dates as "impossible", inventing journal article-number rules, and inflated all-or-nothing fabrication-risk scores.
|
|
86
|
+
- Before finalizing, run an **overclaim sweep of your own draft** (mandatory external-QC pass — independent model or colleague). Two worked examples: a strong claim that "the references are real, not fabricated" should be narrowed to "the sampled references / DOIs resolved"; a benchmark example list should be trimmed to studies whose benchmark use was source-confirmed.
|
|
87
|
+
- **Do not compute chance-probabilities** for suspicious or identical values. Record the observation neutrally: "exact match to ≥2 decimals; source verification pending."
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<!-- Domain probe module — shared, vendored BYTE-IDENTICAL by /peer-review and /self-review.
|
|
2
|
+
Severity words below (MAJOR / MINOR / major / minor) denote finding severity, NOT a journal
|
|
3
|
+
recommendation. Each consuming skill maps findings to its own output:
|
|
4
|
+
- peer-review: Major / Minor comments + Confidential Comments to the Editor; a task- or
|
|
5
|
+
design-level flaw is placed as Major #1.
|
|
6
|
+
- self-review: Anticipated Major / Minor Comments (Fatal / Fixable) mapped to category letters.
|
|
7
|
+
Do NOT edit one copy only — run `python3 scripts/check_domain_probe_sync.py --sync`. -->
|
|
8
|
+
|
|
9
|
+
# Survival / Prognostic Model probes (S1–S8)
|
|
10
|
+
|
|
11
|
+
An 8-probe checklist for time-to-event outcomes and prognostic model development. These probes complement (do not replace) the generic Phase 2 issue checklist and may be co-applied with the SR-MA probes for a meta-analysis of prognostic models.
|
|
12
|
+
|
|
13
|
+
**S1 — Conditioning / causal framing**:
|
|
14
|
+
- Does the manuscript claim a "preoperative" / "screening" / "triage" / "X replaces Y" use case while outcomes are conditioned on the downstream treatment whose value the model is supposed to inform?
|
|
15
|
+
- Inputs include post-decision variables (resection margin status, adjuvant chemo/radiotherapy, transplant status) that are unknown at the claimed decision point?
|
|
16
|
+
- Non-treatment comparator or causal framework present?
|
|
17
|
+
- Conditioning gap → MAJOR candidate. Recommend retrain without leaky variables / add non-treatment arm / reframe intended use.
|
|
18
|
+
- **Time origin & survivorship** (incident / transition models): is the at-risk clock started at the correct origin for each incident model, with immortal time (a span in which the event cannot occur, misattributed to one group) and left-truncation / delayed entry handled? Is a "progressor" / transition label conditioned on *surviving to* a later ascertainment (a second scan, a follow-up visit) — a survivorship that needs a landmark time or an explicit intermediate-state model? If the primary analysis is **not** the full cohort (e.g., complete-case while a large fraction is missing) and the complete-case model is the significant one, that selection needs a stated justification and a MAR rationale — an outcome-dependent choice of the analysis set is the S8 concern. Any of these unhandled → MAJOR.
|
|
19
|
+
- **Self-confession escalation**: a Methods or Limitations admission that a time-origin, immortal-time, return-conditioning, or selection issue was *"not formally assessed"* (or equivalent) is itself a MAJOR — it names a known bias that was left unaddressed, not a mitigated limitation.
|
|
20
|
+
|
|
21
|
+
**S2 — Censoring handling in training loss**:
|
|
22
|
+
- Cox partial-likelihood loss or DeepSurv-style loss specified? How is censoring handled (right-censoring, interval-censoring, informative censoring by death)?
|
|
23
|
+
- If Methods describe a Cox or partial-likelihood loss but do not specify censoring treatment, register as MAJOR (reproducibility).
|
|
24
|
+
- Covariate incompleteness in the model fit is part of the same disclosure: is a structural-zero covariate (a never-smoker's pack-years = 0 by definition, not missing) handled as a zero, or dropped under complete-case so the unexposed stratum and the events-per-variable silently collapse? An undisclosed complete-case collapse from a dose/duration covariate is a reproducibility + power issue — adjust on the categorical status and reserve the continuous dose for an exposed-only secondary analysis.
|
|
25
|
+
|
|
26
|
+
**S3 — Competing risks**:
|
|
27
|
+
- 2+ event types (local recurrence + distant metastasis + death, or cause-specific mortality) modeled?
|
|
28
|
+
- Cause-specific hazards or Fine-Gray subdistribution hazards used?
|
|
29
|
+
- Patient developing one event still at risk for the other (informative censoring by death)?
|
|
30
|
+
- If competing-risks structure is ignored and outcomes are treated as independent right-censored events → MAJOR.
|
|
31
|
+
|
|
32
|
+
**S4 — Cutoff derivation optimism**:
|
|
33
|
+
- Cutoffs derived via maximally selected log-rank statistics, AUC-based Youden's J, or similar data-driven methods?
|
|
34
|
+
- Hothorn-Lausen correction or equivalent optimism correction applied?
|
|
35
|
+
- Was the same cohort used for both model selection (hyperparameter tuning) AND cutoff selection? (Optimism bias)
|
|
36
|
+
- Bootstrap optimism estimate or sensitivity analysis on cutoff choice (e.g., ±0.5 SD perturbation)?
|
|
37
|
+
- Same-cohort dual use without correction → MAJOR.
|
|
38
|
+
|
|
39
|
+
**S5 — Comparator horizon alignment**:
|
|
40
|
+
- External baseline prognostic nomogram (commonly designed for 5- or 10-year endpoints) applied as the comparator?
|
|
41
|
+
- Manuscript's available follow-up duration aligned with that horizon?
|
|
42
|
+
- Mismatch → baseline C-index degradation may reflect design-horizon mismatch ≠ intrinsic inferiority. Recommend time-dependent C-index or time-stratified analyses.
|
|
43
|
+
- Baseline implementation specified: applied as published, locally recalibrated, or refit as a new Cox model with similar variables?
|
|
44
|
+
- Unclear implementation → MAJOR (a refit local model should be described as a clinicopathologic comparator, not a "guideline model").
|
|
45
|
+
|
|
46
|
+
**S6 — C-index variant + reverse Kaplan-Meier follow-up**:
|
|
47
|
+
- Which C-index variant: Harrell's C, Uno's C, time-dependent AUC, IPCW-C?
|
|
48
|
+
- Variant appropriate for the censoring distribution and sample size?
|
|
49
|
+
- Time-dependent AUC at a clinically anchored horizon (e.g., 2-year, 3-year) reported alongside Harrell's C?
|
|
50
|
+
- Reverse Kaplan-Meier median follow-up reported per cohort and per outcome (LR vs DM separately) with censoring date?
|
|
51
|
+
|
|
52
|
+
**S7 — Calibration beyond discrimination**:
|
|
53
|
+
- Calibration plot (intercept / slope) across all cohorts?
|
|
54
|
+
- Brier score / Integrated Brier Score (IBS)?
|
|
55
|
+
- Decision-curve analysis at clinically relevant probability thresholds?
|
|
56
|
+
- For a prognostic model intended to guide surveillance intensity, treatment intensification, or eligibility for adjuvant therapy, discrimination alone is insufficient. If Methods mention calibration but Results/supplement contain no calibration plot or numeric metrics → MAJOR.
|
|
57
|
+
|
|
58
|
+
**S8 — Estimand provenance**:
|
|
59
|
+
- Is the survival estimand stated explicitly and held consistent across Abstract / Methods / Results — event-free survival, cause-specific cumulative incidence, all-cause mortality — and at the subject vs population level? A subdistribution hazard (Fine-Gray) answers a different question than a cause-specific hazard; quoting an sHR for an etiologic claim, or a cause-specific HR for an absolute-risk claim, is an estimand mismatch.
|
|
60
|
+
- Is the evaluation horizon (2-/3-/5-year) and the primary model fixed in advance and consistent with the registered/pre-specified primary endpoint, or was the primary endpoint, model, or horizon re-designated after the results were known (outcome-dependent primary selection)?
|
|
61
|
+
- Does every derived statistic (E-value, an sHR-vs-cause-specific-HR contrast) trace to the *declared primary* estimand, or is a supporting/non-primary estimate quoted as if it bounded the headline claim?
|
|
62
|
+
- Estimand drift — a primary re-designated post-hoc, or a derived statistic computed on a non-primary estimate but presented as primary → MAJOR. Recommend reporting the pre-specified and revised models coequally, disclosing the change, and recomputing any E-value for the primary estimate. (The self-review skill automates the registration ↔ manuscript and E-value arithmetic checks as Phase 2.5f, `scripts/check_claim_artifact.py`.)
|
|
63
|
+
|
|
64
|
+
**Output template (S4 example)**:
|
|
65
|
+
> "The Methods (p. X) state that optimal cutoffs for [outcome] were determined via maximally selected log-rank statistics on the internal validation cohort. Two concerns: (a) Hothorn-Lausen correction is cited but it is unclear whether the corrected p-value was used in the cutoff selection; (b) the internal validation cohort appears to have been used for both model selection and cutoff selection, which is a known source of optimism. I'd suggest reporting bootstrap-based optimism estimates or a sensitivity analysis showing how external performance shifts under ±0.5-SD perturbation of the chosen cutoff."
|
|
66
|
+
|
|
67
|
+
**Output template (S5 example)**:
|
|
68
|
+
> "The chosen baseline nomogram was originally designed and validated for prediction of long-horizon endpoints (5- and 10-year). In this study, median follow-up in [external cohort] is substantially shorter than that horizon, so the comparator's apparent underperformance may partly reflect a horizon mismatch rather than intrinsic inferiority. I'd suggest (a) stating explicitly the time horizon at which both models were evaluated, (b) reporting time-dependent C-indices at a clinically anchored horizon, and (c) clarifying whether the comparator was applied as published, recalibrated locally, or refit as a new Cox model with similar variables."
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Exemplar reviewer comments — anchoring + phrasing models
|
|
2
|
+
|
|
3
|
+
The skill teaches *what* to look for (signature checks + domain probes) and *what tone*
|
|
4
|
+
to use (`aczel_2021_reviewer2_patterns.md`), but until now carried no worked examples of
|
|
5
|
+
how an experienced reviewer turns a finding into a comment. This directory fills that gap.
|
|
6
|
+
|
|
7
|
+
Each file models one recurring finding for medical-AI / clinical papers and shows the
|
|
8
|
+
same four moves a strong review makes:
|
|
9
|
+
|
|
10
|
+
1. **Anchor** — name the exact location (section, figure/table, page) the concern sits in.
|
|
11
|
+
2. **State the gap** — what is claimed vs what the evidence supports, concretely.
|
|
12
|
+
3. **Phrase it as a partner** — hedged, first-person, critique-the-work-not-the-author
|
|
13
|
+
(Aczel-compliant: "I'd suggest…", "it would help to…", never "the authors fail to…").
|
|
14
|
+
4. **Calibrate severity** — when the finding is design-level it becomes Major #1; when it
|
|
15
|
+
is fixable-as-reported it stays a Minor; the example says which and why.
|
|
16
|
+
|
|
17
|
+
## How these are used
|
|
18
|
+
|
|
19
|
+
The reviewer (or `/self-review`) reads the relevant exemplar before drafting Phase 3
|
|
20
|
+
comments, to model the anchoring + phrasing — not to copy text. They are **teaching
|
|
21
|
+
models, authored from scratch**, not extracted from any published review.
|
|
22
|
+
|
|
23
|
+
## Contents
|
|
24
|
+
|
|
25
|
+
- `ai_overclaiming.md` — generalizability / "outperforms" / "can replace" claims that
|
|
26
|
+
outrun single-center or single-reader evidence.
|
|
27
|
+
- `reference_standard_validity.md` — an imprecise, unblinded, or mistimed reference
|
|
28
|
+
standard in a diagnostic-accuracy study.
|
|
29
|
+
- `data_leakage.md` — patient-level split violations and label-bearing input features.
|
|
30
|
+
- `calibration_missing.md` — discrimination (AUC) reported for a clinical prediction
|
|
31
|
+
model with no calibration assessment.
|
|
32
|
+
|
|
33
|
+
## Curator guidelines (for adding more)
|
|
34
|
+
|
|
35
|
+
- **Synthetic only.** Author the example; never paste a real reviewer's words or a real
|
|
36
|
+
manuscript's text. Use placeholder study details ("a single-center retrospective
|
|
37
|
+
cohort", "Figure 3").
|
|
38
|
+
- **One finding per file**, showing the four moves above end to end.
|
|
39
|
+
- **Show both the weak and the strong phrasing** so the contrast is teachable.
|
|
40
|
+
- **Tie severity to the fatal-flaw hierarchy** the skill already uses (design-level →
|
|
41
|
+
Major #1; reporting-level → Minor).
|
|
42
|
+
- Keep each file ~40–80 lines. Cross-reference the relevant domain probe or signature
|
|
43
|
+
check by name, not by copying it.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Exemplar — AI overclaiming relative to the evidence
|
|
2
|
+
|
|
3
|
+
**Finding class:** the conclusion's reach (generalizable / outperforms / can replace)
|
|
4
|
+
exceeds what a single-center, single-reader, or internally-validated result supports.
|
|
5
|
+
**Typical severity:** design-/framing-level → **Major #1** when the headline claim depends
|
|
6
|
+
on it; Minor when it is only a stray adjective in the Discussion.
|
|
7
|
+
|
|
8
|
+
## What the reviewer noticed
|
|
9
|
+
|
|
10
|
+
The Abstract and Conclusion state the model "generalizes across institutions" and
|
|
11
|
+
"outperforms radiologists," but the external test set is one site (Methods, "External
|
|
12
|
+
validation"), the reader comparison used two readers on a different task tempo than the
|
|
13
|
+
model (Table 3), and the confidence intervals for model vs reader AUC overlap (Figure 2).
|
|
14
|
+
|
|
15
|
+
## Weak phrasing (avoid)
|
|
16
|
+
|
|
17
|
+
> The authors overclaim. Saying the model generalizes and beats radiologists is not
|
|
18
|
+
> justified and should be removed.
|
|
19
|
+
|
|
20
|
+
(Verdict without an anchor, no path forward, gatekeeper tone.)
|
|
21
|
+
|
|
22
|
+
## Strong phrasing (model this)
|
|
23
|
+
|
|
24
|
+
> The Conclusion states the model "generalizes across institutions," but external
|
|
25
|
+
> validation appears limited to a single site (Methods, *External validation*). I'd
|
|
26
|
+
> suggest softening this to the evidence — e.g., "validated at one external site" — and
|
|
27
|
+
> framing multi-institution generalizability as a stated limitation and next step.
|
|
28
|
+
>
|
|
29
|
+
> Relatedly, the "outperforms radiologists" claim rests on a comparison whose 95% CIs for
|
|
30
|
+
> model and reader AUC overlap (Figure 2), and the reader task differs from the model's in
|
|
31
|
+
> [tempo/inputs] (Table 3). It would strengthen the paper to (a) report the difference in
|
|
32
|
+
> AUC with its CI and a test of that difference rather than two separate AUCs, and (b)
|
|
33
|
+
> state explicitly which clinical task the comparison establishes. If the difference is
|
|
34
|
+
> not statistically supported, I'd recommend reframing from "outperforms" to
|
|
35
|
+
> "comparable to," which is still a meaningful and more defensible result.
|
|
36
|
+
|
|
37
|
+
## Why this is Major #1 here
|
|
38
|
+
|
|
39
|
+
The over-reach is in the Abstract and Conclusion and is the paper's headline, so a reader
|
|
40
|
+
takes away a claim the data do not support. Anchoring it to the single-site external set
|
|
41
|
+
and the overlapping CIs makes the fix concrete and keeps the contribution intact.
|
|
42
|
+
|
|
43
|
+
## Related checks
|
|
44
|
+
|
|
45
|
+
Signature check "Overclaiming vs evidence level"; self-review category D
|
|
46
|
+
(endpoint↔conclusion scope); `check_scope_coherence.py` for surrogate→care-directive and
|
|
47
|
+
cross-sectional→prognostic variants.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Exemplar — calibration not reported for a clinical prediction model
|
|
2
|
+
|
|
3
|
+
**Finding class:** the model is presented for clinical decision-making, but only
|
|
4
|
+
discrimination (AUC/c-statistic) is reported — no calibration, and often no decision-curve
|
|
5
|
+
or clinical-utility analysis.
|
|
6
|
+
**Typical severity:** **Major** when the paper proposes clinical use (a probability that
|
|
7
|
+
drives a decision must be calibrated); **Minor** when the model is framed as a research
|
|
8
|
+
prototype only.
|
|
9
|
+
|
|
10
|
+
## What the reviewer noticed
|
|
11
|
+
|
|
12
|
+
Results report AUC with CIs for every model (Table 2, Figure 1), and the Discussion
|
|
13
|
+
proposes using predicted probabilities to triage patients, but there is no calibration plot
|
|
14
|
+
or metric (calibration slope/intercept, ECE) and no decision-curve analysis.
|
|
15
|
+
|
|
16
|
+
## Weak phrasing (avoid)
|
|
17
|
+
|
|
18
|
+
> AUC is not enough; the authors need calibration.
|
|
19
|
+
|
|
20
|
+
(True but terse; no reason, no anchor, no path.)
|
|
21
|
+
|
|
22
|
+
## Strong phrasing (model this)
|
|
23
|
+
|
|
24
|
+
> The discrimination results are clearly presented (Table 2, Figure 1). Because the
|
|
25
|
+
> Discussion proposes using the predicted probabilities to triage patients, it would help
|
|
26
|
+
> to add an assessment of calibration — how close predicted probabilities are to observed
|
|
27
|
+
> frequencies. AUC can be high while probabilities are systematically too confident, which
|
|
28
|
+
> would mislead a probability-based threshold. A calibration plot with slope and intercept
|
|
29
|
+
> (and ideally on the external set) would let readers judge whether the proposed thresholds
|
|
30
|
+
> are safe. A decision-curve analysis would further show the net benefit across plausible
|
|
31
|
+
> threshold probabilities relative to treat-all / treat-none. If recalibration was applied,
|
|
32
|
+
> stating the method would also be useful.
|
|
33
|
+
|
|
34
|
+
## Severity calibration
|
|
35
|
+
|
|
36
|
+
If the paper's contribution is a deployable triage tool, calibration is **Major** — the
|
|
37
|
+
clinical claim rests on the probabilities being trustworthy. If the model is explicitly a
|
|
38
|
+
methods demonstration with no decision claim, a calibration metric is a reasonable
|
|
39
|
+
**Minor** addition.
|
|
40
|
+
|
|
41
|
+
## Related checks
|
|
42
|
+
|
|
43
|
+
Signature check "Calibration (AUC alone insufficient)"; TRIPOD+AI / CLAIM calibration items
|
|
44
|
+
via `/check-reporting`; self-review category C (calibration [CRITICAL]).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Exemplar — data leakage (split contamination / label-bearing inputs)
|
|
2
|
+
|
|
3
|
+
**Finding class:** information from the test set or the outcome reaches the model at
|
|
4
|
+
training time — via a patient appearing in both train and test, or via an input feature
|
|
5
|
+
that encodes the label.
|
|
6
|
+
**Typical severity:** design-level → **Major #1**, because leakage inflates every reported
|
|
7
|
+
metric and is often invisible in the results themselves.
|
|
8
|
+
|
|
9
|
+
## What the reviewer noticed
|
|
10
|
+
|
|
11
|
+
Methods report a 70/30 split "by image," but many patients contributed multiple images
|
|
12
|
+
(Table 1, mean 2.4 studies/patient), so the same patient can fall on both sides of the
|
|
13
|
+
split. Separately, one input feature is the radiology report impression text, while the
|
|
14
|
+
outcome is the report-derived diagnosis — the input may contain the label.
|
|
15
|
+
|
|
16
|
+
## Weak phrasing (avoid)
|
|
17
|
+
|
|
18
|
+
> There is leakage so the model is invalid.
|
|
19
|
+
|
|
20
|
+
(Asserts the conclusion; gives the authors nothing to act on.)
|
|
21
|
+
|
|
22
|
+
## Strong phrasing (model this)
|
|
23
|
+
|
|
24
|
+
> Two points about independence between training and evaluation that, if addressed, would
|
|
25
|
+
> considerably strengthen confidence in the metrics:
|
|
26
|
+
>
|
|
27
|
+
> First, the 70/30 split is described as by image (Methods, *Data split*), but patients
|
|
28
|
+
> contributed multiple studies (Table 1). A patient-level split prevents the model from
|
|
29
|
+
> seeing the same patient in training and test; an image-level split can inflate
|
|
30
|
+
> performance. I'd suggest re-splitting by patient and reporting whether the metrics change
|
|
31
|
+
> — if they are stable, that is a strong robustness result to include.
|
|
32
|
+
>
|
|
33
|
+
> Second, one input is the report impression text while the outcome is derived from the
|
|
34
|
+
> report (Methods, *Inputs* / *Outcome*). If the impression states the diagnosis, the model
|
|
35
|
+
> may be reading the label rather than predicting it. Could the authors either mask the
|
|
36
|
+
> diagnosis-bearing portion of the text, or report a sensitivity analysis with that feature
|
|
37
|
+
> removed, to show the result does not depend on it?
|
|
38
|
+
|
|
39
|
+
## Why this is Major #1
|
|
40
|
+
|
|
41
|
+
Leakage does not announce itself in the results — the metrics look excellent precisely
|
|
42
|
+
because of it. Anchoring to the multi-study patients (Table 1) and the report-derived
|
|
43
|
+
outcome makes the concern concrete and gives two specific, runnable remedies.
|
|
44
|
+
|
|
45
|
+
## Related checks
|
|
46
|
+
|
|
47
|
+
Signature check "Patient-level data splitting"; self-review categories A (independence/
|
|
48
|
+
leakage) and H (circularity / label-feature overlap).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Exemplar — reference-standard validity in a diagnostic-accuracy study
|
|
2
|
+
|
|
3
|
+
**Finding class:** the reference standard ("ground truth") is imprecisely defined, applied
|
|
4
|
+
non-independently of the index test, mistimed, or read without blinding — so the reported
|
|
5
|
+
sensitivity/specificity may be biased.
|
|
6
|
+
**Typical severity:** design-level → **Major** (often Major #1 for a DTA paper), because it
|
|
7
|
+
threatens the headline accuracy estimates.
|
|
8
|
+
|
|
9
|
+
## What the reviewer noticed
|
|
10
|
+
|
|
11
|
+
Methods describe the reference standard as "clinical consensus," but it is not stated who
|
|
12
|
+
adjudicated, whether they were blinded to the index test, or the time interval between
|
|
13
|
+
index test and reference. STARD items on the reference standard and blinding are not
|
|
14
|
+
addressed.
|
|
15
|
+
|
|
16
|
+
## Weak phrasing (avoid)
|
|
17
|
+
|
|
18
|
+
> The ground truth is unreliable, so the results cannot be trusted.
|
|
19
|
+
|
|
20
|
+
(Global dismissal, no anchor, no remedy.)
|
|
21
|
+
|
|
22
|
+
## Strong phrasing (model this)
|
|
23
|
+
|
|
24
|
+
> The reference standard is described as "clinical consensus" (Methods, *Reference
|
|
25
|
+
> standard*), but a few details would let readers judge the accuracy estimates. Could the
|
|
26
|
+
> authors specify: (1) who adjudicated and their expertise; (2) whether adjudicators were
|
|
27
|
+
> blinded to the index-test result — this matters because unblinded adjudication can pull
|
|
28
|
+
> the reference toward the index test and inflate agreement; (3) the interval between the
|
|
29
|
+
> index test and the reference, since a long gap allows disease progression/regression
|
|
30
|
+
> (verification timing); and (4) for cases where consensus was used, the inter-rater
|
|
31
|
+
> agreement before consensus. If blinding was not feasible, a sentence on the expected
|
|
32
|
+
> direction of bias and a sensitivity analysis on the subset with histologic confirmation
|
|
33
|
+
> would reassure readers.
|
|
34
|
+
|
|
35
|
+
## Severity calibration
|
|
36
|
+
|
|
37
|
+
If adjudication was unblinded and the reference partly incorporates the index test, this is
|
|
38
|
+
incorporation bias and belongs as **Major #1** — the sensitivity/specificity are the
|
|
39
|
+
paper's product. If only the *reporting* is thin (the design is sound but undescribed),
|
|
40
|
+
it is a **Minor** request for Methods detail.
|
|
41
|
+
|
|
42
|
+
## Related checks
|
|
43
|
+
|
|
44
|
+
Signature check "Reference standard precisely defined"; QUADAS-2 domains (reference
|
|
45
|
+
standard, flow & timing) via `/check-reporting`; self-review category B.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Narrative / Review-Article Audit — Reference Material
|
|
2
|
+
|
|
3
|
+
Supporting material for the Phase 2D (RV1–RV8) review-article audit in `SKILL.md`. It collects (1) the SANRA appraisal items, (2) a consolidated evaluation checklist, and (3) a candidate-additions list for AI/LLM-in-radiology reviews. Nothing here is a hard requirement; it is an appraisal aid for a *narrative* (non-systematic) review.
|
|
4
|
+
|
|
5
|
+
## 1. SANRA appraisal items (paraphrased)
|
|
6
|
+
|
|
7
|
+
SANRA (Scale for the Assessment of Narrative Review Articles) is a brief **critical-appraisal tool, not a reporting guideline** — it scores narrative-review quality and is not meant to be enforced like PRISMA. Six items, each scored 0–2 (paraphrased; see source for exact wording):
|
|
8
|
+
|
|
9
|
+
1. **Importance** — the review explains why the topic matters to the readership.
|
|
10
|
+
2. **Aims** — the review states its aims/questions.
|
|
11
|
+
3. **Literature search** — the review describes how sources were identified (databases, terms, time window). For a narrative review this is a transparency *suggestion*, not a systematic-search requirement.
|
|
12
|
+
4. **Referencing** — claims are supported by appropriate, accurate, primary-source citations.
|
|
13
|
+
5. **Scientific reasoning** — evidence is appraised and synthesized critically rather than selectively reported.
|
|
14
|
+
6. **Endpoint data** — relevant data are presented appropriately (tables, figures, summary elements).
|
|
15
|
+
|
|
16
|
+
Source: Mertens S, Goldbeck-Wood S, Baethge C. *SANRA — a scale for the quality assessment of narrative review articles.* Research Integrity and Peer Review (2019). https://doi.org/10.1186/s41073-019-0064-8
|
|
17
|
+
|
|
18
|
+
> Mapping to Phase 2D probes: RV2 ↔ items 1–2; RV3 ↔ item 3 (suggestion-level); RV6 ↔ items 4–5. RV1 (novelty) and RV7 (load-bearing figures/tables) are **editorial value-add axes**, not SANRA items — keep them separate so SANRA is not over-applied.
|
|
19
|
+
|
|
20
|
+
## 2. Consolidated evaluation checklist
|
|
21
|
+
|
|
22
|
+
Structural / appraisal (SANRA-aligned):
|
|
23
|
+
1. Importance and knowledge gap are established.
|
|
24
|
+
2. Aims and scope boundaries are explicit (what is in/out).
|
|
25
|
+
3. Evidence-gathering is transparent enough to judge balance (suggestion for narrative reviews).
|
|
26
|
+
4. Citations are accurate and primary-source-weighted.
|
|
27
|
+
5. Evidence is appraised critically; conflicting findings are handled fairly.
|
|
28
|
+
6. Key data are summarized in tables/figures/summary elements.
|
|
29
|
+
|
|
30
|
+
Content / rigor:
|
|
31
|
+
7. Coverage is comprehensive and current for the field.
|
|
32
|
+
8. Treatment is balanced and objective (no cherry-picking toward a predetermined conclusion).
|
|
33
|
+
9. Novelty / value-add over existing reviews is articulated.
|
|
34
|
+
10. Findings are attributed to primary sources (no propagation of secondary-source errors).
|
|
35
|
+
|
|
36
|
+
Accessibility / utility:
|
|
37
|
+
11. Clear for the target audience; jargon is explained.
|
|
38
|
+
12. Actionable takeaways (clinical implications, future directions).
|
|
39
|
+
13. Logical organization and flow.
|
|
40
|
+
|
|
41
|
+
Domain-specific (AI/LLM reviews):
|
|
42
|
+
14. Technical and medical claims are accurate.
|
|
43
|
+
15. Relevant frameworks/standards are acknowledged where they support the argument.
|
|
44
|
+
|
|
45
|
+
## 3. Candidate additions for AI/LLM-in-radiology reviews
|
|
46
|
+
|
|
47
|
+
These are **candidate additions** a reviewer may raise with "consider adding X because it directly supports Y" phrasing — never "must cite," and proportionate to length. Items are tiered by publication status so a preprint is not equated with a peer-reviewed guideline. Verify each against the manuscript's existing coverage before suggesting it (do not request additions already present).
|
|
48
|
+
|
|
49
|
+
**Reporting frameworks (peer-reviewed):**
|
|
50
|
+
- TRIPOD-LLM — reporting for studies using large language models (Nature Medicine).
|
|
51
|
+
- MI-CLAIM-GEN — minimum-information checklist for generative clinical AI (Nature Medicine).
|
|
52
|
+
- STARD-AI — diagnostic-accuracy reporting for AI (Nature Medicine).
|
|
53
|
+
- CLAIM (2024 update) — checklist for AI in medical imaging (Radiology: Artificial Intelligence).
|
|
54
|
+
|
|
55
|
+
**Reporting frameworks (preprint — label as such):**
|
|
56
|
+
- Treat any not-yet-peer-reviewed arXiv/medRxiv checklist as a preprint and label it as such; do not equate it with a peer-reviewed guideline. Verify status before citing, since such items are frequently published later (the example above, MI-CLAIM-GEN, first appeared on arXiv and was subsequently published in Nature Medicine).
|
|
57
|
+
|
|
58
|
+
**Concepts and tooling commonly expected in a hallucination-in-radiology review:**
|
|
59
|
+
- Hallucination taxonomy: intrinsic vs extrinsic; faithfulness vs factuality.
|
|
60
|
+
- Retrieval-augmented generation (RAG): shifts the dominant failure mode from fabrication toward retrieval error rather than eliminating hallucination.
|
|
61
|
+
- Uncertainty / confidence calibration for clinical decision support.
|
|
62
|
+
- Radiology-specific evaluation: report-level metrics (e.g., RadGraph, CheXbert/CheXpert-F1) and hallucination-detection work for generated reports.
|
|
63
|
+
- Regulatory and deployment context: FDA 510(k) / CE pathways; deployment-assessment rubrics (e.g., RADAR).
|
|
64
|
+
|
|
65
|
+
## Principle
|
|
66
|
+
|
|
67
|
+
For a narrative review, error-spotting (RV4/RV5/RV6) is necessary but not sufficient. Identifying thematic gaps and proportionately suggesting missing literature/topics (RV8) is an expected part of the reviewer's role — the inverse of the scope-creep restraint applied to original research. New *studies* are still not requested; only missing *literature/topics* are.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Reviewer calibration — turning a compliance % into a judgment
|
|
2
|
+
|
|
3
|
+
`/check-reporting` reports how many guideline items are PRESENT / PARTIAL / MISSING and a
|
|
4
|
+
compliance percentage. A percentage alone does not answer the reviewer's actual question:
|
|
5
|
+
**is this manuscript reporting-complete enough, and which gaps are serious?** This directory
|
|
6
|
+
holds that judgment layer.
|
|
7
|
+
|
|
8
|
+
It is deliberately **not** in `reviewer_profiles/` — that directory is "form fields, not
|
|
9
|
+
opinions" (the scorecard a journal's editorial system shows). Calibration is opinion, so it
|
|
10
|
+
lives here, as the reviewer's own guideline.
|
|
11
|
+
|
|
12
|
+
## What it provides
|
|
13
|
+
|
|
14
|
+
- `compliance_floor.md` — the principle that **critical-item presence outranks the overall
|
|
15
|
+
percentage**, a per-guideline list of items that are reject-risk when MISSING regardless
|
|
16
|
+
of the headline %, and the desk-rejection-risk signals to weigh.
|
|
17
|
+
|
|
18
|
+
## How it is used
|
|
19
|
+
|
|
20
|
+
In `/peer-review` Phase 2 (reporting-guideline check) and `/self-review` (category G), after
|
|
21
|
+
`/check-reporting` produces its table: don't stop at the percentage. Check that each
|
|
22
|
+
**critical item** for the study type is PRESENT; a 90%-compliant manuscript that is missing
|
|
23
|
+
a critical item is weaker than an 80%-compliant one that has them all.
|
|
24
|
+
|
|
25
|
+
## Boundaries (read before adding)
|
|
26
|
+
|
|
27
|
+
- **No fabricated thresholds.** This file does not assert "journal X desk-rejects below
|
|
28
|
+
Y%." Journals rarely publish a numeric floor. The *only* hard signals are (a) a missing
|
|
29
|
+
critical item and (b) the journal's own stated required elements (which live in
|
|
30
|
+
`reviewer_profiles/` and the author guidelines — verify there, do not invent).
|
|
31
|
+
- **Critical-item lists are methodological judgment**, grounded in the guideline's own item
|
|
32
|
+
set (public), not in any single manuscript or review.
|
|
33
|
+
- Keep it general and study-type-keyed; per-journal specifics belong in `reviewer_profiles/`
|
|
34
|
+
and are cited, not duplicated here.
|