medsci-skills 5.18.0 → 5.20.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 +21 -17
- package/metadata/distribution_files.json +247 -22
- package/metadata/distribution_manifest.json +1 -1
- package/package.json +1 -1
- package/skills/check-reporting/SKILL.md +6 -2
- package/skills/check-reporting/references/checklists/REMARK.md +86 -0
- package/skills/check-reporting/references/checklists/TARGET.md +97 -0
- package/skills/check-reporting/references/critical_item_floor.md +2 -0
- package/skills/check-reporting/scripts/check_checklist_exists.py +6 -0
- package/skills/check-reporting/tests/test_checklist_fail_fast.sh +3 -0
- package/skills/make-figures/references/reporting_guideline_figure_map.md +2 -2
- package/skills/orchestrate/SKILL.md +1 -1
- package/skills/peer-review/SKILL.md +47 -1
- package/skills/peer-review/references/domain-probes/diagnostic_accuracy.md +1 -0
- package/skills/peer-review/references/domain-probes/observational_confounding.md +1 -0
- package/skills/peer-review/scripts/check_pdf_injection.py +246 -0
- package/skills/peer-review/scripts/check_pdf_injection_challenge/expected/clean.txt +3 -0
- package/skills/peer-review/scripts/check_pdf_injection_challenge/expected/inject.txt +18 -0
- package/skills/peer-review/scripts/check_pdf_injection_challenge/fixture/manifest_clean.json +12 -0
- package/skills/peer-review/scripts/check_pdf_injection_challenge/fixture/manifest_inject.json +16 -0
- package/skills/peer-review/scripts/check_pdf_injection_challenge/problem.md +42 -0
- package/skills/peer-review/scripts/check_pdf_injection_challenge/verify.sh +41 -0
- package/skills/peer-review/scripts/scan_pdf_layers.py +174 -0
- package/skills/peer-review/skill.yml +8 -2
- package/skills/self-review/references/domain-probes/diagnostic_accuracy.md +1 -0
- package/skills/self-review/references/domain-probes/observational_confounding.md +1 -0
- package/skills/self-review/scripts/check_dta_denominators.py +182 -0
- package/skills/self-review/scripts/check_dta_denominators_challenge/expected/bad.txt +5 -0
- package/skills/self-review/scripts/check_dta_denominators_challenge/expected/ok.txt +3 -0
- package/skills/self-review/scripts/check_dta_denominators_challenge/fixture/dta_bad.md +12 -0
- package/skills/self-review/scripts/check_dta_denominators_challenge/fixture/dta_ok.md +12 -0
- package/skills/self-review/scripts/check_dta_denominators_challenge/problem.md +29 -0
- package/skills/self-review/scripts/check_dta_denominators_challenge/verify.sh +19 -0
- package/skills/self-review/scripts/check_nested_group_comparison.py +154 -0
- package/skills/self-review/scripts/check_nested_group_comparison_challenge/expected/clean.txt +3 -0
- package/skills/self-review/scripts/check_nested_group_comparison_challenge/expected/nested.txt +3 -0
- package/skills/self-review/scripts/check_nested_group_comparison_challenge/fixture/clean.md +11 -0
- package/skills/self-review/scripts/check_nested_group_comparison_challenge/fixture/nested.md +6 -0
- package/skills/self-review/scripts/check_nested_group_comparison_challenge/problem.md +27 -0
- package/skills/self-review/scripts/check_nested_group_comparison_challenge/verify.sh +20 -0
- package/skills/self-review/scripts/check_paired_difference_estimator.py +149 -0
- package/skills/self-review/scripts/check_paired_difference_estimator_challenge/expected/bad.txt +5 -0
- package/skills/self-review/scripts/check_paired_difference_estimator_challenge/expected/ok.txt +3 -0
- package/skills/self-review/scripts/check_paired_difference_estimator_challenge/fixture/paired_bad.md +8 -0
- package/skills/self-review/scripts/check_paired_difference_estimator_challenge/fixture/paired_ok.md +9 -0
- package/skills/self-review/scripts/check_paired_difference_estimator_challenge/problem.md +26 -0
- package/skills/self-review/scripts/check_paired_difference_estimator_challenge/verify.sh +20 -0
- package/skills/self-review/scripts/check_reported_p_from_counts.py +214 -0
- package/skills/self-review/scripts/check_reported_p_from_counts_challenge/expected/bad.txt +3 -0
- package/skills/self-review/scripts/check_reported_p_from_counts_challenge/expected/ok.txt +3 -0
- package/skills/self-review/scripts/check_reported_p_from_counts_challenge/fixture/p_bad.md +6 -0
- package/skills/self-review/scripts/check_reported_p_from_counts_challenge/fixture/p_ok.md +6 -0
- package/skills/self-review/scripts/check_reported_p_from_counts_challenge/problem.md +29 -0
- package/skills/self-review/scripts/check_reported_p_from_counts_challenge/verify.sh +20 -0
- package/skills/self-review/scripts/check_table_percentages.py +211 -0
- package/skills/self-review/scripts/check_table_percentages_challenge/expected/bad.txt +6 -0
- package/skills/self-review/scripts/check_table_percentages_challenge/expected/ok.txt +3 -0
- package/skills/self-review/scripts/check_table_percentages_challenge/fixture/table_bad.md +6 -0
- package/skills/self-review/scripts/check_table_percentages_challenge/fixture/table_ok.md +11 -0
- package/skills/self-review/scripts/check_table_percentages_challenge/problem.md +34 -0
- package/skills/self-review/scripts/check_table_percentages_challenge/verify.sh +40 -0
- package/skills/self-review/skill.yml +11 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**55 skills that actually work.** Built by a physician-researcher, tested on real publications.
|
|
6
6
|
|
|
7
|
-
*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 —
|
|
7
|
+
*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 — 46 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
8
|
|
|
9
9
|
[](LICENSE)
|
|
10
10
|
[](https://github.com/Aperivue/medsci-skills/releases/latest)
|
|
@@ -288,62 +288,66 @@ The E2E pipeline (`orchestrate --e2e`) produces everything up to `qc/`. The `sub
|
|
|
288
288
|
|
|
289
289
|
## What's New
|
|
290
290
|
|
|
291
|
-
**v5.
|
|
291
|
+
**v5.20** — reviewer-arithmetic gates. Five deterministic `self-review` detectors promoted from a peer-review cycle, each recomputing what a manuscript already prints: `check_table_percentages` (an `n (%)` cell vs its column denominator), `check_nested_group_comparison` (a P value comparing an analysed subset against the parent cohort that **contains** it — nested, invalid), `check_reported_p_from_counts` (rebuilds each 2×2 row and recomputes Fisher / Pearson χ² ± Yates in **pure stdlib**, calibrating the family on rows that reproduce), `check_dta_denominators` (sensitivity/specificity denominators vs the reference-standard category counts, behind a matching grand total), and `check_paired_difference_estimator` (an odd-n integer-scale median cannot be non-integer; a zero-width CI; an unnamed estimator). Plus `/peer-review` request-type discipline (disclosure vs computation) and impossibility-claim verification. Additive and backward-compatible; **55 skills / 46 guidelines / 57 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.19.)
|
|
292
292
|
|
|
293
|
-
**v5.
|
|
293
|
+
**v5.19** — reviewer-safety + reporting-checklist batch. A **PDF hidden-text / prompt-injection guard** for `/peer-review` — a PyMuPDF extractor plus a stdlib detector that catch a review-steering instruction hidden in a submitted PDF (white-on-white text, sub-visible fonts, off-page glyphs, invisible render mode, or a document-metadata field) before an LLM ingesting the text layer can be steered by it, and emit visible-only text to feed a model instead of the raw PDF; plus the **TARGET** (target-trial emulation; Cashin et al., *JAMA* 2025) and **REMARK** (prognostic tumour-marker; McShane et al.) reporting checklists. Additive and backward-compatible; **55 skills / 46 guidelines / 52 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.18.)
|
|
294
294
|
|
|
295
|
-
**v5.
|
|
295
|
+
**v5.18** — reliability & workflow-integrity batch. A new deterministic **response-claim gate** for `/revise` and `/peer-review` (verifies a response letter's "we added / we now cite X" against the *revised manuscript body* — a claimed-but-absent edit is caught before it reaches a reviewer; **detectors 50 → 51**), a **reframe / headline-change survivor scan** (`--retired-term` / `--old-value`, finds stale framing or superseded values left in the body, supplement, and figure legends after a reframe), a pre-drafting **backbone full-text readiness gate** for `/write-paper` (the backbone article is *used*, not merely detected), a **skill-registry consistency validator** (`capabilities.yml` ⇄ `skill.yml`, CI-enforced), AI-tool **citation-framing** guidance for `/academic-aio`, and **Demo 4** (PneumoniaMNIST CNN, the model-engineering lane end to end). Additive and backward-compatible; **55 skills / 46 guidelines / 51 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.17.)
|
|
296
296
|
|
|
297
|
-
**v5.
|
|
297
|
+
**v5.17** — model-engineering produce-side depth, **completion**. Deployment safety + the final roadmap/candidate items: a new **`uncertainty-imaging`** skill + `check_uncertainty_reporting` gate (calibrated per-case uncertainty / OOD guard on a held-out set / abstention at a pre-specified target / calibration-under-shift — for a deployment-framed model), an **MLOps wiring reference** for `model-scaffold` (experiment tracking, config/data/environment versioning, CI-for-ML — pointing to W&B / MLflow / nnU-Net, reimplementing nothing), and an **`architecture-zoo` graph-neural-net family card** (GCN / GraphSAGE / GAT / GIN / BrainGNN for brain connectomes) that closes the last candidate gap. The six-item produce-side depth roadmap and its candidate list are now complete. Additive and backward-compatible; **55 skills / 46 guidelines / 50 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.16.)
|
|
298
298
|
|
|
299
|
-
**
|
|
299
|
+
**v5.16** — model-engineering produce-side depth, clinical fine-tuning focus (Items 3–4 of the [produce-side depth roadmap](docs/roadmap_model_engineering_depth.md)). A new **`radiomics-ml`** skill + `check_radiomics_ml` gate for the most common solo-doable clinical-ML workflow — radiomics / tabular features → any classical learner (LASSO / SVM / random forest / XGBoost / …) → a clinical outcome, no GPU — with a learner-agnostic nested-CV / calibration / stability gate; plus a **`model-scaffold` fine-tuning mode** (`--task finetune` + `--from-pretrained`) that adapts a pretrained backbone on collected clinical data with a frozen→unfrozen schedule, discriminative learning rates, and a pretrained-weight provenance record (`PRETRAINED.md` + a `PRETRAINED_PROVENANCE_MISSING` verdict on the existing `check_training_hygiene`, plus a MedSAM-adaptation + train-only diffusion-augmentation guide). Additive and backward-compatible; **54 skills / 46 guidelines / 49 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.15.)
|
|
300
|
+
|
|
301
|
+
**v5.15** — model-engineering produce-side depth. Two new skills that *produce* what the review lane previously only audited: **`preprocess-imaging`** (DICOM/NIfTI data prep + a `check_preprocessing_leakage` gate that extends the split-leakage moat upstream to the data stage) and **`explainability`** (Grad-CAM / saliency held to the reviewer bar — Adebayo sanity checks, quantitative localisation vs ground truth, attribution-not-validation framing, via `check_explainability_report`). Plus a by-stage skill index, multi-host README/About (Claude Code · Codex · Cursor · Copilot), copy-paste citation ergonomics, and a real-project precision fix. Additive and backward-compatible; **53 skills / 46 guidelines / 48 integrity detectors / 22 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.14.)
|
|
302
|
+
|
|
303
|
+
**v4.10** — reviewer-coverage expansion reverse-engineered from high-IF, CC-BY papers (learn-only under the `reverse_engineer/` license firewall), plus a clinician-friendly update path. Additive and backward-compatible; 45 skills / **46 guidelines** / 36 detectors / **15 domain-probe modules** (was 12):
|
|
300
304
|
|
|
301
305
|
- **Three new reviewer domain-probe modules** (`/peer-review` + `/self-review`, vendored byte-identical): **Mendelian randomization** (MR1–MR8 — IV assumptions, pleiotropy-robust sensitivity suite, Steiger, sample overlap, NLMR, drug-target colocalization), **polygenic risk score** (PG1–PG8 — ancestry portability, base/target leakage, incremental value over the clinical model, screening-vs-discrimination, calibration), and **network meta-analysis** (NM1–NM8 — transitivity, incoherence, SUCRA over-interpretation, CINeMA/GRADE-NMA, component-NMA additivity). Plus observational **O17** (agnostic many-exposure-scan multiplicity: ExWAS/EWAS/MWAS).
|
|
302
306
|
- **Two reporting-guideline checklists** (36 → 38): **STROBE-MR** and **PGS-RS / PRS-RS**, with study-type routing. Four new `/analyze-stats` analysis guides (multiplicity, MR, PRS, NMA) and a `/clean-data` implausible-value + cross-field validity reference.
|
|
303
307
|
- **Clinician-friendly update reminders** — the classroom installers enable the in-app "update available" notice + one-click Desktop updater by default; the `npx`/manual paths print how to turn it on; the install guide recommends `npx medsci-skills install --enable-update-notify`.
|
|
304
308
|
|
|
305
|
-
**v4.9** — analysis-integrity hardening promoted from real review cycles, plus journal-mechanics additions. Additive and backward-compatible; still 45 skills /
|
|
309
|
+
**v4.9** — analysis-integrity hardening promoted from real review cycles, plus journal-mechanics additions. Additive and backward-compatible; still 45 skills / 46 guidelines, analysis-integrity detectors **32 → 36**:
|
|
306
310
|
|
|
307
311
|
- **Four new gates** — a **duplicate-bibliography** check (`check_reference_duplication.py`) for the hybrid `[@key]` + hand-typed `## References` build that renders the list twice; a **cross-script binning / composite-indicator** consistency check (`check_binning_consistency.py`, `BINNING_DRIFT` / `DERIVED_DEF_DRIFT`) for a derived categorical or composite indicator defined inconsistently across analysis scripts; a **float citation-order** check (`check_citation_order.py`) for numbered Tables/Figures not first cited in ascending order per series; and an **audit-dump leak** gate (`/sync-submission`) that blocks a `/check-reporting` output mistakenly attached as a submission file.
|
|
308
312
|
- **KJR technical-check conventions + percentage-decimal style**, reader-allocation-under-burden and generative-image-as-study-object reporting (`/design-ai-benchmarking`, `/check-reporting`), and a **Liver International** CSL with that journal's submission mechanics (`/manage-refs`).
|
|
309
313
|
|
|
310
|
-
**v4.8** is the **review-harvest batch** — deterministic detector hardening promoted from real-manuscript review cycles. Additive and backward-compatible; still 45 skills /
|
|
314
|
+
**v4.8** is the **review-harvest batch** — deterministic detector hardening promoted from real-manuscript review cycles. Additive and backward-compatible; still 45 skills / 46 guidelines, analysis-integrity detectors **30 → 32**:
|
|
311
315
|
|
|
312
316
|
- **Two new gates** — `check_supplement_hygiene.py` lints the rendered supplement / tables / caption files (not just the manuscript) for §-labels, placeholders, build markers, response-letter framing, and unresolved body↔supplement cross-references; `check_null_calibration.py` flags a headline negative/equivalence claim made without a minimum-detectable-effect / power / equivalence statement.
|
|
313
317
|
- **Four detector false-positive fixes** — gates no longer fire on a recommended colorblind-safe palette, author-footnote `§` daggers, a correctly-hedged disclaimer, or a tier-label digit; each with a regression fixture and three newly CI-wired test suites.
|
|
314
318
|
- **Nine reviewer-side domain probes** (SR/MA, observational, diagnostic, AI-overclaiming, survival) plus a `/design-study` design-stage ceiling gate for perceptual/reader-AI studies and a reusable confidence-weighted-rating→AUC monotonicity template.
|
|
315
319
|
|
|
316
|
-
**v4.7** is the **self-update foundation** — physician-researchers stay current without GitHub, git, or a terminal. Additive and backward-compatible; still 45 skills /
|
|
320
|
+
**v4.7** is the **self-update foundation** — physician-researchers stay current without GitHub, git, or a terminal. Additive and backward-compatible; still 45 skills / 46 guidelines / 30 detectors:
|
|
317
321
|
|
|
318
322
|
- **Transactional, crash-recoverable installer.** Each install runs through a durable journal state machine recovered on the next run (roll back / forward-clean / fail-closed), with per-target SHA-256 inventories — your modified or third-party skills are backed up and never clobbered or auto-deleted.
|
|
319
323
|
- **One-click self-updater** (`~/.medsci-skills/updater/`, `install.py --check-update`). Verifies the download against the github.com API digest and **never `extractall()`s** (per-entry rejection of traversal / symlink / duplicate / zip-bomb + an allowlist & per-file hash). The release pipeline injects a verified `provenance.json`, attests build provenance, runs on a protected `release` environment, and verifies each ZIP round-trips through the updater's own safe-extract before publishing.
|
|
320
324
|
- **Opt-in update notice (off by default):** `install.py --enable-update-notify` shows a one-line "update available" message at Claude Code session start — no telemetry, reads nothing about your session, installs nothing. `--disable-update-notify` / `MEDSCI_NO_UPDATE_CHECK=1` turn it off. *(Honest scope: the digest/attestation detect transport tampering, not a compromised publisher account — see `SECURITY.md`.)*
|
|
321
325
|
|
|
322
|
-
**v4.6** is a maintainability, governance, and review-depth release — still 45 skills /
|
|
326
|
+
**v4.6** is a maintainability, governance, and review-depth release — still 45 skills / 46 guidelines; analysis-integrity detectors **28 → 30**, domain probes 11 → 12:
|
|
323
327
|
|
|
324
328
|
- **Fairness / equity / subgroup-performance probe (EQ0–EQ6)** for AI/prediction/diagnostic studies that claim cross-population performance, plus two new detectors: an **AI-disclosure + data/code-availability** check (`/sync-submission`) and a **structured-summary-box conformance** check (`/academic-aio`).
|
|
325
329
|
- **Governance + answer-engine layer:** `ROADMAP.md`, `MAINTAINERS.md`, `SECURITY.md`, a maintainer workflow + release checklist, an AEO/GEO `docs/faq.md`, a "Start here: 3 workflows" + "Validation status" section in this README, and a new `maturity` field (official / experimental / community) on every skill.
|
|
326
330
|
- **Token diet (pilot):** `write-paper` Phase 7 integrity audits moved to a load-on-demand reference (~2,559 tokens saved per invocation). Positioning now leads with the compliance moat rather than skill count.
|
|
327
331
|
|
|
328
|
-
**v4.5** deepens the review + submission surface with no new skill or reporting-guideline count (still 45 skills /
|
|
332
|
+
**v4.5** deepens the review + submission surface with no new skill or reporting-guideline count (still 45 skills / 46 guidelines); analysis-integrity detectors **27 → 28**:
|
|
329
333
|
|
|
330
334
|
- **`/clean-data` + `/analyze-stats` — reverse-coded-item / negative-alpha detector.** A multi-item Likert scale with a negatively-worded item must be recoded `(min+max) − x` before the scale total or Cronbach's alpha is computed; left un-recoded, the item correlates negatively with the rest of the scale and alpha collapses (often negative). A negative alpha is a coding bug, not a "multidimensional construct." New stdlib-only `check_reverse_coding.py` returns `REVERSE_CODING_LIKELY` / `REVERSE_CODING_SUSPECT` / `OK` from per-item item-rest correlations + raw alpha; the Likert summary template gains a `--reverse-items` recode flag.
|
|
331
335
|
- **`/peer-review` + `/self-review` — SR/MA + DTA + prediction-model probe batch.** `sr_ma.md` **P12** risk-of-bias table row-sum ↔ traffic-light figure-matrix reconciliation and **P13** included-study ↔ reference-list completeness; `diagnostic_accuracy.md` **D7** index-test-as-enrollment-criterion circularity; `clinical_prediction_model.md` **CP5** intended-use horizon leakage and **CP6** development/CV vs held-out/external validation-nomenclature conflation. Vendored byte-identical into `/self-review`.
|
|
332
336
|
- **`/sync-submission` — embedded absolute-path leak scan.** A `word/*.xml` attribute (e.g. a pandoc-embedded image's `<pic:cNvPr descr="…">`) carrying an absolute home-dir path (`/Users/…`, `/home/…`) is a username leak invisible to a rendered-text scan; now flagged as `docx_embedded_abs_path` under `check_asset_anonymization.py`.
|
|
333
337
|
|
|
334
|
-
**v4.4** adds reviewer/analysis depth with no new skill or reporting-guideline count (still 45 skills /
|
|
338
|
+
**v4.4** adds reviewer/analysis depth with no new skill or reporting-guideline count (still 45 skills / 46 guidelines / 27 detectors):
|
|
335
339
|
|
|
336
340
|
- **`/author-strategy` — trajectory-archetype classification (optional).** Classifies a queried author's PubMed trajectory into abstract career archetypes (A1 infrastructure builder, A2 methodology rule-maker, A3 clinical→AI hybrid, A4 SR/MA volume engine, A5 large-consortium participation, A6 device/technique depth, + a computed composite) as an **explainable, multi-label, confidence-scored heuristic — not an objective verdict**. The rubric is a single canonical YAML (the narrative doc is generated from it); scores exclude `unavailable` signals (h-index/citation/venue-tier → `[VERIFY]`, never fabricated); a **disambiguation gate** binds an approved `corpus_manifest.json` to the CSV (csv + PMID-set hashes) so a surname alone never classifies, and target-author attribution never borrows a co-author's ORCID/affiliation.
|
|
337
341
|
- **`/peer-review` + `/self-review` — Image-Synthesis / cross-modality probe (IS1–IS4)** for studies that synthesize one imaging modality from another and claim the output carries the target's information, plus a reviewer-side reference-integrity spot-check.
|
|
338
342
|
- **`/verify-refs` — OpenAlex tertiary index** recovers conference-proceedings / non-DOI citations (NeurIPS/ICLR/ACL) that fall through PubMed and CrossRef, the free analogue of a portal's second index.
|
|
339
343
|
|
|
340
|
-
**v4.3** hardens the **cross-sectional / observational cohort** review surface end-to-end, much of it reverse-engineered from real CC-BY cohort papers (learn-only under the license firewall) — no new skill or reporting-guideline count (still 45 skills /
|
|
344
|
+
**v4.3** hardens the **cross-sectional / observational cohort** review surface end-to-end, much of it reverse-engineered from real CC-BY cohort papers (learn-only under the license firewall) — no new skill or reporting-guideline count (still 45 skills / 46 guidelines); analysis-integrity detectors **25 → 27**:
|
|
341
345
|
|
|
342
346
|
- **Observational probes O1 → O14** (`/peer-review` + `/self-review`, vendored) — over-adjustment / analysis-unit clustering / outcome construct-validity (O7–O9), overlapping-subset gradient (O10), **complex-survey design & weighting** for NHANES/KNHANES (O11), **data-driven threshold / "inflection-point" mining** (O12), **cross-sectional mediation** temporal-order & sequential-ignorability (O13), and **interaction scale** — additive RERI/AP/S vs multiplicative (O14). Plus a new **clinical-prediction-model** probe module **CP1–CP4** and survival **S9** (panel-data / multistate variance).
|
|
343
347
|
- **Two new detectors (25 → 27)** — `check_wordcount_cap.py` (the revision-inflation trap: body vs journal cap) and `check_paren_spans.py` (em-dash→paren conversions that wrap a whole sentence). Plus a `check_confounding_completeness.py` upgrade (DB-code↔prose alias map, SMD-from-mean±SD, exposure-defining-covariate exemption), a `check_cohort_arithmetic.py` `ANALYSIS_UNIT_UNDISCLOSED` check, a `check_scope_coherence.py` cross-sectional-yield lexicon, and a verify-refs corporate/collective-author render-abort fix.
|
|
344
348
|
- **Analysis & submission tooling** — `/analyze-stats` gains **mediation** and **interaction & effect-modification** guides; `/sync-submission` gains `assemble_supplement.py` (S{N} index↔file integrity) and a `/revise` body-word-count exit gate; `/render-pdf-doc` gains a `scan_glyph_coverage.py` xelatex silent-glyph-drop scan.
|
|
345
349
|
|
|
346
|
-
**v4.2** builds out the case-report capability end-to-end, grounded in real CC-BY case reports (learn-only under the license firewall) — no new skill or reporting-guideline count (still 45 skills /
|
|
350
|
+
**v4.2** builds out the case-report capability end-to-end, grounded in real CC-BY case reports (learn-only under the license firewall) — no new skill or reporting-guideline count (still 45 skills / 46 guidelines); journal profiles **68 → 73**:
|
|
347
351
|
|
|
348
352
|
- **Case-report + case-series writing** — `/write-paper` gains a CARE narrative + 150-word-abstract case-report exemplar, a **case-series** paper type (methods-light mini-cohort, all-cases summary table, counts-not-rates), and **adverse-event/pharmacovigilance** (Naranjo/WHO-UMC causality) and **diagnostic-pitfall/mimic** subtypes.
|
|
349
353
|
- **Radiology / imaging-led track** — a dedicated `exemplar_case_report_radiology.md` (per-modality technique→findings→impression, structured-reporting lexicons BI-RADS/LI-RADS/PI-RADS/TI-RADS/Lung-RADS/O-RADS, quantitative threshold honesty, an interventional-radiology procedure/complication subtype, DICOM de-identification) plus a `/make-figures` annotated multimodality imaging-panel exemplar.
|
|
@@ -484,7 +488,7 @@ All 55 skills, grouped by where they fit in the clinical-manuscript and medical-
|
|
|
484
488
|
| **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. |
|
|
485
489
|
| **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`. |
|
|
486
490
|
| **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. |
|
|
487
|
-
| **check-reporting** | Manuscript compliance audit against
|
|
491
|
+
| **check-reporting** | Manuscript compliance audit against 46 reporting guidelines and risk of bias tools (STROBE, STROBE-MR, RECORD, STARD, STARD-AI, TRIPOD, TRIPOD+AI, TRIPOD-LLM, PGS-RS, CHEERS 2022, CROSS, SRQR, COREQ, PRISMA, 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-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. |
|
|
488
492
|
| **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. |
|
|
489
493
|
| **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. |
|
|
490
494
|
| **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. |
|
|
@@ -657,8 +661,8 @@ Projects declare their source-of-truth layout in `SSOT.yaml`, and a `qc/migratio
|
|
|
657
661
|
### Meta-Analysis Failure Modes
|
|
658
662
|
`/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).
|
|
659
663
|
|
|
660
|
-
###
|
|
661
|
-
`check-reporting` includes bundled checklists for
|
|
664
|
+
### 46 Reporting Guidelines & RoB Tools Built-in
|
|
665
|
+
`check-reporting` includes bundled checklists for 46 guidelines and risk-of-bias tools: STROBE, STROBE-MR, RECORD, STARD, STARD-AI, TRIPOD, TRIPOD+AI, TRIPOD-LLM, PGS-RS, CHEERS 2022, CROSS, SRQR, COREQ, PRISMA 2020, 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-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.
|
|
662
666
|
|
|
663
667
|
### Publication-Ready Output
|
|
664
668
|
`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.
|
|
@@ -573,8 +573,8 @@
|
|
|
573
573
|
},
|
|
574
574
|
{
|
|
575
575
|
"path": "skills/check-reporting/SKILL.md",
|
|
576
|
-
"size":
|
|
577
|
-
"sha256": "
|
|
576
|
+
"size": 40628,
|
|
577
|
+
"sha256": "ad375c3cc13ab13172c9e65af2a4afbb25278d0c8b56461e079b10a086ae8bde"
|
|
578
578
|
},
|
|
579
579
|
{
|
|
580
580
|
"path": "skills/check-reporting/references/LICENSES.md",
|
|
@@ -721,6 +721,11 @@
|
|
|
721
721
|
"size": 6530,
|
|
722
722
|
"sha256": "186000d9cd72e025ce483995735c05400450d9356f89f8f95b855d5815e925fa"
|
|
723
723
|
},
|
|
724
|
+
{
|
|
725
|
+
"path": "skills/check-reporting/references/checklists/REMARK.md",
|
|
726
|
+
"size": 6020,
|
|
727
|
+
"sha256": "bfe8781663c33fc8a906d2d07f790f7237012ca100351bf2676e0d1f7ec89e11"
|
|
728
|
+
},
|
|
724
729
|
{
|
|
725
730
|
"path": "skills/check-reporting/references/checklists/ROBINS_E.md",
|
|
726
731
|
"size": 8206,
|
|
@@ -796,6 +801,11 @@
|
|
|
796
801
|
"size": 3516,
|
|
797
802
|
"sha256": "118171e304491812709ee2311b1b968f8caac92e689431622a8fb81b2684e970"
|
|
798
803
|
},
|
|
804
|
+
{
|
|
805
|
+
"path": "skills/check-reporting/references/checklists/TARGET.md",
|
|
806
|
+
"size": 7406,
|
|
807
|
+
"sha256": "0ddbbe10245d902a191a23a5832d24ada3515314e3b08ce562dd12200356f452"
|
|
808
|
+
},
|
|
799
809
|
{
|
|
800
810
|
"path": "skills/check-reporting/references/checklists/TRIPOD.md",
|
|
801
811
|
"size": 8625,
|
|
@@ -813,8 +823,8 @@
|
|
|
813
823
|
},
|
|
814
824
|
{
|
|
815
825
|
"path": "skills/check-reporting/references/critical_item_floor.md",
|
|
816
|
-
"size":
|
|
817
|
-
"sha256": "
|
|
826
|
+
"size": 5323,
|
|
827
|
+
"sha256": "2c8aaf303bda8c5295ea13d3a41f3318ccbe65e053d23dcadc06f7fa5148e8fb"
|
|
818
828
|
},
|
|
819
829
|
{
|
|
820
830
|
"path": "skills/check-reporting/references/genai_image_study_object_decision_aid.md",
|
|
@@ -833,8 +843,8 @@
|
|
|
833
843
|
},
|
|
834
844
|
{
|
|
835
845
|
"path": "skills/check-reporting/scripts/check_checklist_exists.py",
|
|
836
|
-
"size":
|
|
837
|
-
"sha256": "
|
|
846
|
+
"size": 7051,
|
|
847
|
+
"sha256": "0fdefb2deb36ba3774d7255aa020e10409484be10113cdc16779fc95786abaf3"
|
|
838
848
|
},
|
|
839
849
|
{
|
|
840
850
|
"path": "skills/check-reporting/scripts/check_checklist_version.py",
|
|
@@ -2169,7 +2179,7 @@
|
|
|
2169
2179
|
{
|
|
2170
2180
|
"path": "skills/make-figures/references/reporting_guideline_figure_map.md",
|
|
2171
2181
|
"size": 7149,
|
|
2172
|
-
"sha256": "
|
|
2182
|
+
"sha256": "a5883b85fc772c0365137264ecc98c06cb9fb084f3cd2011d4c0f87324cf6fc1"
|
|
2173
2183
|
},
|
|
2174
2184
|
{
|
|
2175
2185
|
"path": "skills/make-figures/references/visual_abstract_templates/european_radiology.pptx",
|
|
@@ -3014,7 +3024,7 @@
|
|
|
3014
3024
|
{
|
|
3015
3025
|
"path": "skills/orchestrate/SKILL.md",
|
|
3016
3026
|
"size": 35203,
|
|
3017
|
-
"sha256": "
|
|
3027
|
+
"sha256": "ef8b919606efbf794d7ebe67b011bd676c129cd1d9d51bac16d85dcaaae5e12e"
|
|
3018
3028
|
},
|
|
3019
3029
|
{
|
|
3020
3030
|
"path": "skills/orchestrate/references/dialogue_nodes.md",
|
|
@@ -3038,8 +3048,8 @@
|
|
|
3038
3048
|
},
|
|
3039
3049
|
{
|
|
3040
3050
|
"path": "skills/peer-review/SKILL.md",
|
|
3041
|
-
"size":
|
|
3042
|
-
"sha256": "
|
|
3051
|
+
"size": 75710,
|
|
3052
|
+
"sha256": "484a289ceb990a3301fc3a8093c1e5fae2e8fb00e267d774e4d7df4e0591a748"
|
|
3043
3053
|
},
|
|
3044
3054
|
{
|
|
3045
3055
|
"path": "skills/peer-review/references/aczel_2021_reviewer2_patterns.md",
|
|
@@ -3063,8 +3073,8 @@
|
|
|
3063
3073
|
},
|
|
3064
3074
|
{
|
|
3065
3075
|
"path": "skills/peer-review/references/domain-probes/diagnostic_accuracy.md",
|
|
3066
|
-
"size":
|
|
3067
|
-
"sha256": "
|
|
3076
|
+
"size": 12675,
|
|
3077
|
+
"sha256": "06f8a8e6fcfaf00f25d04e98b58ddf3344ddc1d772057c401a83ef71d012be90"
|
|
3068
3078
|
},
|
|
3069
3079
|
{
|
|
3070
3080
|
"path": "skills/peer-review/references/domain-probes/equity_fairness.md",
|
|
@@ -3108,8 +3118,8 @@
|
|
|
3108
3118
|
},
|
|
3109
3119
|
{
|
|
3110
3120
|
"path": "skills/peer-review/references/domain-probes/observational_confounding.md",
|
|
3111
|
-
"size":
|
|
3112
|
-
"sha256": "
|
|
3121
|
+
"size": 35839,
|
|
3122
|
+
"sha256": "32343fb2ed0d20cb76593c8d07842d0628ce363a7c24a6739f10fa29b37e6398"
|
|
3113
3123
|
},
|
|
3114
3124
|
{
|
|
3115
3125
|
"path": "skills/peer-review/references/domain-probes/polygenic_risk_score.md",
|
|
@@ -3236,10 +3246,50 @@
|
|
|
3236
3246
|
"size": 3171,
|
|
3237
3247
|
"sha256": "2f548ccbe1ee101bf6630b4d363f15e4df0750a350788b26f177490496be74f6"
|
|
3238
3248
|
},
|
|
3249
|
+
{
|
|
3250
|
+
"path": "skills/peer-review/scripts/check_pdf_injection.py",
|
|
3251
|
+
"size": 10870,
|
|
3252
|
+
"sha256": "fcf33336f16dbfa92a0b5bbd5588b4026d3c89f21041733099d7a028e16e6bd3"
|
|
3253
|
+
},
|
|
3254
|
+
{
|
|
3255
|
+
"path": "skills/peer-review/scripts/check_pdf_injection_challenge/expected/clean.txt",
|
|
3256
|
+
"size": 113,
|
|
3257
|
+
"sha256": "9f37abe54221df614502f460030e15d30fd3d0573fcc5f3af47feac736614a8b"
|
|
3258
|
+
},
|
|
3259
|
+
{
|
|
3260
|
+
"path": "skills/peer-review/scripts/check_pdf_injection_challenge/expected/inject.txt",
|
|
3261
|
+
"size": 1228,
|
|
3262
|
+
"sha256": "bd5788f40f87e599caa5e9883fe1374b204008fb8de89a4781068a74a08ddb3b"
|
|
3263
|
+
},
|
|
3264
|
+
{
|
|
3265
|
+
"path": "skills/peer-review/scripts/check_pdf_injection_challenge/fixture/manifest_clean.json",
|
|
3266
|
+
"size": 553,
|
|
3267
|
+
"sha256": "bb67c4f241be5603b70743a2f443c8221ad69f48433ad4fa846845eaea70737d"
|
|
3268
|
+
},
|
|
3269
|
+
{
|
|
3270
|
+
"path": "skills/peer-review/scripts/check_pdf_injection_challenge/fixture/manifest_inject.json",
|
|
3271
|
+
"size": 1042,
|
|
3272
|
+
"sha256": "b77379a0e3ae35914528f8a0905bdaee887bcf5cce6913872c1d343d68da168b"
|
|
3273
|
+
},
|
|
3274
|
+
{
|
|
3275
|
+
"path": "skills/peer-review/scripts/check_pdf_injection_challenge/problem.md",
|
|
3276
|
+
"size": 2614,
|
|
3277
|
+
"sha256": "409bf859e9fafd5121ff5d7fb02c9e0b2bfcf818b8976acca1d0ab30b64ab1c6"
|
|
3278
|
+
},
|
|
3279
|
+
{
|
|
3280
|
+
"path": "skills/peer-review/scripts/check_pdf_injection_challenge/verify.sh",
|
|
3281
|
+
"size": 2187,
|
|
3282
|
+
"sha256": "6d149ab8d6737430937a0424dd4c66ea9332f25d83d1eca8e37104db33e97b0d"
|
|
3283
|
+
},
|
|
3284
|
+
{
|
|
3285
|
+
"path": "skills/peer-review/scripts/scan_pdf_layers.py",
|
|
3286
|
+
"size": 6216,
|
|
3287
|
+
"sha256": "0bccc9b86e6e8caa47cb7e1897618459abe376aef8264114d7c4795c358fe2c3"
|
|
3288
|
+
},
|
|
3239
3289
|
{
|
|
3240
3290
|
"path": "skills/peer-review/skill.yml",
|
|
3241
|
-
"size":
|
|
3242
|
-
"sha256": "
|
|
3291
|
+
"size": 2346,
|
|
3292
|
+
"sha256": "42bd6cc388a3802960ddf3e46b2ca226926bd4c9a779e6802b43e9fbb4172bac"
|
|
3243
3293
|
},
|
|
3244
3294
|
{
|
|
3245
3295
|
"path": "skills/polish-language/SKILL.md",
|
|
@@ -3728,8 +3778,8 @@
|
|
|
3728
3778
|
},
|
|
3729
3779
|
{
|
|
3730
3780
|
"path": "skills/self-review/references/domain-probes/diagnostic_accuracy.md",
|
|
3731
|
-
"size":
|
|
3732
|
-
"sha256": "
|
|
3781
|
+
"size": 12675,
|
|
3782
|
+
"sha256": "06f8a8e6fcfaf00f25d04e98b58ddf3344ddc1d772057c401a83ef71d012be90"
|
|
3733
3783
|
},
|
|
3734
3784
|
{
|
|
3735
3785
|
"path": "skills/self-review/references/domain-probes/equity_fairness.md",
|
|
@@ -3773,8 +3823,8 @@
|
|
|
3773
3823
|
},
|
|
3774
3824
|
{
|
|
3775
3825
|
"path": "skills/self-review/references/domain-probes/observational_confounding.md",
|
|
3776
|
-
"size":
|
|
3777
|
-
"sha256": "
|
|
3826
|
+
"size": 35839,
|
|
3827
|
+
"sha256": "32343fb2ed0d20cb76593c8d07842d0628ce363a7c24a6739f10fa29b37e6398"
|
|
3778
3828
|
},
|
|
3779
3829
|
{
|
|
3780
3830
|
"path": "skills/self-review/references/domain-probes/polygenic_risk_score.md",
|
|
@@ -3911,6 +3961,41 @@
|
|
|
3911
3961
|
"size": 6349,
|
|
3912
3962
|
"sha256": "431c5f14ad2c4f59e85b2a5e86150ac708d476e8f2f1da859d81953f522b2117"
|
|
3913
3963
|
},
|
|
3964
|
+
{
|
|
3965
|
+
"path": "skills/self-review/scripts/check_dta_denominators.py",
|
|
3966
|
+
"size": 7798,
|
|
3967
|
+
"sha256": "98c116aa7c42f045565e6e8a24df2b15751aef4a5e7e012ec7e5b5ec17a73850"
|
|
3968
|
+
},
|
|
3969
|
+
{
|
|
3970
|
+
"path": "skills/self-review/scripts/check_dta_denominators_challenge/expected/bad.txt",
|
|
3971
|
+
"size": 506,
|
|
3972
|
+
"sha256": "c784ee7acd5521c7789b6893f4b86deb5c9401e1b1195dc1b77be088af2dda96"
|
|
3973
|
+
},
|
|
3974
|
+
{
|
|
3975
|
+
"path": "skills/self-review/scripts/check_dta_denominators_challenge/expected/ok.txt",
|
|
3976
|
+
"size": 119,
|
|
3977
|
+
"sha256": "875e7cfd99ff0c4e2daa1270f9a5dce30597cc2e58e50c085b7c30d843d57fda"
|
|
3978
|
+
},
|
|
3979
|
+
{
|
|
3980
|
+
"path": "skills/self-review/scripts/check_dta_denominators_challenge/fixture/dta_bad.md",
|
|
3981
|
+
"size": 281,
|
|
3982
|
+
"sha256": "49ed72428ff7cbcc16470fad4f7e63ef20c529fff6a0866d26003cc6cb3f75c7"
|
|
3983
|
+
},
|
|
3984
|
+
{
|
|
3985
|
+
"path": "skills/self-review/scripts/check_dta_denominators_challenge/fixture/dta_ok.md",
|
|
3986
|
+
"size": 280,
|
|
3987
|
+
"sha256": "3ed363e1a00af0db022c522254788d76c3618becff8479b91e98fab52fa77760"
|
|
3988
|
+
},
|
|
3989
|
+
{
|
|
3990
|
+
"path": "skills/self-review/scripts/check_dta_denominators_challenge/problem.md",
|
|
3991
|
+
"size": 1584,
|
|
3992
|
+
"sha256": "fcb419b743fa08256f3098c9a96ee7277819e8b769732d7f4763053535af61a5"
|
|
3993
|
+
},
|
|
3994
|
+
{
|
|
3995
|
+
"path": "skills/self-review/scripts/check_dta_denominators_challenge/verify.sh",
|
|
3996
|
+
"size": 1410,
|
|
3997
|
+
"sha256": "3d6582b582ab5fef657dbb1e8b75a5d478669ccd88fff52e7ebe644ce5ba51f4"
|
|
3998
|
+
},
|
|
3914
3999
|
{
|
|
3915
4000
|
"path": "skills/self-review/scripts/check_editorial_impression.py",
|
|
3916
4001
|
"size": 22032,
|
|
@@ -3926,11 +4011,81 @@
|
|
|
3926
4011
|
"size": 5298,
|
|
3927
4012
|
"sha256": "342bc1126a420111da9c0fe38c6cd68cc45542b0e485202689d7219de9d80712"
|
|
3928
4013
|
},
|
|
4014
|
+
{
|
|
4015
|
+
"path": "skills/self-review/scripts/check_nested_group_comparison.py",
|
|
4016
|
+
"size": 6351,
|
|
4017
|
+
"sha256": "44a7d7ce9913dcf33386de3fae510bc2f1e388c59d338ae482028920b327b37a"
|
|
4018
|
+
},
|
|
4019
|
+
{
|
|
4020
|
+
"path": "skills/self-review/scripts/check_nested_group_comparison_challenge/expected/clean.txt",
|
|
4021
|
+
"size": 104,
|
|
4022
|
+
"sha256": "de4af34352139fba95d091bd65da9c34ffba15d205c1f5ebe53bf1eb23dbe01d"
|
|
4023
|
+
},
|
|
4024
|
+
{
|
|
4025
|
+
"path": "skills/self-review/scripts/check_nested_group_comparison_challenge/expected/nested.txt",
|
|
4026
|
+
"size": 301,
|
|
4027
|
+
"sha256": "497f6f5ce6604a8cce134a165d72768d5bb724458912f926a5cbfbbb22243671"
|
|
4028
|
+
},
|
|
4029
|
+
{
|
|
4030
|
+
"path": "skills/self-review/scripts/check_nested_group_comparison_challenge/fixture/clean.md",
|
|
4031
|
+
"size": 328,
|
|
4032
|
+
"sha256": "882880e171b845160d2f228a45d74fbab55ad9c65aa5ef0f19fc53ff5f4dbb92"
|
|
4033
|
+
},
|
|
4034
|
+
{
|
|
4035
|
+
"path": "skills/self-review/scripts/check_nested_group_comparison_challenge/fixture/nested.md",
|
|
4036
|
+
"size": 243,
|
|
4037
|
+
"sha256": "40d41141e8c60a8338f8e33ac2a597ec2ee4f42fa92ce3cc94cee7be20f52b2d"
|
|
4038
|
+
},
|
|
4039
|
+
{
|
|
4040
|
+
"path": "skills/self-review/scripts/check_nested_group_comparison_challenge/problem.md",
|
|
4041
|
+
"size": 1494,
|
|
4042
|
+
"sha256": "f02cff50c0c86f28ea144cb06b190420d9a02f2217d15c271157943b3f6a4984"
|
|
4043
|
+
},
|
|
4044
|
+
{
|
|
4045
|
+
"path": "skills/self-review/scripts/check_nested_group_comparison_challenge/verify.sh",
|
|
4046
|
+
"size": 1478,
|
|
4047
|
+
"sha256": "c84ba913c3ba0f4d9ecc9bf84a77836513314c967491c2bb0d8666b1baf0281e"
|
|
4048
|
+
},
|
|
3929
4049
|
{
|
|
3930
4050
|
"path": "skills/self-review/scripts/check_null_calibration.py",
|
|
3931
4051
|
"size": 8585,
|
|
3932
4052
|
"sha256": "e5bd71c515554b3acbaefd3807e584364a536dc6e1101bec5b524bc26b341309"
|
|
3933
4053
|
},
|
|
4054
|
+
{
|
|
4055
|
+
"path": "skills/self-review/scripts/check_paired_difference_estimator.py",
|
|
4056
|
+
"size": 6612,
|
|
4057
|
+
"sha256": "e4a4c4c59b7dc50a8eeace2a9dfa7ba988120b4ede5f307d9836c37b40a2b76f"
|
|
4058
|
+
},
|
|
4059
|
+
{
|
|
4060
|
+
"path": "skills/self-review/scripts/check_paired_difference_estimator_challenge/expected/bad.txt",
|
|
4061
|
+
"size": 550,
|
|
4062
|
+
"sha256": "3f9204146334e1f18c67997cb208d1e3702e9f2c7ed865f31f342c03ca962935"
|
|
4063
|
+
},
|
|
4064
|
+
{
|
|
4065
|
+
"path": "skills/self-review/scripts/check_paired_difference_estimator_challenge/expected/ok.txt",
|
|
4066
|
+
"size": 111,
|
|
4067
|
+
"sha256": "4706dc20a9e9391a032acf5b91ce71b6ec619174ffc7e676eee4fc2cf91d4e40"
|
|
4068
|
+
},
|
|
4069
|
+
{
|
|
4070
|
+
"path": "skills/self-review/scripts/check_paired_difference_estimator_challenge/fixture/paired_bad.md",
|
|
4071
|
+
"size": 257,
|
|
4072
|
+
"sha256": "a268c335cc776f26f6b366044d40d75538fba87e2730c58cc8cbeb66780f44eb"
|
|
4073
|
+
},
|
|
4074
|
+
{
|
|
4075
|
+
"path": "skills/self-review/scripts/check_paired_difference_estimator_challenge/fixture/paired_ok.md",
|
|
4076
|
+
"size": 287,
|
|
4077
|
+
"sha256": "0be43e775f0e6d45162c9d0dd23e591b916992f2abd041ff71483920cb4d8a90"
|
|
4078
|
+
},
|
|
4079
|
+
{
|
|
4080
|
+
"path": "skills/self-review/scripts/check_paired_difference_estimator_challenge/problem.md",
|
|
4081
|
+
"size": 1505,
|
|
4082
|
+
"sha256": "ede7ecbef797e18958abd037d3534f11b71e1027f87a3a99c310a24484da69ed"
|
|
4083
|
+
},
|
|
4084
|
+
{
|
|
4085
|
+
"path": "skills/self-review/scripts/check_paired_difference_estimator_challenge/verify.sh",
|
|
4086
|
+
"size": 1531,
|
|
4087
|
+
"sha256": "b3172bbdc15868b8d4f16534e1c0049ec8b694ac864f22a989ee00aa84d218e4"
|
|
4088
|
+
},
|
|
3934
4089
|
{
|
|
3935
4090
|
"path": "skills/self-review/scripts/check_panel_diversity.py",
|
|
3936
4091
|
"size": 15324,
|
|
@@ -3946,6 +4101,41 @@
|
|
|
3946
4101
|
"size": 17564,
|
|
3947
4102
|
"sha256": "007100ed2ec23d01a9352feae10c5af23e7b3e88d91bb7fda7c3c899772aaa85"
|
|
3948
4103
|
},
|
|
4104
|
+
{
|
|
4105
|
+
"path": "skills/self-review/scripts/check_reported_p_from_counts.py",
|
|
4106
|
+
"size": 8813,
|
|
4107
|
+
"sha256": "86771e8dfbad9d9680fa7cfd15cc98b63a247a318cd86c4162d852359c82a252"
|
|
4108
|
+
},
|
|
4109
|
+
{
|
|
4110
|
+
"path": "skills/self-review/scripts/check_reported_p_from_counts_challenge/expected/bad.txt",
|
|
4111
|
+
"size": 308,
|
|
4112
|
+
"sha256": "b9d0da79b8eedda2c8a17ef6852400e6b7adb5e556d561cf544c8a5e5a8fb875"
|
|
4113
|
+
},
|
|
4114
|
+
{
|
|
4115
|
+
"path": "skills/self-review/scripts/check_reported_p_from_counts_challenge/expected/ok.txt",
|
|
4116
|
+
"size": 112,
|
|
4117
|
+
"sha256": "cddb1acfec3c0a27e18c24755373a0bcb5521eae3d6ad6e97b06a03eabfafdbc"
|
|
4118
|
+
},
|
|
4119
|
+
{
|
|
4120
|
+
"path": "skills/self-review/scripts/check_reported_p_from_counts_challenge/fixture/p_bad.md",
|
|
4121
|
+
"size": 206,
|
|
4122
|
+
"sha256": "b22b3cae304a8986a9b9ec49377601dc96f791fbbc0e04cd8adaf7c9952707dc"
|
|
4123
|
+
},
|
|
4124
|
+
{
|
|
4125
|
+
"path": "skills/self-review/scripts/check_reported_p_from_counts_challenge/fixture/p_ok.md",
|
|
4126
|
+
"size": 205,
|
|
4127
|
+
"sha256": "15546bf0a9be157265dd3ec80be46d32b7fbe5386ad6e31ea6c16ea669abf3ac"
|
|
4128
|
+
},
|
|
4129
|
+
{
|
|
4130
|
+
"path": "skills/self-review/scripts/check_reported_p_from_counts_challenge/problem.md",
|
|
4131
|
+
"size": 1572,
|
|
4132
|
+
"sha256": "e2df6d50acbce0da65f1af6f767a63e7007a855f40e5ef7b549d8348bd830133"
|
|
4133
|
+
},
|
|
4134
|
+
{
|
|
4135
|
+
"path": "skills/self-review/scripts/check_reported_p_from_counts_challenge/verify.sh",
|
|
4136
|
+
"size": 1509,
|
|
4137
|
+
"sha256": "1a1fddcdef6d23a3c6e2f83c924180c2703355953223d5d82cd89e01615e436d"
|
|
4138
|
+
},
|
|
3949
4139
|
{
|
|
3950
4140
|
"path": "skills/self-review/scripts/check_reviewer_team_consistency.py",
|
|
3951
4141
|
"size": 15481,
|
|
@@ -3966,10 +4156,45 @@
|
|
|
3966
4156
|
"size": 13579,
|
|
3967
4157
|
"sha256": "c61bd5e485d2bce4a6efd7bf2a7980aa0d31ebecb876a7c6895fd12cb6bf7f1c"
|
|
3968
4158
|
},
|
|
4159
|
+
{
|
|
4160
|
+
"path": "skills/self-review/scripts/check_table_percentages.py",
|
|
4161
|
+
"size": 8674,
|
|
4162
|
+
"sha256": "102cc795660fd41c40219b006dc657edd8d77f9195cf5b8fd2e5e470d3c28f3a"
|
|
4163
|
+
},
|
|
4164
|
+
{
|
|
4165
|
+
"path": "skills/self-review/scripts/check_table_percentages_challenge/expected/bad.txt",
|
|
4166
|
+
"size": 301,
|
|
4167
|
+
"sha256": "6fed046d75f3a02818e0a3ac4aa0ad907b17eab7e05e9629467e1d54bea51856"
|
|
4168
|
+
},
|
|
4169
|
+
{
|
|
4170
|
+
"path": "skills/self-review/scripts/check_table_percentages_challenge/expected/ok.txt",
|
|
4171
|
+
"size": 112,
|
|
4172
|
+
"sha256": "2fb34506bf65909fdb040acf085c4c18810b52497b6b1a53a2e08509a4465fd8"
|
|
4173
|
+
},
|
|
4174
|
+
{
|
|
4175
|
+
"path": "skills/self-review/scripts/check_table_percentages_challenge/fixture/table_bad.md",
|
|
4176
|
+
"size": 121,
|
|
4177
|
+
"sha256": "841bcb7d75c8e51512c59de171d82c9959b72976eef29f631ba9440c873357d6"
|
|
4178
|
+
},
|
|
4179
|
+
{
|
|
4180
|
+
"path": "skills/self-review/scripts/check_table_percentages_challenge/fixture/table_ok.md",
|
|
4181
|
+
"size": 235,
|
|
4182
|
+
"sha256": "ea5999c08b15a928606ca154c504545ed5804e45bade45ffca4d12b5849cc0bc"
|
|
4183
|
+
},
|
|
4184
|
+
{
|
|
4185
|
+
"path": "skills/self-review/scripts/check_table_percentages_challenge/problem.md",
|
|
4186
|
+
"size": 2072,
|
|
4187
|
+
"sha256": "0af0e84599a8ac52a33ce33bc3244803ccc34d6f8f7f8de24234ac3b64a9a61a"
|
|
4188
|
+
},
|
|
4189
|
+
{
|
|
4190
|
+
"path": "skills/self-review/scripts/check_table_percentages_challenge/verify.sh",
|
|
4191
|
+
"size": 2041,
|
|
4192
|
+
"sha256": "b4c9eb16f291841c1d6dc74a5554a49b5dc60d3562d0e328e01a78797f8d32ad"
|
|
4193
|
+
},
|
|
3969
4194
|
{
|
|
3970
4195
|
"path": "skills/self-review/skill.yml",
|
|
3971
|
-
"size":
|
|
3972
|
-
"sha256": "
|
|
4196
|
+
"size": 3278,
|
|
4197
|
+
"sha256": "84ea9430003ffc8f1b2e009600ac3b4614abb84a697ec1891a39086aa65fe404"
|
|
3973
4198
|
},
|
|
3974
4199
|
{
|
|
3975
4200
|
"path": "skills/setup-medsci/SKILL.md",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "medsci-skills",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.20.0",
|
|
4
4
|
"description": "MedSci Skills — a medical/scientific research skill suite for AI coding agents (Claude Code, Codex, Cursor, Copilot). The npm package is a terminal-friendly installer shortcut; the canonical distribution remains the GitHub repository and the Claude Code plugin marketplace.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"homepage": "https://github.com/Aperivue/medsci-skills#readme",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: check-reporting
|
|
3
|
-
description: Check manuscript compliance with medical research reporting guidelines. Supports
|
|
4
|
-
triggers: checklist, reporting guideline, STROBE, STROBE-MR, Mendelian randomization, CONSORT, CONSORT-AI, STARD, STARD-AI, TRIPOD, TRIPOD-LLM, PGS-RS, PRS-RS, polygenic risk score, polygenic score, PRISMA, PRISMA-DTA, PRISMA-P, PRISMA-ScR, scoping review, scoping, evidence map, ARRIVE, CARE, CLAIM, DECIDE-AI, MI-CLEAR-LLM, SPIRIT, SPIRIT-AI, QUADAS, QUADAS-C, RoB, ROBINS, ROBINS-E, ROBIS, ROB-ME, PROBAST, NOS, COSMIN, AMSTAR, SWiM, CHEERS, economic evaluation, cost-effectiveness, cost-utility, QALY, ICER, RECORD, RECORD-PE, routinely-collected data, registry, claims, electronic health records, EHR, real-world data, CROSS, CHERRIES, survey, questionnaire, KAP, e-survey, response rate, SRQR, COREQ, qualitative research, interviews, focus groups, thematic analysis, grounded theory, reflexivity, risk of bias, compliance check, LLM accuracy, large language model, clinical deployment
|
|
3
|
+
description: Check manuscript compliance with medical research reporting guidelines. Supports 46 guidelines including STROBE, STROBE-MR, RECORD, REMARK (prognostic tumor-marker studies), TARGET (target trial emulation), CONSORT, CONSORT-AI, STARD, STARD-AI, TRIPOD, TRIPOD+AI, TRIPOD-LLM, PGS-RS, ARRIVE, PRISMA, PRISMA-DTA, PRISMA-P, PRISMA-ScR (scoping reviews), CARE, SPIRIT, SPIRIT-AI, CLAIM, DECIDE-AI, MI-CLEAR-LLM, SQUIRE 2.0, CLEAR, MOOSE, GRRAS, SWiM, AMSTAR 2, CHEERS 2022, CROSS (survey studies), SRQR and COREQ (qualitative research), and risk of bias tools (QUADAS-2, QUADAS-C, RoB 2, ROBINS-I, ROBINS-E, ROBIS, ROB-ME, PROBAST, PROBAST+AI, NOS, COSMIN, RoB NMA). Generates item-by-item assessment with PRESENT/MISSING/PARTIAL status.
|
|
4
|
+
triggers: checklist, reporting guideline, STROBE, STROBE-MR, Mendelian randomization, CONSORT, CONSORT-AI, STARD, STARD-AI, TRIPOD, TRIPOD-LLM, PGS-RS, PRS-RS, polygenic risk score, polygenic score, PRISMA, PRISMA-DTA, PRISMA-P, PRISMA-ScR, scoping review, scoping, evidence map, ARRIVE, CARE, CLAIM, DECIDE-AI, MI-CLEAR-LLM, SPIRIT, SPIRIT-AI, QUADAS, QUADAS-C, RoB, ROBINS, ROBINS-E, ROBIS, ROB-ME, PROBAST, NOS, COSMIN, AMSTAR, SWiM, CHEERS, economic evaluation, cost-effectiveness, cost-utility, QALY, ICER, RECORD, RECORD-PE, routinely-collected data, registry, claims, electronic health records, EHR, real-world data, CROSS, CHERRIES, survey, questionnaire, KAP, e-survey, response rate, SRQR, COREQ, qualitative research, interviews, focus groups, thematic analysis, grounded theory, reflexivity, REMARK, tumor marker, prognostic marker, prognostic biomarker, molecular residual disease, TARGET, target trial emulation, target trial, causal inference, estimand, immortal time bias, risk of bias, compliance check, LLM accuracy, large language model, clinical deployment
|
|
5
5
|
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
6
6
|
model: inherit
|
|
7
7
|
---
|
|
@@ -35,6 +35,8 @@ compliance report suitable for journal submission.
|
|
|
35
35
|
- `PRISMA_ScR.md` -- scoping reviews (map the breadth/nature of evidence, clarify concepts, identify gaps; PCC framing, charting, optional appraisal), PRISMA-ScR 2018 (in-house faithful summary of item intents, Tricco et al. Ann Intern Med 2018; DOI 10.7326/M18-0850)
|
|
36
36
|
- `SRQR.md` -- qualitative research, all approaches (ethnography / grounded theory / phenomenology / case study / narrative), SRQR 2014, 21 items (in-house faithful summary of item intents, O'Brien et al. Acad Med 2014; DOI 10.1097/ACM.0000000000000388)
|
|
37
37
|
- `COREQ.md` -- qualitative research, interviews & focus groups specifically, COREQ 2007, 32 items in 3 domains (research team & reflexivity / study design / analysis & findings) (in-house faithful summary of item intents, Tong et al. Int J Qual Health Care 2007; DOI 10.1093/intqhc/mzm042)
|
|
38
|
+
- `REMARK.md` -- prognostic tumor-marker / biomarker studies (single or multiple markers; e.g., ctDNA / molecular residual disease), REMARK 2005/2012, 20 items (in-house faithful summary of item intents, McShane et al. Br J Cancer 2005 + Altman et al. PLoS Med 2012)
|
|
39
|
+
- `TARGET.md` -- observational studies emulating a target trial (causal / comparative-effectiveness questions on routinely-collected / registry / EHR data), TARGET 2025, 21 items (in-house faithful summary of item intents, Cashin/Hansford/Hernán et al. JAMA 2025; pairs with the /design-study target-trial-emulation module)
|
|
38
40
|
- `PRISMA_2020.md` -- systematic reviews (CC BY)
|
|
39
41
|
- `ARRIVE_2.md` -- animal studies (CC0)
|
|
40
42
|
- `PRISMA_DTA.md` -- DTA systematic reviews (CC BY, McInnes et al. JAMA 2018)
|
|
@@ -103,6 +105,8 @@ user specification.
|
|
|
103
105
|
| Diagnostic accuracy study | STARD 2015 | STARD-AI |
|
|
104
106
|
| Prediction model (development/validation) | TRIPOD | TRIPOD+AI |
|
|
105
107
|
| Polygenic (risk) score prediction study | PGS-RS (with TRIPOD / TRIPOD+AI) | -- |
|
|
108
|
+
| Prognostic tumor-marker / biomarker study (single or multiple markers; e.g., ctDNA / molecular residual disease) | REMARK (pair with STROBE for the observational-design items; TRIPOD / TRIPOD+AI if a prognostic model is developed) | -- |
|
|
109
|
+
| Causal / comparative-effectiveness question emulated on observational data (treatment vs treatment, screening vs none, drug A vs B on registry / EHR / claims data) | TARGET (pair with the /design-study target-trial-emulation module for design; RECORD / STROBE for the routinely-collected-data items) | -- |
|
|
106
110
|
| Systematic review / meta-analysis | PRISMA 2020 | -- |
|
|
107
111
|
| DTA systematic review / meta-analysis | PRISMA-DTA | -- |
|
|
108
112
|
| Meta-analysis of observational studies | MOOSE | PRISMA 2020 (use both) |
|