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,443 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: search-lit
|
|
3
|
+
description: Literature search and citation management for medical research. Searches PubMed, Semantic Scholar, and bioRxiv/medRxiv with verified citations. Anti-hallucination — every reference verified via API before inclusion. Generates BibTeX entries.
|
|
4
|
+
triggers: literature search, find papers, citation, references, bibliography, PubMed search, related work
|
|
5
|
+
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
|
+
model: inherit
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Literature Search Skill
|
|
10
|
+
|
|
11
|
+
You are assisting a medical researcher with literature searches and citation management for
|
|
12
|
+
medical research papers. Every reference you produce must be verified against a live database --
|
|
13
|
+
never generate citations from memory alone.
|
|
14
|
+
|
|
15
|
+
## Communication Rules
|
|
16
|
+
|
|
17
|
+
- Communicate with the user in their preferred language.
|
|
18
|
+
- All citation content (titles, abstracts, BibTeX) in English.
|
|
19
|
+
- Medical terminology is always in English.
|
|
20
|
+
|
|
21
|
+
## Key Directories
|
|
22
|
+
|
|
23
|
+
- **BibTeX output**: User-specified directory (default: current working directory)
|
|
24
|
+
- **Manuscript workspace**: determined by the user or the calling skill
|
|
25
|
+
|
|
26
|
+
## Search Tools: MCP (Primary) + E-utilities (Fallback)
|
|
27
|
+
|
|
28
|
+
### Primary: MCP Tools (Claude.ai Remote)
|
|
29
|
+
|
|
30
|
+
| Database | MCP Tool | Purpose |
|
|
31
|
+
|----------|----------|---------|
|
|
32
|
+
| PubMed | `mcp__claude_ai_PubMed__search_articles` | Search by query, MeSH terms |
|
|
33
|
+
| PubMed | `mcp__claude_ai_PubMed__get_article_metadata` | Full metadata for a PMID |
|
|
34
|
+
| PubMed | `mcp__claude_ai_PubMed__find_related_articles` | Related articles for a PMID |
|
|
35
|
+
| PubMed | `mcp__claude_ai_PubMed__lookup_article_by_citation` | Verify a citation |
|
|
36
|
+
| PubMed | `mcp__claude_ai_PubMed__convert_article_ids` | Convert between PMID/DOI/PMCID |
|
|
37
|
+
| Semantic Scholar | `mcp__claude_ai_Scholar_Gateway__semanticSearch` | Semantic search across all fields |
|
|
38
|
+
| bioRxiv/medRxiv | `mcp__claude_ai_bioRxiv__search_preprints` | Search preprint servers |
|
|
39
|
+
| bioRxiv/medRxiv | `mcp__claude_ai_bioRxiv__get_preprint` | Full preprint metadata |
|
|
40
|
+
| CrossRef | WebFetch with `https://api.crossref.org/works/{DOI}` | DOI verification |
|
|
41
|
+
|
|
42
|
+
### Fallback: NCBI E-utilities (Direct API via Bash)
|
|
43
|
+
|
|
44
|
+
When PubMed MCP is unavailable (session timeout, "MCP session has been terminated" error,
|
|
45
|
+
or "No such tool available" error), fall back to NCBI E-utilities via bundled scripts.
|
|
46
|
+
|
|
47
|
+
**Detection**: If any `mcp__claude_ai_PubMed__*` call returns an error containing
|
|
48
|
+
"terminated", "not found", "not available", or "not connected", switch ALL subsequent
|
|
49
|
+
PubMed calls in this session to E-utilities. Do not retry MCP after a disconnect — it
|
|
50
|
+
will not recover within the same conversation.
|
|
51
|
+
|
|
52
|
+
**Scripts** (in `${CLAUDE_SKILL_DIR}/references/`):
|
|
53
|
+
- `pubmed_eutils.sh` — Bash wrapper for NCBI E-utilities API
|
|
54
|
+
- `parse_pubmed.py` — Python parser for E-utilities responses
|
|
55
|
+
|
|
56
|
+
**Usage patterns:**
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
EUTILS="${CLAUDE_SKILL_DIR}/references/pubmed_eutils.sh"
|
|
60
|
+
PARSER="${CLAUDE_SKILL_DIR}/references/parse_pubmed.py"
|
|
61
|
+
|
|
62
|
+
# Search PubMed (returns PMIDs)
|
|
63
|
+
bash "$EUTILS" search "diagnostic test accuracy meta-analysis radiology" 20 \
|
|
64
|
+
| python3 "$PARSER" esearch
|
|
65
|
+
|
|
66
|
+
# Get article summaries as markdown table
|
|
67
|
+
bash "$EUTILS" fetch_json "16168343,16085191,31462531" \
|
|
68
|
+
| python3 "$PARSER" esummary
|
|
69
|
+
|
|
70
|
+
# Get detailed metadata
|
|
71
|
+
bash "$EUTILS" fetch "16168343" \
|
|
72
|
+
| python3 "$PARSER" efetch
|
|
73
|
+
|
|
74
|
+
# Generate BibTeX entries
|
|
75
|
+
bash "$EUTILS" fetch "16168343,16085191" \
|
|
76
|
+
| python3 "$PARSER" bibtex
|
|
77
|
+
|
|
78
|
+
# Verify a citation by exact title
|
|
79
|
+
bash "$EUTILS" cite_lookup "Bivariate analysis of sensitivity and specificity" \
|
|
80
|
+
| python3 "$PARSER" esearch
|
|
81
|
+
|
|
82
|
+
# Find related articles for a PMID
|
|
83
|
+
bash "$EUTILS" related "16168343" 10 \
|
|
84
|
+
| python3 "$PARSER" esummary
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Rate limiting**: 3 requests/second without API key, 10/sec with NCBI_API_KEY.
|
|
88
|
+
The script auto-sleeps 350ms between calls. For batch operations, keep calls sequential.
|
|
89
|
+
|
|
90
|
+
**E-utilities → MCP equivalence:**
|
|
91
|
+
|
|
92
|
+
| MCP Tool | E-utilities Command | Parser Mode |
|
|
93
|
+
|----------|-------------------|-------------|
|
|
94
|
+
| `search_articles` | `search <query> [retmax]` | `esearch` |
|
|
95
|
+
| `get_article_metadata` | `fetch <pmids>` | `efetch` or `bibtex` |
|
|
96
|
+
| `find_related_articles` | `related <pmid> [retmax]` | `esummary` |
|
|
97
|
+
| `lookup_article_by_citation` | `cite_lookup <title>` | `esearch` → `fetch` |
|
|
98
|
+
| `convert_article_ids` | Not available (use CrossRef DOI lookup) | — |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Workflow
|
|
103
|
+
|
|
104
|
+
### Phase 1: Search Strategy
|
|
105
|
+
|
|
106
|
+
1. **Understand the need**: Get the research topic, specific question, or manuscript section
|
|
107
|
+
that needs references.
|
|
108
|
+
2. **Generate search terms**:
|
|
109
|
+
- Identify key concepts (Population, Intervention/Exposure, Comparison, Outcome).
|
|
110
|
+
- Generate MeSH terms for PubMed queries.
|
|
111
|
+
- Build Boolean queries: `(concept1 OR synonym1) AND (concept2 OR synonym2)`.
|
|
112
|
+
3. **Define scope**:
|
|
113
|
+
- Date range (default: last 10 years unless user specifies).
|
|
114
|
+
- Article types (original research, review, meta-analysis, etc.).
|
|
115
|
+
- Language filter (default: English).
|
|
116
|
+
4. **Present the search plan** to the user before executing. Include the Boolean query,
|
|
117
|
+
databases to search, and filters.
|
|
118
|
+
|
|
119
|
+
**Gate:** Wait for user approval before running searches.
|
|
120
|
+
|
|
121
|
+
### Phase 2: Execute Search
|
|
122
|
+
|
|
123
|
+
1. **Search PubMed** using `search_articles` with the Boolean query.
|
|
124
|
+
2. **Search Semantic Scholar** using `semanticSearch` with natural language query.
|
|
125
|
+
3. **Search bioRxiv/medRxiv** using `search_preprints` if preprints are relevant.
|
|
126
|
+
4. **Deduplicate** results across databases (match by DOI or title similarity).
|
|
127
|
+
5. **Present results** in a structured table:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
| # | Title | Authors (first + last) | Year | Journal | PMID/DOI | Relevance |
|
|
131
|
+
|---|-------|----------------------|------|---------|----------|-----------|
|
|
132
|
+
| 1 | ... | Kim J, ... Lee S | 2024 | Radiology | 12345678 | High |
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
6. Ask the user to select which papers to include.
|
|
136
|
+
|
|
137
|
+
### Phase 3: Deep Read
|
|
138
|
+
|
|
139
|
+
For each selected paper:
|
|
140
|
+
|
|
141
|
+
1. **Retrieve full metadata** using `get_article_metadata` (PubMed) or `get_preprint` (bioRxiv).
|
|
142
|
+
2. **Extract key information**:
|
|
143
|
+
- Study design
|
|
144
|
+
- Sample size / dataset
|
|
145
|
+
- Key methods
|
|
146
|
+
- Primary findings (with specific numbers)
|
|
147
|
+
- Limitations noted by authors
|
|
148
|
+
3. **Build a literature matrix** if multiple papers selected:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
| Paper | Design | N | Key Finding | Limitation | Relevance to Our Study |
|
|
152
|
+
|-------|--------|---|-------------|------------|----------------------|
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
4. Present the matrix to the user for review.
|
|
156
|
+
|
|
157
|
+
### Phase 4: Citation Management
|
|
158
|
+
|
|
159
|
+
#### Anti-Hallucination Protocol
|
|
160
|
+
|
|
161
|
+
This is the most critical part of the skill. Follow these rules without exception:
|
|
162
|
+
|
|
163
|
+
1. **NEVER generate a reference from memory alone.** Every reference must come from an API search result.
|
|
164
|
+
2. **NEVER fabricate DOIs or PMIDs.** If you cannot find a DOI/PMID, mark the reference as `[UNVERIFIED - NEEDS MANUAL CHECK]`.
|
|
165
|
+
3. **Cross-check every reference** against the API result:
|
|
166
|
+
- Author names (at least first author and last author)
|
|
167
|
+
- Publication year
|
|
168
|
+
- Journal name
|
|
169
|
+
- Article title (exact match, not paraphrased)
|
|
170
|
+
- Volume and pages (if available)
|
|
171
|
+
4. **If any field does not match**, flag the specific mismatch.
|
|
172
|
+
5. **For DOI verification**, use WebFetch with `https://api.crossref.org/works/{DOI}` to confirm the DOI resolves correctly.
|
|
173
|
+
|
|
174
|
+
#### BibTeX Generation
|
|
175
|
+
|
|
176
|
+
For each reference (verified or not), generate a BibTeX entry with an explicit
|
|
177
|
+
`verified` flag so downstream skills (`/lit-sync`, `/verify-refs`,
|
|
178
|
+
`/write-paper`) can reason about trust without re-running verification:
|
|
179
|
+
|
|
180
|
+
```bibtex
|
|
181
|
+
@article{FirstAuthorLastName_Year_ShortKey,
|
|
182
|
+
author = {Last1, First1 and Last2, First2 and Last3, First3},
|
|
183
|
+
title = {Full Title As Retrieved From Database},
|
|
184
|
+
journal = {Journal Name},
|
|
185
|
+
year = {2024},
|
|
186
|
+
volume = {310},
|
|
187
|
+
number = {2},
|
|
188
|
+
pages = {e234567},
|
|
189
|
+
doi = {10.1001/jama.2024.12345},
|
|
190
|
+
pmid = {12345678},
|
|
191
|
+
verified = {true},
|
|
192
|
+
verified_by = {pubmed+crossref},
|
|
193
|
+
verified_on = {2026-04-24},
|
|
194
|
+
}
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**`verified` flag values** (required on every entry):
|
|
198
|
+
|
|
199
|
+
| Value | Meaning | Downstream behavior |
|
|
200
|
+
|---|---|---|
|
|
201
|
+
| `true` | DOI or PMID confirmed via PubMed/CrossRef; title, authors, year all match | Safe to cite; `/write-paper` citekey-only gate passes |
|
|
202
|
+
| `false` | Parsed from text but API lookup failed or returned mismatch | `/verify-refs` flags as UNVERIFIED; manuscript MUST show `[UNVERIFIED - NEEDS MANUAL CHECK]` |
|
|
203
|
+
| `manual` | User explicitly added despite lookup failure | Treated as verified=false by `/verify-refs` but suppresses repeat warnings |
|
|
204
|
+
|
|
205
|
+
`verified_by` lists the data sources that confirmed the entry (e.g., `pubmed`,
|
|
206
|
+
`crossref`, `semantic_scholar`, or a combination). `verified_on` is the ISO date
|
|
207
|
+
of the most recent successful verification.
|
|
208
|
+
|
|
209
|
+
**BibTeX key convention**: `FirstAuthorLastName_Year_OneWord` (e.g., `Kim_2024_Validation`).
|
|
210
|
+
|
|
211
|
+
#### Output
|
|
212
|
+
|
|
213
|
+
1. Save BibTeX entries to the specified .bib file (append, do not overwrite).
|
|
214
|
+
Target: `references/library.bib` (candidate pool for `/lit-sync` to import
|
|
215
|
+
into Zotero). NEVER write to `manuscript/_src/refs.bib` — that is `/lit-sync`'s
|
|
216
|
+
sole-writer path per `docs/artifact_contract.md`.
|
|
217
|
+
2. Print a summary of all references with verification status:
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
Verified: 12 references (verified=true)
|
|
221
|
+
Unverified: 1 reference (verified=false) [NEEDS MANUAL CHECK]
|
|
222
|
+
Total: 13 references
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Phase 4b: Zotero Library Integration
|
|
226
|
+
|
|
227
|
+
If a Zotero MCP server is available, integrate search results with the user's library:
|
|
228
|
+
|
|
229
|
+
1. **Add papers to Zotero**: Use `zotero_add_by_doi` for DOI-based import (auto-downloads OA PDFs).
|
|
230
|
+
2. **Organize into collections**: Use `zotero_manage_collections` to file into the relevant project collection.
|
|
231
|
+
3. **Check for duplicates**: Use `zotero_search_items` to avoid adding papers already in the library.
|
|
232
|
+
4. **Leverage annotations**: Use `zotero_get_annotations` to reference the user's prior reading notes.
|
|
233
|
+
5. **Write sync audit**: Record collection key, added/skipped/failed counts, and
|
|
234
|
+
unsynced entries in `references/zotero_collection.json` so Zotero status is
|
|
235
|
+
auditable rather than a hidden optional side effect.
|
|
236
|
+
|
|
237
|
+
> Requires Zotero Desktop running with MCP server. Skip this phase if unavailable.
|
|
238
|
+
> If skipped, still write `references/zotero_collection.json` with
|
|
239
|
+
> `status: "skipped"` and the reason.
|
|
240
|
+
|
|
241
|
+
### Phase 5: Full-Text Retrieval
|
|
242
|
+
|
|
243
|
+
After identifying relevant papers, retrieve full-text PDFs for detailed review.
|
|
244
|
+
This is especially important for meta-analyses where data extraction requires full text.
|
|
245
|
+
|
|
246
|
+
#### Phase 5a: Open Access Auto-Retrieval
|
|
247
|
+
|
|
248
|
+
Try sources in order of reliability:
|
|
249
|
+
|
|
250
|
+
1. **Unpaywall API** (highest quality OA links):
|
|
251
|
+
```python
|
|
252
|
+
import os, requests
|
|
253
|
+
email = os.environ.get("UNPAYWALL_EMAIL", "user@example.com")
|
|
254
|
+
url = f"https://api.unpaywall.org/v2/{doi}?email={email}"
|
|
255
|
+
r = requests.get(url).json()
|
|
256
|
+
if r.get("best_oa_location", {}).get("url_for_pdf"):
|
|
257
|
+
pdf_url = r["best_oa_location"]["url_for_pdf"]
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
2. **PubMed Central (PMC)**:
|
|
261
|
+
- Convert PMID to PMCID via NCBI ID Converter
|
|
262
|
+
- Download from PMC OA service: `https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{id}/pdf/`
|
|
263
|
+
|
|
264
|
+
3. **OpenAlex API** (additional OA discovery):
|
|
265
|
+
```python
|
|
266
|
+
url = f"https://api.openalex.org/works/https://doi.org/{doi}"
|
|
267
|
+
# Requires polite pool: add email in User-Agent header or mailto= param
|
|
268
|
+
r = requests.get(url, headers={"User-Agent": f"MyApp/1.0 (mailto:{email})"}).json()
|
|
269
|
+
oa_url = r.get("open_access", {}).get("oa_url")
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
4. **CrossRef landing page**: Follow `https://api.crossref.org/works/{doi}` → publisher link
|
|
273
|
+
→ scrape `<meta name="citation_pdf_url">` tag
|
|
274
|
+
|
|
275
|
+
#### Phase 5b: Alternative Sources
|
|
276
|
+
|
|
277
|
+
Some researchers use alternative access methods for paywalled content.
|
|
278
|
+
**Users are responsible for ensuring compliance with their institutional access policies.**
|
|
279
|
+
|
|
280
|
+
If an environment variable (e.g., `SCIHUB_BASE`) is set, the skill may use it as an
|
|
281
|
+
alternative PDF source. No specific URLs are provided here — users configure this themselves.
|
|
282
|
+
|
|
283
|
+
Other options:
|
|
284
|
+
- **Institutional proxy/VPN**: Access publisher sites through institutional EZproxy or VPN
|
|
285
|
+
- **Interlibrary loan (ILL)**: Request through library services for papers not otherwise available
|
|
286
|
+
- **Author contact**: Email corresponding authors for preprints
|
|
287
|
+
|
|
288
|
+
#### PDF Validation
|
|
289
|
+
|
|
290
|
+
Always validate downloaded files before use:
|
|
291
|
+
|
|
292
|
+
```python
|
|
293
|
+
def is_valid_pdf(filepath):
|
|
294
|
+
"""Check that a downloaded file is actually a PDF, not an HTML redirect."""
|
|
295
|
+
import os
|
|
296
|
+
if os.path.getsize(filepath) < 10240: # < 10KB is likely a stub/redirect
|
|
297
|
+
return False
|
|
298
|
+
with open(filepath, 'rb') as f:
|
|
299
|
+
header = f.read(5)
|
|
300
|
+
return header == b'%PDF-'
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Additional checks:
|
|
304
|
+
- Verify HTTP `Content-Type: application/pdf` header before saving
|
|
305
|
+
- Files under 10KB are almost always HTML login/redirect pages, not real PDFs
|
|
306
|
+
- Some publishers return CAPTCHA pages — these fail the `%PDF-` check
|
|
307
|
+
|
|
308
|
+
#### Rate Limiting
|
|
309
|
+
|
|
310
|
+
- Unpaywall: Polite pool (no hard limit with email parameter)
|
|
311
|
+
- OpenAlex: Include email in User-Agent for polite pool access
|
|
312
|
+
- NCBI/PMC: 3 requests/sec without API key, 10/sec with `NCBI_API_KEY`
|
|
313
|
+
- General: 2-second minimum interval between requests to any single host
|
|
314
|
+
|
|
315
|
+
### Phase 6: Gap Analysis
|
|
316
|
+
|
|
317
|
+
When called during manuscript writing (especially by `/write-paper` Phase 7):
|
|
318
|
+
|
|
319
|
+
1. **Read the manuscript** to extract all inline citations.
|
|
320
|
+
2. **Compare** cited references against the search results.
|
|
321
|
+
3. **Identify gaps**:
|
|
322
|
+
- Key papers in the field that are not cited.
|
|
323
|
+
- Outdated references when newer versions exist.
|
|
324
|
+
- Missing methodological references (e.g., statistical methods, reporting guidelines).
|
|
325
|
+
4. **Report** findings to the user with specific suggestions.
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Specialized Search Modes
|
|
330
|
+
|
|
331
|
+
### Mode: Manuscript Paper Reference Pool
|
|
332
|
+
|
|
333
|
+
For supplying a manuscript's reference pool — typically invoked by `/write-paper` Step 7.3c (or
|
|
334
|
+
`/self-review` Phase 2.5c-2) when the **reference adequacy** gate finds the draft under target or a
|
|
335
|
+
named method uncited, but usable directly when building out an original-research bibliography.
|
|
336
|
+
|
|
337
|
+
This mode is deliberately **broad**: for an original-research article, return **25–40** verified
|
|
338
|
+
candidates, not the ~10 a quick search settles on. Do not stop early unless the field is genuinely
|
|
339
|
+
sparse — and if it is, say so explicitly rather than returning a thin list silently. Respect a
|
|
340
|
+
narrower journal reference cap or user scope when one is given.
|
|
341
|
+
|
|
342
|
+
Structure the pool across **six candidate categories** so the gaps the adequacy gate cares about
|
|
343
|
+
are all covered:
|
|
344
|
+
|
|
345
|
+
1. **Background / disease burden / clinical context** — establishes why the question matters.
|
|
346
|
+
2. **Gap-defining prior studies** — the work the manuscript extends or contradicts.
|
|
347
|
+
3. **Comparator / comparable-design cohorts** — studies the Results will be measured against.
|
|
348
|
+
4. **Methods / statistical canonical sources** — the originating reference for every named method,
|
|
349
|
+
model, score, equation, or diagnostic criterion (e.g. competing-risk model, multiple
|
|
350
|
+
imputation, E-value, eGFR equation, concordance statistic). This is the category that clears
|
|
351
|
+
Methods named-method gaps.
|
|
352
|
+
5. **Reporting-guideline sources** — STROBE, TRIPOD(+AI), CONSORT, PRISMA(-DTA), STARD, etc.
|
|
353
|
+
6. **Interpretation / mechanism / limitation support** — grounds Discussion claims.
|
|
354
|
+
|
|
355
|
+
For each candidate, report: **PMID/DOI**, **verification status**, **candidate category**, the
|
|
356
|
+
**target manuscript section** it belongs in, and a one-line **why it is needed**.
|
|
357
|
+
|
|
358
|
+
Boundary (unchanged): every entry is API-verified before inclusion, and BibTeX is appended **only**
|
|
359
|
+
to `references/library.bib` — the candidate pool for `/lit-sync` to import into Zotero. **Never**
|
|
360
|
+
write to `manuscript/_src/refs.bib`; that SSOT belongs to `/lit-sync`. This mode produces
|
|
361
|
+
candidates; it does not decide inclusion (the user does) and it does not insert references into the
|
|
362
|
+
manuscript bib.
|
|
363
|
+
|
|
364
|
+
### Mode: Systematic Search
|
|
365
|
+
|
|
366
|
+
For systematic reviews or comprehensive literature sections:
|
|
367
|
+
|
|
368
|
+
1. Document the full search strategy (PRISMA-compliant).
|
|
369
|
+
2. Record: database, date of search, query string, number of results.
|
|
370
|
+
3. Track inclusion/exclusion at each screening step.
|
|
371
|
+
4. Output a PRISMA flow diagram data summary.
|
|
372
|
+
|
|
373
|
+
### Mode: Quick Cite
|
|
374
|
+
|
|
375
|
+
For quickly finding a single reference the user describes:
|
|
376
|
+
|
|
377
|
+
1. User says something like "that 2023 paper by Smith about AI in chest X-ray."
|
|
378
|
+
2. Search PubMed and Semantic Scholar with the described details.
|
|
379
|
+
3. Present top 3 candidates.
|
|
380
|
+
4. User confirms which one.
|
|
381
|
+
5. Generate BibTeX entry.
|
|
382
|
+
|
|
383
|
+
### Mode: Related Papers
|
|
384
|
+
|
|
385
|
+
For expanding from a known paper:
|
|
386
|
+
|
|
387
|
+
1. User provides a PMID or DOI.
|
|
388
|
+
2. Use `find_related_articles` to get related papers.
|
|
389
|
+
3. Use Semantic Scholar for citation-based recommendations.
|
|
390
|
+
4. Present results ranked by relevance.
|
|
391
|
+
|
|
392
|
+
### Mode: Embase Browser Automation
|
|
393
|
+
|
|
394
|
+
Embase has no public API. Use Chrome browser automation (MCP) to search and export:
|
|
395
|
+
|
|
396
|
+
1. Navigate to `embase.com` — institutional SSO authenticates automatically.
|
|
397
|
+
If cookie error (`login?error#`), clear Elsevier/Embase cookies and retry.
|
|
398
|
+
2. Go to **Advanced Search** tab.
|
|
399
|
+
3. Enter Embase-syntax query (Emtree `/exp` + `:ab,ti` field tags).
|
|
400
|
+
Uncheck "Map to preferred term in Emtree" when using explicit `/exp` terms.
|
|
401
|
+
4. After results appear, use "Select number of items" dropdown → select total count.
|
|
402
|
+
5. Click **Export** (in Results section) → choose **CSV** format → check fields:
|
|
403
|
+
Title, Author names, Source, Publication year, Publication type, DOI, Abstract,
|
|
404
|
+
Language of article, Medline PMID.
|
|
405
|
+
6. Click Export → Download tab opens → click Download.
|
|
406
|
+
7. CSV is in **row format** (records separated by blank rows) — parse with:
|
|
407
|
+
```python
|
|
408
|
+
# Each record = consecutive rows until blank row
|
|
409
|
+
# Row format: [FIELD_NAME, value1, value2, ...]
|
|
410
|
+
# AUTHOR NAMES row has multiple values (one per author)
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
**PubMed → Embase query translation:**
|
|
414
|
+
- MeSH `[Mesh]` → Emtree `/exp`
|
|
415
|
+
- `[tiab]` → `:ab,ti`
|
|
416
|
+
- `[Title/Abstract]` → `:ab,ti`
|
|
417
|
+
- Boolean operators stay the same (AND, OR)
|
|
418
|
+
- Phrase search: use single quotes in Embase (`'artificial ascites'`)
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## Error Handling
|
|
423
|
+
|
|
424
|
+
- If a search returns 0 results, broaden the query (remove one concept or use broader MeSH terms) and retry.
|
|
425
|
+
- **CrossRef HTTP errors (token-saving rules):**
|
|
426
|
+
- **403 (rate-limited):** Do NOT retry. Skip CrossRef silently → verify via PubMed title search instead.
|
|
427
|
+
- **303 (redirect):** Follow the redirect if possible. If not, skip CrossRef → PubMed fallback.
|
|
428
|
+
- **Any repeated failure:** After the first CrossRef 403/303 in a session, assume CrossRef is
|
|
429
|
+
rate-limiting and skip CrossRef for ALL remaining references. Go directly to PubMed title
|
|
430
|
+
verification. This avoids N×retry token waste.
|
|
431
|
+
- **Never print raw error messages** like "Request failed with status code 403." Collect
|
|
432
|
+
failures silently and report a single summary line at the end:
|
|
433
|
+
`CrossRef unavailable for {N} references (rate-limited). Verified via PubMed instead.`
|
|
434
|
+
- If a DOI does not resolve via CrossRef (after applying the rules above), try searching PubMed by title to confirm the reference exists.
|
|
435
|
+
- If the user provides a reference that cannot be verified by any method, clearly state: "This reference could not be verified. Please check manually before submission."
|
|
436
|
+
- Never silently include an unverified reference.
|
|
437
|
+
|
|
438
|
+
## What This Skill Does NOT Do
|
|
439
|
+
|
|
440
|
+
- Does not download from paywalled journals without user-provided credentials or institutional access.
|
|
441
|
+
- Does not assess the quality of evidence (use `/analyze-stats` or `/check-reporting` for that).
|
|
442
|
+
- Does not write the literature review text (use `/write-paper` for that).
|
|
443
|
+
- Does not fabricate any part of a citation.
|