medsci-skills 5.24.0 → 5.26.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/README.md +76 -12
- package/README.zh-CN.md +1048 -0
- package/installers/install.py +245 -17
- package/installers/medsci_txn.py +29 -7
- package/metadata/distribution_files.json +533 -313
- package/metadata/distribution_manifest.json +2 -1
- package/metadata/skills_catalog.json +11 -1
- package/package.json +1 -1
- package/skills/academic-aio/SKILL.md +1 -1
- package/skills/check-reporting/SKILL.md +46 -15
- package/skills/check-reporting/references/LICENSES.md +76 -52
- package/skills/check-reporting/references/checklists/AMSTAR2.md +17 -1
- package/skills/check-reporting/references/checklists/ARRIVE_2.md +95 -118
- package/skills/check-reporting/references/checklists/CARE.md +9 -1
- package/skills/check-reporting/references/checklists/CHEERS_2022.md +4 -0
- package/skills/check-reporting/references/checklists/CLAIM_2024.md +7 -0
- package/skills/check-reporting/references/checklists/CLEAR.md +3 -0
- package/skills/check-reporting/references/checklists/CONSORT.md +7 -1
- package/skills/check-reporting/references/checklists/CONSORT_AI.md +14 -3
- package/skills/check-reporting/references/checklists/COREQ.md +2 -1
- package/skills/check-reporting/references/checklists/COSMIN_RoB.md +65 -61
- package/skills/check-reporting/references/checklists/CROSS.md +78 -58
- package/skills/check-reporting/references/checklists/DECIDE_AI.md +13 -4
- package/skills/check-reporting/references/checklists/GATHER.md +42 -23
- package/skills/check-reporting/references/checklists/GRRAS.md +42 -21
- package/skills/check-reporting/references/checklists/MI_CLEAR_LLM.md +6 -1
- package/skills/check-reporting/references/checklists/MOOSE.md +10 -3
- package/skills/check-reporting/references/checklists/NOS.md +28 -8
- package/skills/check-reporting/references/checklists/PGS_RS.md +8 -1
- package/skills/check-reporting/references/checklists/PRISMA_2020.md +18 -7
- package/skills/check-reporting/references/checklists/PRISMA_2020_Abstracts.md +96 -0
- package/skills/check-reporting/references/checklists/PRISMA_DTA.md +123 -36
- package/skills/check-reporting/references/checklists/PRISMA_P.md +6 -0
- package/skills/check-reporting/references/checklists/PRISMA_ScR.md +65 -20
- package/skills/check-reporting/references/checklists/PROBAST.md +60 -35
- package/skills/check-reporting/references/checklists/PROBAST_AI.md +4 -0
- package/skills/check-reporting/references/checklists/QUADAS2.md +107 -45
- package/skills/check-reporting/references/checklists/QUADAS3.md +242 -0
- package/skills/check-reporting/references/checklists/QUADAS_C.md +29 -6
- package/skills/check-reporting/references/checklists/RECORD.md +6 -1
- package/skills/check-reporting/references/checklists/REMARK.md +21 -13
- package/skills/check-reporting/references/checklists/ROBINS_E.md +14 -3
- package/skills/check-reporting/references/checklists/ROBINS_I.md +34 -8
- package/skills/check-reporting/references/checklists/ROBIS.md +26 -4
- package/skills/check-reporting/references/checklists/ROB_ME.md +15 -1
- package/skills/check-reporting/references/checklists/RoB2.md +106 -52
- package/skills/check-reporting/references/checklists/RoB_NMA.md +91 -68
- package/skills/check-reporting/references/checklists/SPIRIT.md +8 -2
- package/skills/check-reporting/references/checklists/SPIRIT_AI.md +14 -3
- package/skills/check-reporting/references/checklists/SQUIRE_2.md +6 -1
- package/skills/check-reporting/references/checklists/SRQR.md +2 -1
- package/skills/check-reporting/references/checklists/STARD.md +115 -124
- package/skills/check-reporting/references/checklists/STROBE.md +8 -0
- package/skills/check-reporting/references/checklists/STROBE_MR.md +128 -62
- package/skills/check-reporting/references/checklists/SWiM.md +20 -9
- package/skills/check-reporting/references/checklists/TARGET.md +10 -3
- package/skills/check-reporting/references/checklists/TRIPOD.md +10 -2
- package/skills/check-reporting/references/checklists/TRIPOD_AI.md +14 -7
- package/skills/check-reporting/references/checklists/TRIPOD_LLM.md +12 -1
- package/skills/check-reporting/references/step4d_prisma_figure_audit.md +0 -1
- package/skills/clean-data/SKILL.md +1 -1
- package/skills/contribute/scripts/check_contribution_safety.py +30 -4
- package/skills/contribute/tests/test_contribution_safety.sh +38 -1
- package/skills/fill-icmje-coi/SKILL.md +2 -2
- package/skills/fill-protocol/scripts/fill_form.py +48 -23
- package/skills/fill-protocol/tests/test_fill_form_newlines.sh +141 -0
- package/skills/find-journal/SKILL.md +1 -1
- package/skills/find-journal/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +1 -1
- package/skills/find-journal/references/journal_profiles/JACC_Advances.md +2 -2
- package/skills/find-journal/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +1 -1
- package/skills/find-journal/references/journal_profiles/Korean_Circulation_Journal.md +1 -1
- package/skills/find-journal/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +1 -1
- package/skills/intake-project/SKILL.md +1 -1
- package/skills/lit-sync/SKILL.md +46 -8
- package/skills/lit-sync/references/bbt_lookup.md +57 -0
- package/skills/lit-sync/scripts/check_citekey_provenance.py +210 -0
- package/skills/lit-sync/skill.yml +2 -0
- package/skills/lit-sync/tests/citekey_provenance_challenge.sh +117 -0
- package/skills/lit-sync/tests/citekey_provenance_challenge_selftest.sh +85 -0
- package/skills/lit-sync/tests/test_poll_logic.sh +14 -4
- package/skills/make-figures/references/reporting_guideline_figure_map.md +2 -2
- package/skills/manage-refs/references/check_xref_symptoms.md +4 -4
- package/skills/manage-refs/scripts/check_xref.py +5 -5
- package/skills/manage-refs/scripts/render_pandoc.sh +4 -1
- package/skills/manage-refs/scripts/strip_source_metadata.lua +7 -0
- package/skills/manage-refs/tests/test_csl_render.sh +24 -0
- package/skills/meta-analysis/SKILL.md +103 -26
- package/skills/meta-analysis/references/checklists/NOS.md +28 -8
- package/skills/meta-analysis/references/checklists/PRISMA_DTA.md +123 -36
- package/skills/meta-analysis/references/checklists/PROBAST.md +60 -35
- package/skills/meta-analysis/references/checklists/QUADAS2.md +107 -45
- package/skills/meta-analysis/references/checklists/QUADAS3.md +242 -0
- package/skills/meta-analysis/references/checklists/ROBINS_I.md +34 -8
- package/skills/meta-analysis/references/checklists/RoB2.md +106 -52
- package/skills/meta-analysis/references/empirical_lessons.md +2 -1
- package/skills/meta-analysis/references/phase3_screening_detail.md +9 -10
- package/skills/meta-analysis/references/phase4_extraction_detail.md +1 -1
- package/skills/meta-analysis/references/phase6_statistical_synthesis.md +131 -7
- package/skills/model-validation/SKILL.md +3 -3
- package/skills/model-validation/references/validation_design.md +1 -1
- package/skills/obsidian-paper-vault/SKILL.md +144 -0
- package/skills/obsidian-paper-vault/assets/example_concept_note.md +50 -0
- package/skills/obsidian-paper-vault/assets/example_paper_note.md +51 -0
- package/skills/obsidian-paper-vault/assets/example_queue.md +52 -0
- package/skills/obsidian-paper-vault/references/concept-extraction.md +91 -0
- package/skills/obsidian-paper-vault/references/locale/ko/note_templates.md +127 -0
- package/skills/obsidian-paper-vault/references/subagent-prompt.md +100 -0
- package/skills/obsidian-paper-vault/references/tag-vocabulary.md +60 -0
- package/skills/obsidian-paper-vault/references/templates.md +145 -0
- package/skills/obsidian-paper-vault/references/workflow.md +85 -0
- package/skills/obsidian-paper-vault/scripts/extract_pdfs.py +85 -0
- package/skills/obsidian-paper-vault/skill.yml +54 -0
- package/skills/orchestrate/SKILL.md +3 -1
- package/skills/peer-review/SKILL.md +57 -170
- package/skills/peer-review/references/domain-probes/ai_overclaiming.md +2 -2
- package/skills/peer-review/references/domain-probes/clinical_prediction_model.md +2 -2
- package/skills/peer-review/references/domain-probes/diagnostic_accuracy.md +8 -2
- package/skills/peer-review/references/domain-probes/model_development.md +18 -2
- package/skills/peer-review/references/domain-probes/narrative_review.md +10 -0
- package/skills/peer-review/references/domain-probes/observational_confounding.md +12 -2
- package/skills/peer-review/references/domain-probes/radiomics.md +10 -0
- package/skills/peer-review/references/domain-probes/sr_ma.md +2 -2
- package/skills/peer-review/references/domain-probes/survival_prognostic.md +10 -0
- package/skills/peer-review/references/reviewer_calibration/recommendation_calibration.md +92 -0
- package/skills/peer-review/references/reviewer_profiles/EURE.md +11 -5
- package/skills/peer-review/references/reviewer_profiles/INSI.md +1 -1
- package/skills/peer-review/references/reviewer_profiles/README.md +44 -3
- package/skills/peer-review/references/reviewer_profiles/RYAI.md +27 -4
- package/skills/peer-review/scripts/check_review_boxes.py +5 -5
- package/skills/preprocess-imaging/SKILL.md +15 -0
- package/skills/preprocess-imaging/scripts/check_normalizer_domain.py +196 -0
- package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/expected/arbitrary_mismatch.txt +10 -0
- package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/expected/hu_clean.txt +9 -0
- package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/fixture/plan_ct.json +25 -0
- package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/fixture/profile_arbitrary.json +236 -0
- package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/fixture/profile_hu.json +144 -0
- package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/problem.md +42 -0
- package/skills/preprocess-imaging/scripts/check_normalizer_domain_challenge/verify.sh +46 -0
- package/skills/present-paper/SKILL.md +204 -4
- package/skills/present-paper/references/ai_slide_tells.md +49 -0
- package/skills/present-paper/references/generate_pptx_templates.py +6 -1
- package/skills/present-paper/references/generated_illustrations.md +133 -0
- package/skills/present-paper/references/spoken_notes_and_bilingual.md +156 -0
- package/skills/present-paper/scripts/check_deck_budget.py +23 -2
- package/skills/present-paper/scripts/check_deck_budget_challenge/make_fixtures.py +59 -2
- package/skills/present-paper/scripts/check_deck_budget_challenge/verify.sh +40 -0
- package/skills/present-paper/scripts/check_diagram_edges.py +160 -0
- package/skills/present-paper/scripts/check_diagram_edges_challenge/make_fixtures.py +65 -0
- package/skills/present-paper/scripts/check_diagram_edges_challenge/verify.sh +84 -0
- package/skills/present-paper/scripts/check_font_portability.py +353 -0
- package/skills/present-paper/scripts/check_font_portability_challenge/make_fixtures.py +111 -0
- package/skills/present-paper/scripts/check_font_portability_challenge/verify.sh +99 -0
- package/skills/present-paper/scripts/check_slide_tells.py +64 -0
- package/skills/present-paper/scripts/check_text_overflow.py +266 -0
- package/skills/present-paper/scripts/check_text_overflow_challenge/make_fixtures.py +103 -0
- package/skills/present-paper/scripts/check_text_overflow_challenge/verify.sh +100 -0
- package/skills/present-paper/skill.yml +11 -0
- package/skills/publish-skill/scripts/audit_skill.sh +5 -2
- package/skills/revise/SKILL.md +5 -5
- package/skills/revise/scripts/check_density_complaint.py +14 -14
- package/skills/revise/scripts/density_complaint_challenge/verify.sh +5 -6
- package/skills/search-lit/SKILL.md +67 -0
- package/skills/search-lit/scripts/check_doi_record_match.py +276 -0
- package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fmarkup.005.json +9 -0
- package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fmatch.001.json +9 -0
- package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fother.002.json +9 -0
- package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/cache/10.1000%2Fsuppl.003.json +9 -0
- package/skills/search-lit/scripts/check_doi_record_match_challenge/fixture/screening.tsv +7 -0
- package/skills/search-lit/scripts/check_doi_record_match_challenge/verify.sh +110 -0
- package/skills/search-lit/skill.yml +4 -0
- package/skills/self-review/SKILL.md +3 -3
- package/skills/self-review/references/domain-probes/ai_overclaiming.md +2 -2
- package/skills/self-review/references/domain-probes/clinical_prediction_model.md +2 -2
- package/skills/self-review/references/domain-probes/diagnostic_accuracy.md +8 -2
- package/skills/self-review/references/domain-probes/model_development.md +18 -2
- package/skills/self-review/references/domain-probes/narrative_review.md +10 -0
- package/skills/self-review/references/domain-probes/observational_confounding.md +12 -2
- package/skills/self-review/references/domain-probes/radiomics.md +10 -0
- package/skills/self-review/references/domain-probes/sr_ma.md +2 -2
- package/skills/self-review/references/domain-probes/survival_prognostic.md +10 -0
- package/skills/self-review/references/exemplar_findings/estimand_drift_posthoc_primary.md +1 -1
- package/skills/self-review/references/panel_review_template.md +30 -0
- package/skills/self-review/references/phases/confounding_completeness.md +4 -4
- package/skills/self-review/references/phases/phase2_5a2_design_power.md +4 -4
- package/skills/self-review/references/phases/phase2_5a_source_fidelity.md +1 -1
- package/skills/self-review/references/phases/phase2_5b_screening_counts.md +12 -11
- package/skills/self-review/references/phases/phase2_5d_xref_qc.md +5 -4
- package/skills/self-review/references/phases/phase2_5f_claim_artifact.md +5 -5
- package/skills/self-review/scripts/_frontmatter.py +3 -3
- package/skills/self-review/scripts/check_binning_consistency.py +5 -2
- package/skills/self-review/scripts/check_citation_order.py +1 -1
- package/skills/self-review/scripts/check_effect_stability.py +2 -2
- package/skills/self-review/scripts/check_effect_stability_challenge/expected/bad.txt +2 -2
- package/skills/self-review/scripts/check_effect_stability_challenge/fixture/effect_bad.md +2 -2
- package/skills/self-review/scripts/check_effect_stability_challenge/fixture/effect_ok.md +1 -1
- package/skills/self-review/scripts/check_effect_stability_challenge/problem.md +5 -5
- package/skills/self-review/scripts/check_effect_stability_challenge/verify.sh +3 -3
- package/skills/self-review/scripts/check_incorporation_bias.py +4 -8
- package/skills/self-review/scripts/check_incorporation_bias_challenge/fixture/incorp_bad.md +1 -1
- package/skills/self-review/scripts/check_incorporation_bias_challenge/problem.md +2 -2
- package/skills/self-review/scripts/check_incorporation_bias_challenge/verify.sh +1 -1
- package/skills/self-review/scripts/check_panel_diversity.py +30 -2
- package/skills/self-review/scripts/check_paren_spans.py +2 -2
- package/skills/self-review/tests/fixtures/claim_manuscript.md +1 -1
- package/skills/self-review/tests/fixtures/claim_manuscript_single_primary.md +1 -1
- package/skills/self-review/tests/fixtures/cv_leakage_bad.md +2 -1
- package/skills/self-review/tests/fixtures/paren_clean.md +1 -1
- package/skills/self-review/tests/fixtures/paren_corrupt.md +1 -1
- package/skills/self-review/tests/test_claim_artifact.sh +4 -4
- package/skills/self-review/tests/test_panel_diversity.sh +34 -0
- package/skills/sync-submission/scripts/build_marked_manuscript.py +36 -4
- package/skills/sync-submission/scripts/check_asset_anonymization.py +15 -12
- package/skills/sync-submission/scripts/cover_letter_drift_check.py +4 -8
- package/skills/sync-submission/tests/test_asset_anonymization.sh +22 -0
- package/skills/sync-submission/tests/test_cross_artifact_stale.sh +3 -3
- package/skills/sync-submission/tests/test_marked_build_failure.sh +126 -0
- package/skills/verify-refs/SKILL.md +5 -8
- package/skills/verify-refs/scripts/verify_refs.py +25 -1
- package/skills/verify-refs/tests/test_audit_source_path.sh +100 -0
- package/skills/write-paper/references/journal_profiles/European_Journal_of_Preventive_Cardiology.md +1 -1
- package/skills/write-paper/references/journal_profiles/JACC_Advances.md +1 -1
- package/skills/write-paper/references/journal_profiles/JKMS.md +4 -4
- package/skills/write-paper/references/journal_profiles/Journal_of_Clinical_Endocrinology_and_Metabolism.md +1 -1
- package/skills/write-paper/references/journal_profiles/KJR.md +1 -1
- package/skills/write-paper/references/journal_profiles/Korean_Circulation_Journal.md +1 -1
- package/skills/write-paper/references/journal_profiles/Liver_International.md +2 -2
- package/skills/write-paper/references/journal_profiles/Nutrition_Metabolism_and_Cardiovascular_Diseases.md +1 -1
- package/skills/write-paper/references/phase7_integrity_audits.md +5 -5
- package/skills/write-paper/references/phase7_polish_detail.md +3 -3
package/README.md
CHANGED
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
# MedSci Skills
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**59 skills that actually work.** Built by a physician-researcher, tested on real publications.
|
|
8
|
+
|
|
9
|
+
*MedSci Skills is an end-to-end research tool for physician and medical-engineering researchers — design → scaffold → validate → publish — for the clinical manuscript and the medical-AI model behind it. Its moat is the compliance layer — 49 reporting guidelines and risk-of-bias tools, reference/citation verification, and deterministic integrity gates before peer review — now extended by a model-engineering lane that scaffolds reproducible, leakage-safe training repos and audits model validation. Clinical AI model research engineering is in scope; a general AI-scientist platform is not. It competes on clinical submission reliability, not skill count.*
|
|
8
10
|
|
|
9
11
|
[](LICENSE)
|
|
10
12
|
[](https://github.com/Aperivue/medsci-skills/releases/latest)
|
|
11
13
|
[](https://github.com/Aperivue/medsci-skills/actions/workflows/validate.yml)
|
|
12
|
-

|
|
13
15
|
[](https://www.npmjs.com/package/medsci-skills)
|
|
14
16
|
[](https://www.npmjs.com/package/medsci-skills)
|
|
15
17
|
[](https://youtu.be/MclQ_RIofpE)
|
|
@@ -135,6 +137,8 @@ Install a single category and invoke its skills under that namespace:
|
|
|
135
137
|
|
|
136
138
|
All nine plugins share the same repository source, so this groups and enables skills by category — it is not a partial download. The marketplace tracks `main`, so a plugin's version is its git commit.
|
|
137
139
|
|
|
140
|
+
**Note the name.** A skill installed as a plugin is invoked under its plugin's namespace (`/medsci-analysis:analyze-stats`); the same skill installed into the skills folder by the `npx`, `gh skill`, classroom, or manual paths is invoked bare (`/analyze-stats`). Both run the same skill — press `/` and use Tab completion rather than typing the long form.
|
|
141
|
+
|
|
138
142
|
**Want just one capability?** Two skills are also published as focused standalone repos (generated mirrors; this repo stays the source of truth), each installable on its own with `/plugin marketplace add Aperivue/<repo>`:
|
|
139
143
|
|
|
140
144
|
- [`Aperivue/verify-refs`](https://github.com/Aperivue/verify-refs) — catch fabricated/mismatched citations (PubMed + CrossRef).
|
|
@@ -170,9 +174,9 @@ protocol scaffolding, screening/extraction structure, PRISMA-consistent counts a
|
|
|
170
174
|
diagram, pooled-estimate figures, and a manuscript draft. *Safety:* screening and
|
|
171
175
|
extraction decisions stay with the human review team.
|
|
172
176
|
|
|
173
|
-
## Live Demos:
|
|
177
|
+
## Live Demos: Five Study Types, Five Full Pipelines
|
|
174
178
|
|
|
175
|
-
|
|
179
|
+
Five public datasets. Five study types. Demos 1–3 each produce a complete manuscript, publication-ready figures, and a reporting-compliance audit; Demo 4 runs the medical-AI **model-engineering lane** end to end (scaffold → gates → training → evaluation → interpretability); Demo 5 takes that lane onto a GPU cluster and out to a **genuinely external cohort**, then reports where it broke.
|
|
176
180
|
|
|
177
181
|
| Demo | Dataset | Study Type | Compliance |
|
|
178
182
|
|------|---------|------------|------------|
|
|
@@ -180,6 +184,7 @@ Four public datasets. Four study types. Demos 1–3 each produce a complete manu
|
|
|
180
184
|
| [Demo 2: BCG Vaccine](demo/02_metafor_bcg/) | `metafor::dat.bcg` (13 RCTs) | Meta-analysis | PRISMA 2020 |
|
|
181
185
|
| [Demo 3: NHANES Obesity](demo/03_nhanes_obesity/) | CDC NHANES 2017-18 | Epidemiology (survey) | STROBE |
|
|
182
186
|
| [Demo 4: PneumoniaMNIST CNN](demo/04_pneumoniamnist_cnn/) | `medmnist` (CC BY 4.0) | Medical-AI model engineering (CNN) | CLAIM / TRIPOD+AI |
|
|
187
|
+
| [Demo 5: MSD → AMOS spleen](demo/05_msd_amos_spleen/) | MSD Task09 + AMOS22 (CC BY 4.0) | 3-D segmentation, external validation + modality shift | CLAIM / Metrics Reloaded |
|
|
183
188
|
|
|
184
189
|
### Demo 1: Diagnostic Accuracy — Wisconsin Breast Cancer
|
|
185
190
|
|
|
@@ -264,6 +269,45 @@ data(dat.bcg) # 13 RCTs, 357,347 participants (Colditz et al. 1994)
|
|
|
264
269
|
|
|
265
270
|
**Pipeline:** `analyze-stats` → `make-figures` → `write-paper` → AI pattern scan → `check-reporting` (STROBE) → `self-review` → DOCX build → `present-paper`
|
|
266
271
|
|
|
272
|
+
### Demo 5: External Validation — MSD → AMOS spleen segmentation
|
|
273
|
+
|
|
274
|
+
The only demo that leaves the laptop, and the only one that reports a **failure**. It asks whether a
|
|
275
|
+
clinician can carry a deep-learning study to a defensible result without an engineer, then answers by
|
|
276
|
+
running a three-rung external-validation ladder on a GPU cluster and logging every point where the
|
|
277
|
+
answer was no.
|
|
278
|
+
|
|
279
|
+
| Rung | Cohort | n scored | Dice median [95% CI] |
|
|
280
|
+
|---|---|---:|---|
|
|
281
|
+
| 1 internal | MSD held-out | 9 | **0.9595** [0.9367–0.9734] |
|
|
282
|
+
| 2 genuine external | AMOS **CT** | 298 / 300 | **0.8932** [0.8633–0.9108] |
|
|
283
|
+
| 3 modality shift | AMOS **MRI** | 59 / 60 | **0.0152** [0.0000–0.0626] |
|
|
284
|
+
| 3b counterfactual | AMOS MRI, **rescaled** | 59 / 60 | **0.3016** [0.1744–0.4048] |
|
|
285
|
+
|
|
286
|
+
Rung 3 is a **constructed** test, and the demo says so: the evaluation plan named the normalisation
|
|
287
|
+
contract and predicted the collapse *before* inference ran. The trained plan carries `CTNormalization`
|
|
288
|
+
into inference and there is no flag that says "this is MRI", so a Hounsfield-unit clip is applied to
|
|
289
|
+
arbitrary-unit images: **0 of 60 MRI cases contain a negative voxel** (against 300 of 300 on CT), and a
|
|
290
|
+
median **23.2 %** of voxels are flattened at the clip ceiling (against 2.7 %). The run exits 0 and
|
|
291
|
+
returns a file for all 60 cases, 20 of them empty. Only ground truth made it loud.
|
|
292
|
+
|
|
293
|
+
A fourth arm changes **only the input intensity scale** — same checkpoint, no retraining — and
|
|
294
|
+
recovers median Dice to **0.3016** (+0.2864 [+0.1204, +0.4048]) while staying **−0.5916** below the
|
|
295
|
+
CT arm. So both mechanisms are real and differently sized: roughly **0.29 Dice is the preprocessing
|
|
296
|
+
contract, 0.59 a representation that does not transfer**. The arm and its prediction were written
|
|
297
|
+
down before it ran.
|
|
298
|
+
|
|
299
|
+
And `/profile-imaging` **had already flagged the mixed intensity scale before training — as a
|
|
300
|
+
Minor**, where it sat in `qc/` for nine days. So the gap this demo found is not detection; it is
|
|
301
|
+
**routing and severity**. A gate that fires correctly into a directory no later step reads is,
|
|
302
|
+
operationally, a gate that did not fire. See [the full demo](demo/05_msd_amos_spleen/) — including
|
|
303
|
+
[`FRICTION.md`](demo/05_msd_amos_spleen/FRICTION.md), which lists every point that needed engineering
|
|
304
|
+
knowledge, because the headline question is not answerable honestly without it.
|
|
305
|
+
|
|
306
|
+
**Pipeline:** `profile-imaging` → `model-sourcing` → `preprocess-imaging` (leakage gate, plus the
|
|
307
|
+
counterfactual that must fail) → `model-validation` (split gate) → nnU-Net training →
|
|
308
|
+
`model-evaluation` → `make-figures` → write-up. `bash reproduce.sh` re-runs the gates and the whole
|
|
309
|
+
across-cohort analysis on a laptop; training needs ~50 GPU-hours and says so.
|
|
310
|
+
|
|
267
311
|
### Project Folder Structure
|
|
268
312
|
|
|
269
313
|
Each demo (and real project) follows this role-based folder layout:
|
|
@@ -418,7 +462,7 @@ Earlier in this series: analysis-integrity guards (confounding completeness, cla
|
|
|
418
462
|
| **Battle-tested** | Used on real manuscript submissions by a practicing physician-researcher | Unknown provenance and validation |
|
|
419
463
|
| **Depth per skill** | 150-600 lines of documentation + bundled reference files (curated journal profile library, checklists, formula sheets, code templates) | Typically thin SKILL.md templates |
|
|
420
464
|
|
|
421
|
-
**MedSci-Audit** — the verification edge in the first rows above is a named suite of **
|
|
465
|
+
**MedSci-Audit** — the verification edge in the first rows above is a named suite of **90 deterministic detectors** (citation & reference integrity, cohort & pool arithmetic, scope/estimand contracts, reporting compliance, and more) that catch fabricated or drifted content before a manuscript reaches a reviewer. See **[`MEDSCI_AUDIT.md`](MEDSCI_AUDIT.md)** for the suite, its six families, and its evaluation evidence.
|
|
422
466
|
|
|
423
467
|
---
|
|
424
468
|
|
|
@@ -485,11 +529,11 @@ ma-scout -> search-lit -> fulltext-retrieval -> design-study ──> write-proto
|
|
|
485
529
|
|
|
486
530
|
### By research stage
|
|
487
531
|
|
|
488
|
-
All
|
|
532
|
+
All 59 skills, grouped by where they fit in the clinical-manuscript and medical-AI lifecycle. Full descriptions are in the table below; one page per skill lives in the [per-skill reference](docs/skills/).
|
|
489
533
|
|
|
490
534
|
| Stage | Skills |
|
|
491
535
|
|-------|--------|
|
|
492
|
-
| 🔭 **Discover & scope** | `ma-scout` · `find-cohort-gap` · `search-lit` · `fulltext-retrieval` · `lit-sync` · `author-strategy` |
|
|
536
|
+
| 🔭 **Discover & scope** | `ma-scout` · `find-cohort-gap` · `search-lit` · `fulltext-retrieval` · `lit-sync` · `obsidian-paper-vault` · `author-strategy` |
|
|
493
537
|
| 📐 **Design & plan** | `design-study` · `calc-sample-size` · `define-variables` · `write-protocol` · `fill-protocol` · `design-ai-benchmarking` |
|
|
494
538
|
| 🧹 **Data & analysis** | `deidentify` · `clean-data` · `generate-codebook` · `version-dataset` · `analyze-stats` · `batch-cohort` · `cross-national` · `replicate-study` |
|
|
495
539
|
| 🤖 **Medical-AI model engineering** | `profile-imaging` · `preprocess-imaging` · `architecture-zoo` · `model-scaffold` · `model-validation` · `model-evaluation` · `uncertainty-imaging` · `explainability` · `radiomics-ml` · `model-card` · `mllm-eval` |
|
|
@@ -507,7 +551,7 @@ All 58 skills, grouped by where they fit in the clinical-manuscript and medical-
|
|
|
507
551
|
| **search-lit** | PubMed + Semantic Scholar + bioRxiv search with anti-hallucination citation verification. Token-efficient error handling -- CrossRef failures are silently batched, not repeated. BibTeX output tags each entry with `verified`/`verified_by`/`verified_on` fields so downstream skills can trust the citation provenance. |
|
|
508
552
|
| **verify-refs** | Pre-submission reference audit for `.md`, `.docx`, `.bib`, or `.tsv` inputs. Extracts references, verifies DOI/PMID via CrossRef/PubMed when available, and writes `qc/reference_audit.json` as the sole output — row-level status (OK / MISMATCH / UNVERIFIED / FABRICATED) lives inside the JSON `records[]` block. `/search-lit` produces candidate BibTeX; `/lit-sync` owns `manuscript/_src/refs.bib`. |
|
|
509
553
|
| **fulltext-retrieval** | Batch open-access PDF downloader. Unpaywall → PMC → OpenAlex → CrossRef pipeline. OA-only -- no paywall bypass. Input: DOI list or TSV. Optional PDF→Markdown conversion via [pymupdf4llm](https://pymupdf.readthedocs.io/en/latest/pymupdf4llm/) for token-efficient LLM analysis of academic papers. |
|
|
510
|
-
| **check-reporting** | Manuscript compliance audit against
|
|
554
|
+
| **check-reporting** | Manuscript compliance audit against 49 reporting guidelines and risk of bias tools (STROBE, STROBE-MR, RECORD, GATHER, STARD, STARD-AI, TRIPOD, TRIPOD+AI, TRIPOD-LLM, PGS-RS, CHEERS 2022, CROSS, SRQR, COREQ, PRISMA, PRISMA 2020 for Abstracts, PRISMA-DTA, PRISMA-P, PRISMA-ScR, MOOSE, ARRIVE, CONSORT, CONSORT-AI, CARE, SPIRIT, SPIRIT-AI, CLAIM, DECIDE-AI, SQUIRE 2.0, CLEAR, GRRAS, MI-CLEAR-LLM, SWiM, AMSTAR 2, QUADAS-3, QUADAS-2, QUADAS-C, RoB 2, ROBINS-I, ROBINS-E, ROBIS, ROB-ME, PROBAST, PROBAST+AI, NOS, COSMIN, RoB NMA). Machine-readable JSON summary with `compliance_pct` and `fixable_by_ai` flags for automated pipeline integration. |
|
|
511
555
|
| **analyze-stats** | Statistical analysis code generation (Python/R) for diagnostic accuracy, DTA meta-analysis (bivariate/HSROC), inter-rater agreement, survival analysis, demographics tables, regression (logistic/linear), propensity score (matching/IPTW/overlap weighting), and repeated measures (RM ANOVA/GEE/mixed models). Calibration mandatory for prediction models. |
|
|
512
556
|
| **meta-analysis** | Full systematic review and meta-analysis pipeline (8 phases). DTA (bivariate/HSROC) and intervention meta-analysis. Protocol to submission-ready manuscript with PRISMA-DTA compliance. |
|
|
513
557
|
| **make-figures** | Publication-ready figures and visual abstracts: ROC curves, forest plots, PRISMA/CONSORT/STARD flow diagrams, Kaplan-Meier curves, Bland-Altman plots, confusion matrices, and journal-specific visual/graphical abstracts (python-pptx template-based). Communication-first design principles (Nat Hum Behav 2026 — key message, audience, cognitive load, figure-vs-table decision) and five flow-diagram production lessons (official-template fidelity, VML fallback PDF export, docx XML escape, sequential placeholder mapping, version freeze); critic rubric Section G adds 5 communication-first checks. `--study-type` auto-generates the full required figure set; structured `_figure_manifest.md` output for downstream pipeline consumption; D2 enforced as default for flow diagrams. |
|
|
@@ -548,6 +592,7 @@ All 58 skills, grouped by where they fit in the clinical-manuscript and medical-
|
|
|
548
592
|
| **peer-review** | Structured peer review drafting for medical journals. Systematic manuscript analysis, journal-specific formatting (RYAI, INSI, EURE, AJR, KJR), conciseness targets (500-800 words), and pre-submission QC checklist. Constructive developmental tone. |
|
|
549
593
|
| **ma-scout** | Meta-analysis topic discovery and feasibility assessment. Two modes: (A) Professor-first — profile → pillar analysis → MA gaps, (B) Topic-first — question → landscape scan → co-author matching. Multi-source validation (PubMed, PROSPERO, bioRxiv) with realistic k estimation (15-30% discount). |
|
|
550
594
|
| **lit-sync** | Sync research references from .bib files to Zotero library + Obsidian literature notes. Concept extraction from 10+ literature notes with cross-cutting theme discovery. Works after `/search-lit` or standalone. |
|
|
595
|
+
| **obsidian-paper-vault** | Turn a folder of research PDFs into an Obsidian vault: templated literature notes with frontmatter, PDF embed links, and atomic concept notes synthesized across papers. Batch notes are written from pre-extracted text, never from PDF paths handed to subagents. Shares vault folders with `/lit-sync` and never overwrites an existing note. |
|
|
551
596
|
| **academic-aio** | AI search engine (Perplexity / ChatGPT web / Elicit / Consensus / SciSpace) and RAG visibility checklist for medical AI papers. Integrates TRIPOD+AI, CLAIM, STARD-AI, TRIPOD-LLM, DECIDE-AI reporting anchors with generative-engine-optimization (GEO) principles. Covers title, abstract, structured summary boxes (Key Points / Research in Context / Plain-Language Summary), preprints, GitHub README, `CITATION.cff`, Zenodo, and Hugging Face model/dataset cards. Explicit defense against LLM citation fabrication (Agarwal 2025, Nat Commun). Produces a visible PASS/PARTIAL/FAIL checklist; never applies edits silently. Pairs with `write-paper` Phase 4/6/7, runs after `self-review` + `humanize`. |
|
|
552
597
|
| **polish-language** | Academic English consistency linting and non-native (ESL) clarity polish. A deterministic linter (`lint_consistency.py`) flags abbreviation define-once violations, US/UK spelling drift, hyphen-vs-en-dash numeric ranges, `P`/`p` case and impossible `P = 0.000`, hyphenation variants, small-number style, and value/unit spacing — then a gated, style-only clarity pass fixes wording without ever changing numbers, citations, or scientific meaning. Distinct from `humanize` (AI-tell removal) and `check-reporting` (guideline items); bundles a reproducible challenge card. |
|
|
553
598
|
| **manage-refs** | Reference lifecycle as a single skill: citekey ↔ `.bib` validation, journal-CSL pandoc rendering (`render_pandoc.sh`), manuscript ↔ rendered DOCX cross-reference QC (`check_xref.py --strict` is the submission gate), `[N]` ↔ `[@key]` marker conversion, and native Zotero CWYW field-code injection for co-author Word workflows. Hybrid 3-phase strategy (pandoc draft → CWYW transition → Zotero CWYW for circulation/revision/submission). Sole writer of `manuscript_final.docx` and `qc/xref_audit.json`. Split out of `write-paper` Phase 7.6 so `revise`, `peer-review`, `sync-submission`, and `find-journal` can render directly without depending on a sibling skill. |
|
|
@@ -638,12 +683,31 @@ gh skill install --all Aperivue/medsci-skills # or install all of the
|
|
|
638
683
|
|
|
639
684
|
- Claude Code: skills are copied to `~/.claude/skills/` (also read by GitHub Copilot and Cursor).
|
|
640
685
|
- Codex: skills are copied to `~/.agents/skills/` (also read by Cursor and GitHub Copilot).
|
|
641
|
-
- Cursor: no separate step needed — Cursor reads `~/.claude/skills/` and `~/.agents/skills/` directly. The installer can still write an optional `.cursor/rules/` steering rule with `--cursor-project
|
|
686
|
+
- Cursor: no separate step needed — Cursor reads `~/.claude/skills/` and `~/.agents/skills/` directly. The installer can still write an optional `.cursor/rules/` steering rule with `--cursor-project`; it carries no machine-specific path, so it is safe to commit.
|
|
642
687
|
- See [`docs/host_compatibility.md`](docs/host_compatibility.md) for the verified per-host install paths and their official sources.
|
|
643
688
|
- Windows users do not need WSL for the basic classroom workflow. Use WSL only for advanced reproducible Linux toolchains.
|
|
644
689
|
|
|
645
690
|
See [docs/classroom_distribution_plan.md](docs/classroom_distribution_plan.md) and [docs/classroom_materials.md](docs/classroom_materials.md) for instructor distribution, email templates, and first-class exercises.
|
|
646
691
|
|
|
692
|
+
### Optional: let plain-language requests find the skills
|
|
693
|
+
|
|
694
|
+
Typing `/orchestrate` is the reliable way in. If you would rather just describe what you want, the
|
|
695
|
+
installer can write a short routing table into a project's `CLAUDE.md` so Claude Code reaches for
|
|
696
|
+
the right skill on its own whenever you work in that folder:
|
|
697
|
+
|
|
698
|
+
```bash
|
|
699
|
+
python3 installers/install.py --claude-project ~/research/my-study # this project only
|
|
700
|
+
python3 installers/install.py --claude-user # every project (larger footprint)
|
|
701
|
+
python3 installers/install.py --claude-project ~/research/my-study --remove-routing
|
|
702
|
+
```
|
|
703
|
+
|
|
704
|
+
Both are **off by default**. The block is ~25 lines between `<!-- BEGIN/END medsci-skills routing -->`
|
|
705
|
+
markers and carries no machine-specific paths. It is spliced in, not written over: an existing
|
|
706
|
+
`CLAUDE.md` keeps its bytes outside the markers — line endings and file permissions included — the
|
|
707
|
+
write is atomic so an interrupted run cannot leave a truncated file, re-running updates the block in
|
|
708
|
+
place, and `--remove-routing` takes it back out. Prefer `--claude-project` — `--claude-user` loads in every project you ever open,
|
|
709
|
+
including work unrelated to research.
|
|
710
|
+
|
|
647
711
|
> **Tip:** Not sure which skill to use? Start with `/orchestrate` -- it will classify your request and route you to the right tool.
|
|
648
712
|
|
|
649
713
|
## Updating
|
|
@@ -696,8 +760,8 @@ Projects declare their source-of-truth layout in `SSOT.yaml`, and a `qc/migratio
|
|
|
696
760
|
### Meta-Analysis Failure Modes
|
|
697
761
|
`/meta-analysis` ships empirical failure-mode references (data integrity, review orchestration, submission package drift, post-submission release ops) with four automation hooks: `scripts/prisma_5way_consistency.py` (DI-6 PRISMA number consistency), `scripts/extraction_consensus_log_init.py` (DI-1 dual-extraction scaffold), `scripts/tag_cleanup_gate.sh` (DI-8 placeholder tag gate), and `scripts/verify_package_integrity.py` (SPD SHA-256 manifest for submission bundles).
|
|
698
762
|
|
|
699
|
-
###
|
|
700
|
-
`check-reporting` includes bundled checklists for
|
|
763
|
+
### 49 Reporting Guidelines & RoB Tools Built-in
|
|
764
|
+
`check-reporting` includes bundled checklists for 49 guidelines and risk-of-bias tools: STROBE, STROBE-MR, RECORD, GATHER, STARD, STARD-AI, TRIPOD, TRIPOD+AI, TRIPOD-LLM, PGS-RS, CHEERS 2022, CROSS, SRQR, COREQ, PRISMA 2020, PRISMA 2020 for Abstracts, PRISMA-DTA, PRISMA-P, PRISMA-ScR, MOOSE, ARRIVE, CONSORT, CONSORT-AI, CARE, SPIRIT, SPIRIT-AI, CLAIM, DECIDE-AI, SQUIRE 2.0, CLEAR, GRRAS, MI-CLEAR-LLM, SWiM, AMSTAR 2, QUADAS-3, QUADAS-2, QUADAS-C, RoB 2, ROBINS-I, ROBINS-E, ROBIS, ROB-ME, PROBAST, PROBAST+AI, NOS, COSMIN, RoB NMA. Includes Results/Discussion section boundary checks and machine-readable JSON summary for pipeline integration.
|
|
701
765
|
|
|
702
766
|
### Publication-Ready Output
|
|
703
767
|
`analyze-stats` generates reproducible Python/R code for 13 analysis types -- including regression, propensity score, and repeated measures -- with mandatory calibration for prediction models. `make-figures` produces journal-specification figures (300 DPI, colorblind-safe palettes, proper dimensions), visual/graphical abstracts, and a tool selection guide (D2 for flow diagrams, matplotlib for data plots). `--study-type` auto-generates the complete figure set for each study design.
|