medsci-skills 5.23.0 → 5.24.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.
Files changed (73) hide show
  1. package/README.md +5 -1
  2. package/metadata/distribution_files.json +110 -75
  3. package/metadata/distribution_manifest.json +1 -1
  4. package/package.json +1 -1
  5. package/skills/academic-aio/SKILL.md +8 -0
  6. package/skills/check-reporting/SKILL.md +8 -0
  7. package/skills/contribute/tests/test_contribution_safety.sh +2 -2
  8. package/skills/define-variables/SKILL.md +8 -0
  9. package/skills/find-journal/references/journal_profiles/AJKD.md +34 -0
  10. package/skills/find-journal/references/journal_profiles/JASN.md +34 -0
  11. package/skills/find-journal/references/journal_profiles/Kidney_International.md +34 -0
  12. package/skills/humanize/SKILL.md +8 -0
  13. package/skills/humanize/scripts/check_sentence_variety.py +43 -1
  14. package/skills/humanize/tests/fixtures/variety_long_within_bound.md +3 -0
  15. package/skills/humanize/tests/fixtures/variety_overlong.md +3 -0
  16. package/skills/humanize/tests/test_sentence_variety.sh +45 -0
  17. package/skills/make-figures/SKILL.md +8 -0
  18. package/skills/manage-refs/SKILL.md +35 -10
  19. package/skills/manage-refs/citation_styles/README.md +31 -3
  20. package/skills/manage-refs/citation_styles/american-medical-association.csl +298 -0
  21. package/skills/manage-refs/references/check_xref_symptoms.md +40 -1
  22. package/skills/manage-refs/scripts/check_citation_keys.py +38 -3
  23. package/skills/manage-refs/scripts/check_xref.py +122 -15
  24. package/skills/manage-refs/scripts/fill_journal_abbrev.py +11 -2
  25. package/skills/manage-refs/scripts/pre_submission_gate.sh +6 -2
  26. package/skills/manage-refs/tests/fixtures/pre_submission_gate/run.sh +10 -4
  27. package/skills/manage-refs/tests/test_citation_key_boundaries.sh +114 -0
  28. package/skills/manage-refs/tests/test_journal_abbrev_parsing.sh +107 -0
  29. package/skills/manage-refs/tests/test_xref_plural_citations.sh +119 -0
  30. package/skills/manage-refs/tests/test_xref_separate_supplement.sh +140 -0
  31. package/skills/meta-analysis/references/phase4_extraction_detail.md +1 -1
  32. package/skills/orchestrate/SKILL.md +8 -0
  33. package/skills/peer-review/SKILL.md +9 -1
  34. package/skills/peer-review/references/domain-probes/observational_confounding.md +1 -1
  35. package/skills/polish-language/scripts/lint_consistency.py +27 -0
  36. package/skills/polish-language/tests/test_numeral_designators.sh +84 -0
  37. package/skills/present-paper/SKILL.md +8 -0
  38. package/skills/present-paper/scripts/check_slide_tells.py +26 -2
  39. package/skills/present-paper/tests/test_slide_page_numbers.sh +72 -0
  40. package/skills/render-pdf-doc/SKILL.md +16 -2
  41. package/skills/revise/SKILL.md +5 -2
  42. package/skills/self-review/SKILL.md +15 -2
  43. package/skills/self-review/references/domain-probes/observational_confounding.md +1 -1
  44. package/skills/self-review/references/phases/phase2_5d_xref_qc.md +14 -5
  45. package/skills/self-review/scripts/_qc_findings.py +57 -4
  46. package/skills/self-review/scripts/check_claim_artifact.py +8 -1
  47. package/skills/self-review/scripts/check_figure_citation.py +38 -15
  48. package/skills/self-review/scripts/check_table_percentages.py +34 -2
  49. package/skills/self-review/scripts/refinement_stop.py +11 -0
  50. package/skills/self-review/tests/fixtures/claim_body_reassign.md +3 -0
  51. package/skills/self-review/tests/fixtures/claim_frontmatter_changelog.md +15 -0
  52. package/skills/self-review/tests/fixtures/supplement_pii_clean.md +1 -1
  53. package/skills/self-review/tests/fixtures/supplement_pii_tie.md +1 -1
  54. package/skills/self-review/tests/test_claim_artifact.sh +17 -0
  55. package/skills/self-review/tests/test_figure_citation_labels.sh +122 -0
  56. package/skills/self-review/tests/test_qc_severity_vocabulary.sh +94 -0
  57. package/skills/self-review/tests/test_table_percent_denominator.sh +116 -0
  58. package/skills/sync-submission/scripts/check_asset_anonymization.py +15 -2
  59. package/skills/sync-submission/scripts/check_credit_integrity.py +1 -1
  60. package/skills/sync-submission/scripts/check_wordcount_cap.py +23 -3
  61. package/skills/sync-submission/tests/test_anonymization_config_scan.sh +74 -0
  62. package/skills/sync-submission/tests/test_wordcount_heading_forms.sh +85 -0
  63. package/skills/verify-refs/scripts/verify_refs.py +78 -21
  64. package/skills/verify-refs/tests/test_bib_last_field.sh +137 -0
  65. package/skills/verify-refs/tests/test_bibtex_et_al.sh +101 -0
  66. package/skills/write-paper/SKILL.md +9 -1
  67. package/skills/write-paper/references/journal_profiles/AJKD.md +138 -0
  68. package/skills/write-paper/references/journal_profiles/JASN.md +131 -0
  69. package/skills/write-paper/references/journal_profiles/Kidney_International.md +122 -0
  70. package/skills/write-paper/references/phase7_polish_detail.md +12 -5
  71. package/skills/write-paper/scripts/build_title_page_affiliations.py +6 -6
  72. package/skills/write-paper/tests/test_title_page_affiliations.sh +11 -11
  73. package/skills/write-protocol/SKILL.md +8 -0
package/README.md CHANGED
@@ -301,6 +301,8 @@ The E2E pipeline (`orchestrate --e2e`) produces everything up to `qc/`. The `sub
301
301
 
302
302
  ## What's New
303
303
 
304
+ **v5.24.0** — a precision release: the gates were wrong about correct work. Fourteen shipped detectors were telling users something false, and the pattern behind most of them is one thing — a checker that accepts only its own generator's output and rejects the notation the world actually uses. `check_xref` did not recognise **"Figures 1 and 2"**, so a float cited the ordinary way scored `UNCITED` and the submission blocker **turned itself off** (`submission_safe: true` on a package missing a figure). `verify_refs` read BibTeX's own **`and others`** — the et-al. every reference manager writes — as `AUTHOR MISMATCH`, the render-aborting verdict, on correct consortium references; and an entry whose **last** field was the DOI parsed as having none, silently disabling the CrossRef and author cross-checks that skill exists to perform. `check_table_percentages` **invented a denominator** for the most common table in clinical research and printed specific wrong replacement percentages at MAJOR. `lint_consistency` advised writing **"type two diabetes"**. `check_asset_anonymization` passed a **double-blind institution leak** because it sat in a `.yaml`. `check_slide_tells` flagged the page numbers **this repository's own template generator** writes. `fill_journal_abbrev.py` had **never run** — it raised on its first entry, for every input, while another gate named it to the user as the remedy. And `refinement_stop` called a leftover `TODO` an *optional Minor* and told the loop to stop. Also: the release job's own failure had left v5.23.0 with **zero assets** and npm a version behind, with no way to retry a pushed tag — now create-or-update, outcome-asserted, and dispatchable; two of the four documented install paths were broken, and the worse one **succeeded** while making `~/.claude/skills` itself the skill; and the front page said **36** detectors while the catalog, the audit document and the paper said 84. Every fix ships a regression test that goes red against the previous behaviour. No new skill or detector; **58 skills / 47 guidelines / 84 integrity detectors / 23 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.23.)
305
+
304
306
  **v5.21** — verification-layer batch, mostly promoted from real submission failures. A **marked (tracked-changes) manuscript** is now built by driving Word's Compare from the command line and proved by a **round trip** — accepting every revision must reproduce the revised paper exactly, rejecting every revision must reproduce the original — and the gate is **move-aware**, because Word encodes a relocated paragraph as `w:moveFrom`/`w:moveTo` and an insert-and-delete-only verifier calls a good file corrupt. Every detector's `qc/*.json` now **names the detector that wrote it**, so an artifact can be traced back to the check that produced it (a CI-enforced contract). Two `/verify-refs` precision defects: a Unicode hyphen in a surname fired `MISMATCH` — the verdict that means *fabricated author* — on a correct reference, and a Better BibTeX brace-protected surname was read as a corporate author, **silently skipping** the author check the tool exists to perform. New gates: publisher markup in a `.bib` title (`<scp>WHO</scp>` renders as garbage and no gate looked at the printed title), **complete/quasi separation** before a logistic model is fitted (a pathognomonic sign has an empty cell by construction; `glm` returns OR = 0.00, *p* = 0.99, and an AUC that gets reported), and a probe + gate for manuscripts claiming a system **improved itself** (which rung of the verification hierarchy said so?). `/find-cohort-gap` now accepts a **local codebook** — an institutional registry or EMR export, not only a named public cohort — enumerating variables verbatim with provenance rather than letting a model summarise them. Additive and backward-compatible; **55 skills / 46 guidelines / 61 integrity detectors / 23 domain-probe modules**. (See the [CHANGELOG](CHANGELOG.md) for v5.0–v5.20.)
305
307
 
306
308
  **v5.20.1** — audit-driven coherence fixes. A real `/orchestrate --e2e` state-transition bug (the pipeline halted at step 3 because it required a DOCX that is only rendered at step 7), all 55 skills made routable from the single entry point with a CI reachability gate, and a README plugin-count that had drifted from the marketplace SSOT (now gated). No skill/detector change.
@@ -416,7 +418,7 @@ Earlier in this series: analysis-integrity guards (confounding completeness, cla
416
418
  | **Battle-tested** | Used on real manuscript submissions by a practicing physician-researcher | Unknown provenance and validation |
417
419
  | **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 |
418
420
 
419
- **MedSci-Audit** — the verification edge in the first rows above is a named suite of **36 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.
421
+ **MedSci-Audit** — the verification edge in the first rows above is a named suite of **84 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.
420
422
 
421
423
  ---
422
424
 
@@ -592,6 +594,7 @@ MedSci Skills가 설치됐는지 확인하고, 오늘 실습에 쓸 대표 스
592
594
 
593
595
  ```bash
594
596
  git clone https://github.com/Aperivue/medsci-skills.git
597
+ mkdir -p ~/.claude/skills
595
598
  cp -r medsci-skills/skills/* ~/.claude/skills/
596
599
  ```
597
600
 
@@ -599,6 +602,7 @@ cp -r medsci-skills/skills/* ~/.claude/skills/
599
602
 
600
603
  ```bash
601
604
  git clone https://github.com/Aperivue/medsci-skills.git
605
+ mkdir -p ~/.claude/skills
602
606
  cp -r medsci-skills/skills/check-reporting ~/.claude/skills/
603
607
  ```
604
608
 
@@ -83,8 +83,8 @@
83
83
  },
84
84
  {
85
85
  "path": "skills/academic-aio/SKILL.md",
86
- "size": 32276,
87
- "sha256": "d893714e70af45b6f9d162d5220875685995e4a2c428331348689566e672989c"
86
+ "size": 32767,
87
+ "sha256": "5ed6874b7aa1036b1867f96149247eebffb2e61332c39696027811530de5282f"
88
88
  },
89
89
  {
90
90
  "path": "skills/academic-aio/references/ai_tool_citation_framing.md",
@@ -633,8 +633,8 @@
633
633
  },
634
634
  {
635
635
  "path": "skills/check-reporting/SKILL.md",
636
- "size": 39537,
637
- "sha256": "0a291a80d8d98e2930683990bdfde14bff341a900f79a7b002f167cda86c1226"
636
+ "size": 40028,
637
+ "sha256": "8b0de01f805febed31de0218f64ebcbde0cc8b5fb89efb7ace3bab79c468b270"
638
638
  },
639
639
  {
640
640
  "path": "skills/check-reporting/references/LICENSES.md",
@@ -1028,8 +1028,8 @@
1028
1028
  },
1029
1029
  {
1030
1030
  "path": "skills/define-variables/SKILL.md",
1031
- "size": 10800,
1032
- "sha256": "10d32f068440d9b55b26c884e0bbd0f183cbceb52d3ec8c078d18d9dd23851d8"
1031
+ "size": 11291,
1032
+ "sha256": "bcbc6775dbb73d0e456076796764f1c540704c47dcc08ba98c8dae7b3b4a06d2"
1033
1033
  },
1034
1034
  {
1035
1035
  "path": "skills/define-variables/references/common_definitions.md",
@@ -1396,6 +1396,11 @@
1396
1396
  "size": 6869,
1397
1397
  "sha256": "620ba1c55272908a16125ba69074491df5246d6cf9afa14e6b08a08e8dc4e866"
1398
1398
  },
1399
+ {
1400
+ "path": "skills/find-journal/references/journal_profiles/AJKD.md",
1401
+ "size": 1764,
1402
+ "sha256": "4852b353847a9fa166a9b874be9cd4dc90231e791a3b4ca86835872fcf54c0f1"
1403
+ },
1399
1404
  {
1400
1405
  "path": "skills/find-journal/references/journal_profiles/AJNR.md",
1401
1406
  "size": 1451,
@@ -1551,6 +1556,11 @@
1551
1556
  "size": 1796,
1552
1557
  "sha256": "0bd38b7ae4139a856c6aba5917d3444e2e86e16bb0a5f7f41869600174e00648"
1553
1558
  },
1559
+ {
1560
+ "path": "skills/find-journal/references/journal_profiles/JASN.md",
1561
+ "size": 2133,
1562
+ "sha256": "5f7311ff8e8270caaaf8a3c22a16cf185a6cb034f58f222ca3ca1f60c635eb79"
1563
+ },
1554
1564
  {
1555
1565
  "path": "skills/find-journal/references/journal_profiles/JCSM.md",
1556
1566
  "size": 3969,
@@ -1616,6 +1626,11 @@
1616
1626
  "size": 4061,
1617
1627
  "sha256": "0849de001a47038b8bfc92b337285372c80ccf4861162cae876295d82ea4f1c8"
1618
1628
  },
1629
+ {
1630
+ "path": "skills/find-journal/references/journal_profiles/Kidney_International.md",
1631
+ "size": 1871,
1632
+ "sha256": "60792a1f6b5466bb7ca740904f123c62cb54c9ddb7cea422a89ed2768d02b51d"
1633
+ },
1619
1634
  {
1620
1635
  "path": "skills/find-journal/references/journal_profiles/Korean_Circulation_Journal.md",
1621
1636
  "size": 2567,
@@ -1888,8 +1903,8 @@
1888
1903
  },
1889
1904
  {
1890
1905
  "path": "skills/humanize/SKILL.md",
1891
- "size": 18644,
1892
- "sha256": "9bdaaa4d13c360022388b89c9fdc4fb16864ffa2d999e815f2acf48f6b7c9dcb"
1906
+ "size": 19135,
1907
+ "sha256": "0372a021d140a8fb6be3ab5eac67ef8cdcb6e525f0c5b8202e259dfe42ad5d3f"
1893
1908
  },
1894
1909
  {
1895
1910
  "path": "skills/humanize/references/ai_patterns.md",
@@ -1903,8 +1918,8 @@
1903
1918
  },
1904
1919
  {
1905
1920
  "path": "skills/humanize/scripts/check_sentence_variety.py",
1906
- "size": 7643,
1907
- "sha256": "a5091ebca81761341e95d61b01b9998e637763f414c22d31eec658f6b6376835"
1921
+ "size": 10498,
1922
+ "sha256": "aeb0ac10a9889087301206c2024dc90368bd6165547023594646e5d403e2c473"
1908
1923
  },
1909
1924
  {
1910
1925
  "path": "skills/humanize/skill.yml",
@@ -1958,8 +1973,8 @@
1958
1973
  },
1959
1974
  {
1960
1975
  "path": "skills/make-figures/SKILL.md",
1961
- "size": 47581,
1962
- "sha256": "0d3955068a6bbe1d8b3be5b4d6fcb09636c87b65147793500c49330a49df9619"
1976
+ "size": 48072,
1977
+ "sha256": "e343de9c90b9d36dae85a580305daa6cb769f67e0f8484f2db0365b64f2e37ad"
1963
1978
  },
1964
1979
  {
1965
1980
  "path": "skills/make-figures/references/critic_rubrics/data_plot.md",
@@ -2488,19 +2503,24 @@
2488
2503
  },
2489
2504
  {
2490
2505
  "path": "skills/manage-refs/SKILL.md",
2491
- "size": 19110,
2492
- "sha256": "1f23594657e523540fafb94b0292d73604df0c3348c6fb569334978dcdbed4ac"
2506
+ "size": 20729,
2507
+ "sha256": "16a7ddf4412580c0797baa52821054114f434b82b302a6d67fec023d56427a8d"
2493
2508
  },
2494
2509
  {
2495
2510
  "path": "skills/manage-refs/citation_styles/README.md",
2496
- "size": 2205,
2497
- "sha256": "d957bbdd13df10884fd54f9eb4efb096a73824c69167f872b0cb9819be031cdf"
2511
+ "size": 4358,
2512
+ "sha256": "b8935886559c1491a8aa06f8f809f82a492bfc0fceb4b32f2fbc19ccc379e83f"
2498
2513
  },
2499
2514
  {
2500
2515
  "path": "skills/manage-refs/citation_styles/american-journal-of-roentgenology.csl",
2501
2516
  "size": 6944,
2502
2517
  "sha256": "62db40358fd006af9109490ba358489096d18a8d48026077ed4502e5d44af61a"
2503
2518
  },
2519
+ {
2520
+ "path": "skills/manage-refs/citation_styles/american-medical-association.csl",
2521
+ "size": 11575,
2522
+ "sha256": "d70f843d93c2b1e8c59c0e26e2396bea4ed99fb4a1aac69b6dddc249a10fadf7"
2523
+ },
2504
2524
  {
2505
2525
  "path": "skills/manage-refs/citation_styles/cardiovascular-and-interventional-radiology.csl",
2506
2526
  "size": 1299,
@@ -2578,8 +2598,8 @@
2578
2598
  },
2579
2599
  {
2580
2600
  "path": "skills/manage-refs/references/check_xref_symptoms.md",
2581
- "size": 2426,
2582
- "sha256": "f3261841492aba9812529419b351cb77e07c49f3da7156773299048f51d9deee"
2601
+ "size": 4501,
2602
+ "sha256": "4d0da877aca64367cbf13fa8b1008f39b0f258648a5e2a955ca5b8fc8915236f"
2583
2603
  },
2584
2604
  {
2585
2605
  "path": "skills/manage-refs/scripts/_vendor_citation_writer.py",
@@ -2593,8 +2613,8 @@
2593
2613
  },
2594
2614
  {
2595
2615
  "path": "skills/manage-refs/scripts/check_citation_keys.py",
2596
- "size": 4125,
2597
- "sha256": "b336b661b9d68e42d8829f017d2d55fba22585de6f9d59e2441ffc1c7f5ba3a7"
2616
+ "size": 6593,
2617
+ "sha256": "acf0b653df453ef3d9ed905f09656212ae5f8de6471a19cde52ca415b980fb47"
2598
2618
  },
2599
2619
  {
2600
2620
  "path": "skills/manage-refs/scripts/check_citation_keys_challenge/fixture/manuscript.md",
@@ -2628,13 +2648,13 @@
2628
2648
  },
2629
2649
  {
2630
2650
  "path": "skills/manage-refs/scripts/check_xref.py",
2631
- "size": 24044,
2632
- "sha256": "e7f035af887c581eb98b57c865b2ed358b541091c30deeb8e6652145f0929acf"
2651
+ "size": 31099,
2652
+ "sha256": "13d89487a740fdac9b55f6f92d8228fea2c7ae4b8d1c32f96bab3616be8a5b32"
2633
2653
  },
2634
2654
  {
2635
2655
  "path": "skills/manage-refs/scripts/fill_journal_abbrev.py",
2636
- "size": 4533,
2637
- "sha256": "2782190044944526e1f27572062192466b34e116a4a50c9f3aecc59117b06e6e"
2656
+ "size": 5370,
2657
+ "sha256": "a9d6ceab5a12832c3cbf9a329afef4afa9ed4964ad0e2a34dc5fa7ced5646bd1"
2638
2658
  },
2639
2659
  {
2640
2660
  "path": "skills/manage-refs/scripts/inject_zotero_cwyw.py",
@@ -2648,8 +2668,8 @@
2648
2668
  },
2649
2669
  {
2650
2670
  "path": "skills/manage-refs/scripts/pre_submission_gate.sh",
2651
- "size": 8932,
2652
- "sha256": "73ae8e4f32c9fc6d3676d3f4a5b41a74ad7dc2c9f5f5e39d4d5ec7c2e4fcbfb5"
2671
+ "size": 9309,
2672
+ "sha256": "b306abe55ea639cdf2d4044db4af70d9450b8ec2dfa3b5b78e9222966e8bd97a"
2653
2673
  },
2654
2674
  {
2655
2675
  "path": "skills/manage-refs/scripts/render_pandoc.sh",
@@ -2743,8 +2763,8 @@
2743
2763
  },
2744
2764
  {
2745
2765
  "path": "skills/meta-analysis/references/phase4_extraction_detail.md",
2746
- "size": 11199,
2747
- "sha256": "6aee96c0d9ab99e1a014d849de2e6b6fb711e673b96e6eb593fd56afe16c10e3"
2766
+ "size": 11216,
2767
+ "sha256": "ab7a10591f6c6c49e70ad6ba68061fcb5ed0d9435b8fdb8746f7042e31a39220"
2748
2768
  },
2749
2769
  {
2750
2770
  "path": "skills/meta-analysis/references/phase4_km_composite.md",
@@ -3248,8 +3268,8 @@
3248
3268
  },
3249
3269
  {
3250
3270
  "path": "skills/orchestrate/SKILL.md",
3251
- "size": 41275,
3252
- "sha256": "f128ee6ccd96d7c3ada6d50f0da2856d73ce01824668e9f839153349bf56d24d"
3271
+ "size": 41766,
3272
+ "sha256": "c3deb040d4d8e7881b32210513b93e1629e0a25e25ab8fa8e45e21ca531c0f51"
3253
3273
  },
3254
3274
  {
3255
3275
  "path": "skills/orchestrate/references/dialogue_nodes.md",
@@ -3273,8 +3293,8 @@
3273
3293
  },
3274
3294
  {
3275
3295
  "path": "skills/peer-review/SKILL.md",
3276
- "size": 81126,
3277
- "sha256": "d1783e25bcd55642cb42c200ef4151525758e1080a498e4ba6db01b54b036a98"
3296
+ "size": 81702,
3297
+ "sha256": "18d9c54589be0e30086b43ff50ac285815e1e852ae527905cf2225977492c35d"
3278
3298
  },
3279
3299
  {
3280
3300
  "path": "skills/peer-review/references/aczel_2021_reviewer2_patterns.md",
@@ -3343,8 +3363,8 @@
3343
3363
  },
3344
3364
  {
3345
3365
  "path": "skills/peer-review/references/domain-probes/observational_confounding.md",
3346
- "size": 35839,
3347
- "sha256": "32343fb2ed0d20cb76593c8d07842d0628ce363a7c24a6739f10fa29b37e6398"
3366
+ "size": 36257,
3367
+ "sha256": "6f1933d4314308dd9131c6c5baa16553270c1f406a9ac1077562fcc41958667b"
3348
3368
  },
3349
3369
  {
3350
3370
  "path": "skills/peer-review/references/domain-probes/polygenic_risk_score.md",
@@ -3603,8 +3623,8 @@
3603
3623
  },
3604
3624
  {
3605
3625
  "path": "skills/polish-language/scripts/lint_consistency.py",
3606
- "size": 13850,
3607
- "sha256": "ed6067e9d8968dec7d913aec92be06676d1d250aaee613b390355dcb872392c1"
3626
+ "size": 15665,
3627
+ "sha256": "f380439fae1fd41b966862957ca4232467a1d1701dd5a19c35c1864b3df9aea2"
3608
3628
  },
3609
3629
  {
3610
3630
  "path": "skills/polish-language/scripts/lint_figure_locale.py",
@@ -3678,8 +3698,8 @@
3678
3698
  },
3679
3699
  {
3680
3700
  "path": "skills/present-paper/SKILL.md",
3681
- "size": 39097,
3682
- "sha256": "da139de9b1633bc789b8f3e59f72aa315186192351fccfdbcfcb3f99405db993"
3701
+ "size": 39588,
3702
+ "sha256": "d7179b91b4b1146302731ce6b8fb9d114171040748a403162213bebb07f00b61"
3683
3703
  },
3684
3704
  {
3685
3705
  "path": "skills/present-paper/references/ai_slide_tells.md",
@@ -3768,8 +3788,8 @@
3768
3788
  },
3769
3789
  {
3770
3790
  "path": "skills/present-paper/scripts/check_slide_tells.py",
3771
- "size": 24730,
3772
- "sha256": "3b91a0f6850b2badaf1657208a779b892931f50ae4962a7c7ccdfc50836a5396"
3791
+ "size": 26077,
3792
+ "sha256": "7f41906b49d38663cc64de2f9dea69208d73f7f45648b4b65c294efbc88de831"
3773
3793
  },
3774
3794
  {
3775
3795
  "path": "skills/present-paper/scripts/check_slide_tells_challenge/make_fixtures.py",
@@ -3948,8 +3968,8 @@
3948
3968
  },
3949
3969
  {
3950
3970
  "path": "skills/render-pdf-doc/SKILL.md",
3951
- "size": 8300,
3952
- "sha256": "fad21da8e60907c212b6d216ffe591502941c8defa4ce212b521306e00332836"
3971
+ "size": 9236,
3972
+ "sha256": "97af21fac95af6dcd0e47bc6a547f6413f47d431c74d310174899c36cb86da17"
3953
3973
  },
3954
3974
  {
3955
3975
  "path": "skills/render-pdf-doc/references/known_pitfalls.md",
@@ -4068,8 +4088,8 @@
4068
4088
  },
4069
4089
  {
4070
4090
  "path": "skills/revise/SKILL.md",
4071
- "size": 31941,
4072
- "sha256": "3d6bd4fa1db09d6bae88a2e7b8470f3494df8f4c03d45abba924184ead3977bc"
4091
+ "size": 32217,
4092
+ "sha256": "a6694b2dac943f65ae0690085ae2951bb9107f42ba429b668829d63bdc154a51"
4073
4093
  },
4074
4094
  {
4075
4095
  "path": "skills/revise/references/r2r_voice.md",
@@ -4183,8 +4203,8 @@
4183
4203
  },
4184
4204
  {
4185
4205
  "path": "skills/self-review/SKILL.md",
4186
- "size": 61424,
4187
- "sha256": "fcaa491e8b90fda1a017b4b9fde584f9abbab58c3b32c0a10734593f238097ee"
4206
+ "size": 62498,
4207
+ "sha256": "891b019237132a910e1157a9f0d6e5ac58bcab2a7077ab969b68e95e3ae5a63b"
4188
4208
  },
4189
4209
  {
4190
4210
  "path": "skills/self-review/references/domain-probes/ai_overclaiming.md",
@@ -4248,8 +4268,8 @@
4248
4268
  },
4249
4269
  {
4250
4270
  "path": "skills/self-review/references/domain-probes/observational_confounding.md",
4251
- "size": 35839,
4252
- "sha256": "32343fb2ed0d20cb76593c8d07842d0628ce363a7c24a6739f10fa29b37e6398"
4271
+ "size": 36257,
4272
+ "sha256": "6f1933d4314308dd9131c6c5baa16553270c1f406a9ac1077562fcc41958667b"
4253
4273
  },
4254
4274
  {
4255
4275
  "path": "skills/self-review/references/domain-probes/polygenic_risk_score.md",
@@ -4373,8 +4393,8 @@
4373
4393
  },
4374
4394
  {
4375
4395
  "path": "skills/self-review/references/phases/phase2_5d_xref_qc.md",
4376
- "size": 4974,
4377
- "sha256": "81756d0713842faa1f603a34500dd6aaa699be6526ee6fbbc1ace06467b10143"
4396
+ "size": 5639,
4397
+ "sha256": "5a574035962626a5a758a335906414c709f2d5cb04b3ac5c5e7dfefa7ba6f8b5"
4378
4398
  },
4379
4399
  {
4380
4400
  "path": "skills/self-review/references/phases/phase2_5f_claim_artifact.md",
@@ -4413,8 +4433,8 @@
4413
4433
  },
4414
4434
  {
4415
4435
  "path": "skills/self-review/scripts/_qc_findings.py",
4416
- "size": 3187,
4417
- "sha256": "eac1b20db8c5c66d12243602e9272d60e1fcc9ef3ed0046d5081a74ef33a9343"
4436
+ "size": 6409,
4437
+ "sha256": "f8426cd3bdfb7c80796956b8d7e85afe5ba77a3b6df5a8f0f1fe92be0446d6b4"
4418
4438
  },
4419
4439
  {
4420
4440
  "path": "skills/self-review/scripts/check_analysis_definitions.py",
@@ -4528,8 +4548,8 @@
4528
4548
  },
4529
4549
  {
4530
4550
  "path": "skills/self-review/scripts/check_claim_artifact.py",
4531
- "size": 22106,
4532
- "sha256": "890ba1834c86d864e40c4ad3c9afb7db6824ffb5f50c2b8896b2a9bbea611ab0"
4551
+ "size": 22558,
4552
+ "sha256": "98e7fa5cc5539d753e5cdd429d9640a63ab149606c85f57f51c4fbe5b128bbcf"
4533
4553
  },
4534
4554
  {
4535
4555
  "path": "skills/self-review/scripts/check_classical_style.py",
@@ -4633,8 +4653,8 @@
4633
4653
  },
4634
4654
  {
4635
4655
  "path": "skills/self-review/scripts/check_figure_citation.py",
4636
- "size": 11137,
4637
- "sha256": "92847a5ca4faf32b94bceaf4369a6a9ca4c83a5aaa503606dd7b581c0770e093"
4656
+ "size": 12859,
4657
+ "sha256": "831aa1ef79cf6d2311adf4c9f97c766084d472b7e6dfa17e7f4f70b31ea89b43"
4638
4658
  },
4639
4659
  {
4640
4660
  "path": "skills/self-review/scripts/check_figure_citation_challenge/fixture/panel_regression.md",
@@ -4898,8 +4918,8 @@
4898
4918
  },
4899
4919
  {
4900
4920
  "path": "skills/self-review/scripts/check_table_percentages.py",
4901
- "size": 8760,
4902
- "sha256": "32405faecca4b8c28a38a90d272d8849c0451c048938440301bfe9a732d99a37"
4921
+ "size": 11061,
4922
+ "sha256": "faeed0132193a9bc3ca90d061d6e2d185a2e29d50b46165154e76d43edd90d5f"
4903
4923
  },
4904
4924
  {
4905
4925
  "path": "skills/self-review/scripts/check_table_percentages_challenge/expected/bad.txt",
@@ -5093,8 +5113,8 @@
5093
5113
  },
5094
5114
  {
5095
5115
  "path": "skills/self-review/scripts/refinement_stop.py",
5096
- "size": 9006,
5097
- "sha256": "3da6d19311211c4be42984bd0d0d1a134f770e70a4746a8853bc6409458f9ae6"
5116
+ "size": 9684,
5117
+ "sha256": "ba3f88d4eff6d35bf8d3ca56994ca5f56b060b414918efd5f6ee2343d6f2ec20"
5098
5118
  },
5099
5119
  {
5100
5120
  "path": "skills/self-review/scripts/refinement_stop_challenge/expected/continue.txt",
@@ -5268,8 +5288,8 @@
5268
5288
  },
5269
5289
  {
5270
5290
  "path": "skills/sync-submission/scripts/check_asset_anonymization.py",
5271
- "size": 13914,
5272
- "sha256": "a4552caa7bfcfba93c32d1b8f5b24fdcde49b4201768e977cd10a3d8fba06dc0"
5291
+ "size": 14907,
5292
+ "sha256": "9d826fc7f408ccc5d679774cd8e9c8921763b2a0066536b14173610301265587"
5273
5293
  },
5274
5294
  {
5275
5295
  "path": "skills/sync-submission/scripts/check_checklist_dump_leak.py",
@@ -5279,7 +5299,7 @@
5279
5299
  {
5280
5300
  "path": "skills/sync-submission/scripts/check_credit_integrity.py",
5281
5301
  "size": 18645,
5282
- "sha256": "c0ab9a7aa3008af3d23901ee93a764d01ae46786dbedfc287dc6cf031b7248e1"
5302
+ "sha256": "d67a72305d2f3c1a8d5a823a272171d96db925b64b3cf4ada2997bb81234ebd2"
5283
5303
  },
5284
5304
  {
5285
5305
  "path": "skills/sync-submission/scripts/check_cross_artifact_stale.py",
@@ -5338,8 +5358,8 @@
5338
5358
  },
5339
5359
  {
5340
5360
  "path": "skills/sync-submission/scripts/check_wordcount_cap.py",
5341
- "size": 9827,
5342
- "sha256": "4d1c3403efeb4d891c4558d6e784c4088a0d349aad1625f1c348e50665c17f8d"
5361
+ "size": 11299,
5362
+ "sha256": "93b251185bd2168f4d50161e3d0b3c9d2a8f7b2fa36973b01bc89caf194160ee"
5343
5363
  },
5344
5364
  {
5345
5365
  "path": "skills/sync-submission/scripts/cover_letter_drift_check.py",
@@ -5588,8 +5608,8 @@
5588
5608
  },
5589
5609
  {
5590
5610
  "path": "skills/verify-refs/scripts/verify_refs.py",
5591
- "size": 44683,
5592
- "sha256": "8b1bfee367b638cd49f5b6f92bfb353edef05ec71b5a9d8b44be9c5aa475b100"
5611
+ "size": 47979,
5612
+ "sha256": "4631625bb9a5bb2514d6c3f910d1f6d1cf443710e8aec554e5d35522ca6deebb"
5593
5613
  },
5594
5614
  {
5595
5615
  "path": "skills/verify-refs/skill.yml",
@@ -5618,8 +5638,8 @@
5618
5638
  },
5619
5639
  {
5620
5640
  "path": "skills/write-paper/SKILL.md",
5621
- "size": 49536,
5622
- "sha256": "a36ddb90db795de04bca34a4623c62be128305b023e42b256bedc0a0c16a5774"
5641
+ "size": 50120,
5642
+ "sha256": "6ac3072d67dfabfaeae11a0bf1890e9d616d073cd56b0758669d3b3f4ff59c50"
5623
5643
  },
5624
5644
  {
5625
5645
  "path": "skills/write-paper/references/exemplar_abstract.md",
@@ -5731,6 +5751,11 @@
5731
5751
  "size": 2356,
5732
5752
  "sha256": "6a0becfe8f24db7f686bd23f26c9caec749dd996914705679ea915398fc7c3dd"
5733
5753
  },
5754
+ {
5755
+ "path": "skills/write-paper/references/journal_profiles/AJKD.md",
5756
+ "size": 5809,
5757
+ "sha256": "b0183fb94e2cb41a534807b0cb79e861683aee00e95b6850e3ddcb5036e15014"
5758
+ },
5734
5759
  {
5735
5760
  "path": "skills/write-paper/references/journal_profiles/AJNR.md",
5736
5761
  "size": 6381,
@@ -5861,6 +5886,11 @@
5861
5886
  "size": 8114,
5862
5887
  "sha256": "0b7c00a4cf1616e134cfe3fff0d389268d275c0795f233733d685f56fc3018f9"
5863
5888
  },
5889
+ {
5890
+ "path": "skills/write-paper/references/journal_profiles/JASN.md",
5891
+ "size": 6619,
5892
+ "sha256": "9f64bc923ec708e10f514636fa31cac57f1611167304ea9d4d86920a18b6bd58"
5893
+ },
5864
5894
  {
5865
5895
  "path": "skills/write-paper/references/journal_profiles/JCSM.md",
5866
5896
  "size": 13680,
@@ -5906,6 +5936,11 @@
5906
5936
  "size": 13088,
5907
5937
  "sha256": "42d45781f252ada19a4086f200c407bd3c85d3d9a88c30151d9c14390616354d"
5908
5938
  },
5939
+ {
5940
+ "path": "skills/write-paper/references/journal_profiles/Kidney_International.md",
5941
+ "size": 5538,
5942
+ "sha256": "d370e1706d7e9972d2764ce1321d930ba7d6f006fae873019a49c6fdcd10c84e"
5943
+ },
5909
5944
  {
5910
5945
  "path": "skills/write-paper/references/journal_profiles/Korean_Circulation_Journal.md",
5911
5946
  "size": 8764,
@@ -6068,8 +6103,8 @@
6068
6103
  },
6069
6104
  {
6070
6105
  "path": "skills/write-paper/references/phase7_polish_detail.md",
6071
- "size": 19036,
6072
- "sha256": "5c44f6ccdfc6eaa64587c62d68fe0911175e6df7a37bfc7f71b65a7f6d5a1c12"
6106
+ "size": 19696,
6107
+ "sha256": "ca5d6c1c900d9ef0b4659d18daabdc3322bba3ecef3ec5955e9dc76de958f7e9"
6073
6108
  },
6074
6109
  {
6075
6110
  "path": "skills/write-paper/references/section_guides/discussion.md",
@@ -6113,8 +6148,8 @@
6113
6148
  },
6114
6149
  {
6115
6150
  "path": "skills/write-paper/scripts/build_title_page_affiliations.py",
6116
- "size": 11749,
6117
- "sha256": "d42dfe6972f04103f61f47f1f7774d534117e1538024c336240f505f1c436112"
6151
+ "size": 11723,
6152
+ "sha256": "ff1b29d66c8272c62423f7c31f945041ce2c097b0452097fd88f25777641a3db"
6118
6153
  },
6119
6154
  {
6120
6155
  "path": "skills/write-paper/scripts/check_placeholders.py",
@@ -6133,8 +6168,8 @@
6133
6168
  },
6134
6169
  {
6135
6170
  "path": "skills/write-protocol/SKILL.md",
6136
- "size": 11089,
6137
- "sha256": "2df7b2e5827fd2f6d4c0126c63e26f18c03bf94163af0f59c661ae85ec86b7af"
6171
+ "size": 11580,
6172
+ "sha256": "3d2041be27da4aa32c648ae4eba6036fdcb99a648ab003721ccfaf7c93bd2c06"
6138
6173
  },
6139
6174
  {
6140
6175
  "path": "skills/write-protocol/references/ethics_checklist.md",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "version": "5.23.0",
3
+ "version": "5.24.0",
4
4
  "owned_skills": [
5
5
  "academic-aio",
6
6
  "add-journal",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "medsci-skills",
3
- "version": "5.23.0",
3
+ "version": "5.24.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",
@@ -411,3 +411,11 @@ Section 3.5 (post-acceptance channel checklist) is unordered; Section 12 prescri
411
411
  - **Never fabricate discoverability metrics** (Perplexity/Elicit/Consensus retrieval scores) — only report observed behavior from a recorded probe.
412
412
  - **Never auto-complete author lists, ORCIDs, or affiliations** in CITATION.cff or Zenodo metadata; surface empty slots to the user.
413
413
  - If a compliance item, journal policy, or AI-search platform behavior is uncertain, state the uncertainty rather than guessing.
414
+
415
+ ## Global-rule references
416
+
417
+ Some passages in this skill cite a path of the form `~/.claude/rules/<name>.md`. Those are the
418
+ maintainer's personal global rules, kept outside this repository. They are **not shipped with
419
+ this skill** and will not exist on your machine; they appear only as provenance for where a
420
+ convention came from. If one of them looks like it is standing in for an instruction you actually
421
+ need, that is a bug — please open an issue, because the instruction belongs here.
@@ -540,3 +540,11 @@ Page numbers should be filled in by the user after final formatting. Use section
540
540
  | Step 4d PRISMA Figure 1 arithmetic & cross-reference audit (PRISMA / PRISMA-DTA only) | ENFORCED for SR/MA | flow numbers don't sum (e.g., screened ≠ included + excluded), or in-text counts mismatch flow diagram | HALT; reconcile against extraction artifacts |
541
541
  | Optional items (e.g., supplementary AI declarations) | ADVISORY | < 80% of optional items present | warn; user accepts |
542
542
  | Cross-reporting-guideline routing (study type → guideline) | ENFORCED | study type undeclared or guideline missing | Ask user; do not silently default |
543
+
544
+ ## Global-rule references
545
+
546
+ Some passages in this skill cite a path of the form `~/.claude/rules/<name>.md`. Those are the
547
+ maintainer's personal global rules, kept outside this repository. They are **not shipped with
548
+ this skill** and will not exist on your machine; they appear only as provenance for where a
549
+ convention came from. If one of them looks like it is standing in for an instruction you actually
550
+ need, that is a bug — please open an issue, because the instruction belongs here.
@@ -38,8 +38,8 @@ The pipeline failed on patient MRN 4471903 during the review.
38
38
  Subject 880101-1234567 was excluded after chart review.
39
39
  Approved under IRB 2024-0451 at Severance Hospital.
40
40
  I was reviewing EURE-D-26-00203 when this happened.
41
- Prof. Kim Namkuk suggested the change; reach me at yj.nam@hospital.or.kr.
42
- Output was written to /Users/yoojinnam/manuscripts/draft.docx.
41
+ Prof. Alan Poe suggested the change; reach me at a.poe@hospital.or.kr.
42
+ Output was written to /Users/apoe/manuscripts/draft.docx.
43
43
  MD
44
44
 
45
45
  # --- an ordinary, entirely publishable contribution -------------------------------------------
@@ -144,3 +144,11 @@ Every variable definition, cutoff, and era anchor must be grounded in a verified
144
144
  4. **Silent ad-hoc** — introducing a novel cutoff without the `Ad-hoc: yes` flag.
145
145
  5. **Sweep-style /search-lit** — running a generic lit search instead of one focused query per gap variable. Wastes tokens and buries the signal.
146
146
  6. **Dose/duration structural-missingness** — operationalizing a dose/duration covariate (pack-years, cessation-years, alcohol grams/week) anchored to a categorical exposure (smoking status, alcohol use) without specifying what the *reference level* (never-smoker, never-drinker) does to the dose. A never-smoker's pack-years is a structural zero, not a missing value; conflating the two collapses the analytic sample under complete-case modeling and lets MICE fabricate a non-zero dose for the unexposed. Operationalize it explicitly — add a row with `Role = covariate` and `Implementation = "IF status == 'never' THEN dose = 0 ELSE measured_value"` — and adjust on the categorical **status** variable, reserving the continuous **dose** for an exposed-only secondary analysis. `/clean-data` (categorical-implied-zero flag) and `/analyze-stats` ("Covariate Pitfalls") enforce this downstream.
147
+
148
+ ## Global-rule references
149
+
150
+ Some passages in this skill cite a path of the form `~/.claude/rules/<name>.md`. Those are the
151
+ maintainer's personal global rules, kept outside this repository. They are **not shipped with
152
+ this skill** and will not exist on your machine; they appear only as provenance for where a
153
+ convention came from. If one of them looks like it is standing in for an instruction you actually
154
+ need, that is a bug — please open an issue, because the instruction belongs here.
@@ -0,0 +1,34 @@
1
+ # American Journal of Kidney Diseases
2
+
3
+ ## Identity
4
+ - **Abbreviation:** Am J Kidney Dis
5
+ - **Publisher:** Elsevier (NKF)
6
+ - **ISSN:** 0272-6386 / 1523-6838
7
+ - **Homepage:** https://www.ajkd.org
8
+ - **Author guidelines:** https://www.ajkd.org/content/authorinfo
9
+
10
+ ## Scope
11
+ AJKD is a premier clinical nephrology journal, publishing clinical investigations, epidemiologic studies, health services research, clinical trials, and educational articles. It is highly valued for translating clinical research into actionable kidney care.
12
+
13
+ ## Scope Keywords
14
+ clinical nephrology, chronic kidney disease, acute kidney injury, hemodialysis, peritoneal dialysis, kidney transplantation, hypertension, cardiorenal syndrome, glomerulonephritis, electrolyte disorders, mineral bone disorder, health policy, clinical practice, teaching cases, kidney stones
15
+
16
+ ## Article Types Accepted
17
+ - Original Investigation
18
+ - Research Letter
19
+ - Review
20
+ - Teaching Case
21
+ - Editorial
22
+
23
+ ## Classification
24
+ - **Tier:** Q1
25
+ - **Open Access:** Hybrid
26
+ - **Field:** Nephrology (clinical)
27
+
28
+ ## Special Notes
29
+ AJKD (IF ~10.4) requires a highly specific structured abstract (max 300 words) with headings like Rationale & Objective, Setting & Participants, Predictors, Outcomes, Measurements, and Limitations. Requires a Clinical Summary section at the beginning. AI policy: language editing only, disclose before references, AI images banned.
30
+
31
+ ## Verification
32
+ - **Source:** AJKD Information for Authors — https://www.ajkd.org/article/S0272-6386(11)01206-6/fulltext
33
+ - **Date:** 2026-07-14
34
+ - **Note:** the 300-word abstract limit is quoted verbatim from that page in the PR #330 review (https://github.com/Aperivue/medsci-skills/pull/330#issuecomment-4968075916). The 3,500-word body limit was confirmed on the same page.