medsci-skills 5.10.0 → 5.12.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 (65) hide show
  1. package/metadata/distribution_files.json +88 -48
  2. package/metadata/distribution_manifest.json +1 -1
  3. package/package.json +1 -1
  4. package/skills/analyze-stats/SKILL.md +1 -0
  5. package/skills/analyze-stats/references/analysis_guides/agreement_reliability.md +130 -0
  6. package/skills/humanize/SKILL.md +2 -0
  7. package/skills/peer-review/SKILL.md +20 -9
  8. package/skills/peer-review/references/domain-probes/ai_overclaiming.md +5 -0
  9. package/skills/peer-review/references/domain-probes/diagnostic_accuracy.md +14 -0
  10. package/skills/peer-review/references/domain-probes/observational_confounding.md +6 -0
  11. package/skills/peer-review/references/domain-probes/sr_ma.md +11 -0
  12. package/skills/self-review/SKILL.md +40 -5
  13. package/skills/self-review/references/domain-probes/ai_overclaiming.md +5 -0
  14. package/skills/self-review/references/domain-probes/diagnostic_accuracy.md +14 -0
  15. package/skills/self-review/references/domain-probes/observational_confounding.md +6 -0
  16. package/skills/self-review/references/domain-probes/sr_ma.md +11 -0
  17. package/skills/self-review/scripts/check_binning_consistency.py +12 -6
  18. package/skills/self-review/scripts/check_claim_artifact.py +117 -15
  19. package/skills/self-review/scripts/check_classical_style.py +15 -1
  20. package/skills/self-review/scripts/check_cv_leakage.py +139 -0
  21. package/skills/self-review/scripts/check_emphasis_density.py +155 -0
  22. package/skills/self-review/scripts/check_figure_citation.py +135 -0
  23. package/skills/self-review/scripts/check_null_calibration.py +34 -16
  24. package/skills/self-review/scripts/check_rounded_delta.py +169 -0
  25. package/skills/self-review/scripts/check_scope_coherence.py +17 -1
  26. package/skills/self-review/scripts/check_supplement_hygiene.py +45 -0
  27. package/skills/self-review/skill.yml +4 -0
  28. package/skills/self-review/tests/fixtures/claim_manuscript_single_primary.md +3 -0
  29. package/skills/self-review/tests/fixtures/claim_manuscript_structured.md +6 -0
  30. package/skills/self-review/tests/fixtures/claim_prereg_structured.md +9 -0
  31. package/skills/self-review/tests/fixtures/claim_scripts_consistent/05_primary_cox.R +3 -0
  32. package/skills/self-review/tests/fixtures/claim_scripts_coprimary/05_primary_cox.R +3 -0
  33. package/skills/self-review/tests/fixtures/classical_metadoc.md +8 -0
  34. package/skills/self-review/tests/fixtures/cv_leakage_bad.md +2 -0
  35. package/skills/self-review/tests/fixtures/cv_leakage_clean.md +2 -0
  36. package/skills/self-review/tests/fixtures/derived_clean_dfalias/03_cohort.py +7 -0
  37. package/skills/self-review/tests/fixtures/derived_clean_dfalias/08_sensitivity.py +8 -0
  38. package/skills/self-review/tests/fixtures/emphasis_clean.md +6 -0
  39. package/skills/self-review/tests/fixtures/emphasis_overuse.md +6 -0
  40. package/skills/self-review/tests/fixtures/figure_clean.md +11 -0
  41. package/skills/self-review/tests/fixtures/figure_orphan.md +10 -0
  42. package/skills/self-review/tests/fixtures/null_region_masked.md +15 -0
  43. package/skills/self-review/tests/fixtures/rounded_delta_bad.md +3 -0
  44. package/skills/self-review/tests/fixtures/rounded_delta_clean.md +4 -0
  45. package/skills/self-review/tests/fixtures/scope_metadoc.md +12 -0
  46. package/skills/self-review/tests/fixtures/supplement_pii_clean.md +5 -0
  47. package/skills/self-review/tests/fixtures/supplement_pii_tie.md +6 -0
  48. package/skills/self-review/tests/test_binning_consistency.sh +10 -0
  49. package/skills/self-review/tests/test_claim_artifact.sh +31 -0
  50. package/skills/self-review/tests/test_classical_style.sh +12 -0
  51. package/skills/self-review/tests/test_cv_leakage.sh +35 -0
  52. package/skills/self-review/tests/test_emphasis_density.sh +31 -0
  53. package/skills/self-review/tests/test_figure_citation.sh +39 -0
  54. package/skills/self-review/tests/test_null_calibration.sh +8 -0
  55. package/skills/self-review/tests/test_rounded_delta.sh +35 -0
  56. package/skills/self-review/tests/test_scope_coherence.sh +12 -0
  57. package/skills/self-review/tests/test_supplement_hygiene.sh +17 -0
  58. package/skills/write-paper/SKILL.md +3 -3
  59. package/skills/write-paper/references/exemplar_discussion/README.md +3 -0
  60. package/skills/write-paper/references/exemplar_discussion/meta_analysis_prisma.md +52 -0
  61. package/skills/write-paper/references/exemplar_methods/README.md +1 -0
  62. package/skills/write-paper/references/exemplar_methods/meta_analysis_prisma.md +65 -0
  63. package/skills/write-paper/references/exemplar_results/README.md +3 -0
  64. package/skills/write-paper/references/exemplar_results/meta_analysis_prisma.md +51 -0
  65. package/skills/write-paper/references/paper_types/meta_analysis.md +5 -0
@@ -153,8 +153,13 @@
153
153
  },
154
154
  {
155
155
  "path": "skills/analyze-stats/SKILL.md",
156
- "size": 55302,
157
- "sha256": "3809b6a55e8a79b7dc48f617e3be0a7faf2a96a6f0ba03d58977a39f267cce81"
156
+ "size": 55642,
157
+ "sha256": "5c4a966490cfb8da6e09ebda897599479bd527d7ee3957ccbfceb5abff06306a"
158
+ },
159
+ {
160
+ "path": "skills/analyze-stats/references/analysis_guides/agreement_reliability.md",
161
+ "size": 6674,
162
+ "sha256": "599ad2551f547043b2bec79e3139d9c2c3ae33c5025784359b22022f882504c2"
158
163
  },
159
164
  {
160
165
  "path": "skills/analyze-stats/references/analysis_guides/health_economic_evaluation.md",
@@ -1658,8 +1663,8 @@
1658
1663
  },
1659
1664
  {
1660
1665
  "path": "skills/humanize/SKILL.md",
1661
- "size": 13461,
1662
- "sha256": "78e12b996cacfa5b1b16b0a0fe26cee5dd72cb990b70f26e90041d6e0eb65c9a"
1666
+ "size": 14240,
1667
+ "sha256": "f179598c74b1ab0b3d6639fdd26b8cafa33713a9ebe9374aad5d31571340d836"
1663
1668
  },
1664
1669
  {
1665
1670
  "path": "skills/humanize/references/ai_patterns.md",
@@ -2923,8 +2928,8 @@
2923
2928
  },
2924
2929
  {
2925
2930
  "path": "skills/peer-review/SKILL.md",
2926
- "size": 68213,
2927
- "sha256": "51feccb82dca34a28a0b9ace5467d23ddc654056af2cd9e152a4559cf074cfc3"
2931
+ "size": 69384,
2932
+ "sha256": "94033b84b41304d7dbd7919c84c7e9502bdaff1b7e2ef8f5dd7ec9cd7147c532"
2928
2933
  },
2929
2934
  {
2930
2935
  "path": "skills/peer-review/references/aczel_2021_reviewer2_patterns.md",
@@ -2933,8 +2938,8 @@
2933
2938
  },
2934
2939
  {
2935
2940
  "path": "skills/peer-review/references/domain-probes/ai_overclaiming.md",
2936
- "size": 14205,
2937
- "sha256": "565aa362e20ea6ca923510ea393829fb851e0caaae3d732f99144dd48a25b951"
2941
+ "size": 15410,
2942
+ "sha256": "bdb07002bf0b351579036937af5bf149e35389a218198699b81d31dc2fda7ec9"
2938
2943
  },
2939
2944
  {
2940
2945
  "path": "skills/peer-review/references/domain-probes/case_report.md",
@@ -2948,8 +2953,8 @@
2948
2953
  },
2949
2954
  {
2950
2955
  "path": "skills/peer-review/references/domain-probes/diagnostic_accuracy.md",
2951
- "size": 9002,
2952
- "sha256": "8232e2023d3c4d52e6a2d9003ae335302d6fe78c54d39b81f591c07becaf4df0"
2956
+ "size": 11692,
2957
+ "sha256": "afc69e56578babcc1cf7c7952d2df301fdc829329fb480a5cf426ff6ab65d9f5"
2953
2958
  },
2954
2959
  {
2955
2960
  "path": "skills/peer-review/references/domain-probes/equity_fairness.md",
@@ -2993,8 +2998,8 @@
2993
2998
  },
2994
2999
  {
2995
3000
  "path": "skills/peer-review/references/domain-probes/observational_confounding.md",
2996
- "size": 33429,
2997
- "sha256": "ac1736047c069aa47df76deea92379cae407043b6989d8d3fc77db8fd84b0031"
3001
+ "size": 34795,
3002
+ "sha256": "ff8cb910c7fb83ec08a04ba88866bdf1e0d2f43d972e2861b825595a85b035ee"
2998
3003
  },
2999
3004
  {
3000
3005
  "path": "skills/peer-review/references/domain-probes/polygenic_risk_score.md",
@@ -3028,8 +3033,8 @@
3028
3033
  },
3029
3034
  {
3030
3035
  "path": "skills/peer-review/references/domain-probes/sr_ma.md",
3031
- "size": 17239,
3032
- "sha256": "486d569f559f16d62b882f7256ccfe7443e3e2b4cc72a407a5cd046162a98b25"
3036
+ "size": 20154,
3037
+ "sha256": "82ccb4abc1ab1fffaf528268baad6c79e67c9b2ff929c14d7dcccb9677e10ddc"
3033
3038
  },
3034
3039
  {
3035
3040
  "path": "skills/peer-review/references/domain-probes/survey_research.md",
@@ -3488,13 +3493,13 @@
3488
3493
  },
3489
3494
  {
3490
3495
  "path": "skills/self-review/SKILL.md",
3491
- "size": 102413,
3492
- "sha256": "97219c57684d4eaced9e35b0968ca09da7731095c186a4e97757b4039f43f2f6"
3496
+ "size": 104731,
3497
+ "sha256": "9c74f317d10c7b491e710debb619dcf536689092a59fe749050a0ad41f4aacd5"
3493
3498
  },
3494
3499
  {
3495
3500
  "path": "skills/self-review/references/domain-probes/ai_overclaiming.md",
3496
- "size": 14205,
3497
- "sha256": "565aa362e20ea6ca923510ea393829fb851e0caaae3d732f99144dd48a25b951"
3501
+ "size": 15410,
3502
+ "sha256": "bdb07002bf0b351579036937af5bf149e35389a218198699b81d31dc2fda7ec9"
3498
3503
  },
3499
3504
  {
3500
3505
  "path": "skills/self-review/references/domain-probes/case_report.md",
@@ -3508,8 +3513,8 @@
3508
3513
  },
3509
3514
  {
3510
3515
  "path": "skills/self-review/references/domain-probes/diagnostic_accuracy.md",
3511
- "size": 9002,
3512
- "sha256": "8232e2023d3c4d52e6a2d9003ae335302d6fe78c54d39b81f591c07becaf4df0"
3516
+ "size": 11692,
3517
+ "sha256": "afc69e56578babcc1cf7c7952d2df301fdc829329fb480a5cf426ff6ab65d9f5"
3513
3518
  },
3514
3519
  {
3515
3520
  "path": "skills/self-review/references/domain-probes/equity_fairness.md",
@@ -3553,8 +3558,8 @@
3553
3558
  },
3554
3559
  {
3555
3560
  "path": "skills/self-review/references/domain-probes/observational_confounding.md",
3556
- "size": 33429,
3557
- "sha256": "ac1736047c069aa47df76deea92379cae407043b6989d8d3fc77db8fd84b0031"
3561
+ "size": 34795,
3562
+ "sha256": "ff8cb910c7fb83ec08a04ba88866bdf1e0d2f43d972e2861b825595a85b035ee"
3558
3563
  },
3559
3564
  {
3560
3565
  "path": "skills/self-review/references/domain-probes/polygenic_risk_score.md",
@@ -3588,8 +3593,8 @@
3588
3593
  },
3589
3594
  {
3590
3595
  "path": "skills/self-review/references/domain-probes/sr_ma.md",
3591
- "size": 17239,
3592
- "sha256": "486d569f559f16d62b882f7256ccfe7443e3e2b4cc72a407a5cd046162a98b25"
3596
+ "size": 20154,
3597
+ "sha256": "82ccb4abc1ab1fffaf528268baad6c79e67c9b2ff929c14d7dcccb9677e10ddc"
3593
3598
  },
3594
3599
  {
3595
3600
  "path": "skills/self-review/references/domain-probes/survey_research.md",
@@ -3658,8 +3663,8 @@
3658
3663
  },
3659
3664
  {
3660
3665
  "path": "skills/self-review/scripts/check_binning_consistency.py",
3661
- "size": 19541,
3662
- "sha256": "e3bf7dd2e0871ce6905abc1d33a26c7afac76a93d184bfe2d431af97d0622f74"
3666
+ "size": 20076,
3667
+ "sha256": "c6467eb4a1d954d67da87e283d8a628604a9ec7558c966f8b20c1b661e23b9c9"
3663
3668
  },
3664
3669
  {
3665
3670
  "path": "skills/self-review/scripts/check_citation_order.py",
@@ -3668,13 +3673,13 @@
3668
3673
  },
3669
3674
  {
3670
3675
  "path": "skills/self-review/scripts/check_claim_artifact.py",
3671
- "size": 13065,
3672
- "sha256": "ac29a7e8145152e6641fce8eaf98766cfc943a034db72252cc38538d7ab59db2"
3676
+ "size": 18475,
3677
+ "sha256": "c99c8090205734b0eae981550ed09e6275d94add608e66df78f4533c35f20924"
3673
3678
  },
3674
3679
  {
3675
3680
  "path": "skills/self-review/scripts/check_classical_style.py",
3676
- "size": 12210,
3677
- "sha256": "c973ee8b776f28515439fb185e1254e08e62c2e1410e260f18a824241a331af0"
3681
+ "size": 13124,
3682
+ "sha256": "941d90559cdcdd24f3eba58daf00eb34a7d227c3fe44267b93b65b80b6092989"
3678
3683
  },
3679
3684
  {
3680
3685
  "path": "skills/self-review/scripts/check_cohort_arithmetic.py",
@@ -3686,15 +3691,30 @@
3686
3691
  "size": 21506,
3687
3692
  "sha256": "7d3e67074d58a28ffee52ce64b486231f103a3ddcaf6b3b6ee83ba5f89c63bc2"
3688
3693
  },
3694
+ {
3695
+ "path": "skills/self-review/scripts/check_cv_leakage.py",
3696
+ "size": 6349,
3697
+ "sha256": "431c5f14ad2c4f59e85b2a5e86150ac708d476e8f2f1da859d81953f522b2117"
3698
+ },
3689
3699
  {
3690
3700
  "path": "skills/self-review/scripts/check_editorial_impression.py",
3691
3701
  "size": 22032,
3692
3702
  "sha256": "42e0e9315e1c97ca0f9943213c65ea91d7064773d25287b2577f0386dfb7fc41"
3693
3703
  },
3704
+ {
3705
+ "path": "skills/self-review/scripts/check_emphasis_density.py",
3706
+ "size": 6626,
3707
+ "sha256": "79e517942c1eca4f879fa2b05e6497f93fe6f4d53ed58ca98e240bf5b44c4821"
3708
+ },
3709
+ {
3710
+ "path": "skills/self-review/scripts/check_figure_citation.py",
3711
+ "size": 5298,
3712
+ "sha256": "342bc1126a420111da9c0fe38c6cd68cc45542b0e485202689d7219de9d80712"
3713
+ },
3694
3714
  {
3695
3715
  "path": "skills/self-review/scripts/check_null_calibration.py",
3696
- "size": 7594,
3697
- "sha256": "9ddff01722c34efb6ffd757ae762c6ee12f5993bf13b11313c2e20b60b26cab3"
3716
+ "size": 8585,
3717
+ "sha256": "e5bd71c515554b3acbaefd3807e584364a536dc6e1101bec5b524bc26b341309"
3698
3718
  },
3699
3719
  {
3700
3720
  "path": "skills/self-review/scripts/check_panel_diversity.py",
@@ -3716,20 +3736,25 @@
3716
3736
  "size": 15481,
3717
3737
  "sha256": "c9cd8e47cfef1ffcea12ecda5314a71ccd5415f35f4f296addadf53ccb6ceb3b"
3718
3738
  },
3739
+ {
3740
+ "path": "skills/self-review/scripts/check_rounded_delta.py",
3741
+ "size": 7079,
3742
+ "sha256": "2961dd0b25dcd06f202442004e08f2d98c6f2d4c337be3f8b0e3286a59952072"
3743
+ },
3719
3744
  {
3720
3745
  "path": "skills/self-review/scripts/check_scope_coherence.py",
3721
- "size": 10818,
3722
- "sha256": "820dfc264c2a4f62c79c0c7123a3e1a8b59a100b89654617a08ff55deeb25a75"
3746
+ "size": 11920,
3747
+ "sha256": "e600e54fcbe308060a8dadd871ec274b6ae19f89456ae0194490e152c0d09a91"
3723
3748
  },
3724
3749
  {
3725
3750
  "path": "skills/self-review/scripts/check_supplement_hygiene.py",
3726
- "size": 11088,
3727
- "sha256": "f89027472cdf0258357c3b0f0b0f3fec09b5ea65cc1373292797b818d1acf444"
3751
+ "size": 13579,
3752
+ "sha256": "c61bd5e485d2bce4a6efd7bf2a7980aa0d31ebecb876a7c6895fd12cb6bf7f1c"
3728
3753
  },
3729
3754
  {
3730
3755
  "path": "skills/self-review/skill.yml",
3731
- "size": 2223,
3732
- "sha256": "4009f3148776fab2096da3dad8a15e503c5073b4cc66b42c57498948e2040270"
3756
+ "size": 2381,
3757
+ "sha256": "9499a87d985d981eac9418d6cd95ed79c1d9724aba8854b7d6713d89679d9f1d"
3733
3758
  },
3734
3759
  {
3735
3760
  "path": "skills/setup-medsci/SKILL.md",
@@ -3883,8 +3908,8 @@
3883
3908
  },
3884
3909
  {
3885
3910
  "path": "skills/write-paper/SKILL.md",
3886
- "size": 66426,
3887
- "sha256": "910808b73103a74c26a3a92acb9e7b99529de1b8d9af8efaf740e7ad737fdd09"
3911
+ "size": 66771,
3912
+ "sha256": "1a50c9ceb040a79feaa60e809c7196f9f04b85cab2f5f3402dcaed3f7aee552c"
3888
3913
  },
3889
3914
  {
3890
3915
  "path": "skills/write-paper/references/exemplar_abstract.md",
@@ -3903,8 +3928,8 @@
3903
3928
  },
3904
3929
  {
3905
3930
  "path": "skills/write-paper/references/exemplar_discussion/README.md",
3906
- "size": 2524,
3907
- "sha256": "46d1b9e874f669608cc2c2abc400ab5efa74e37958f59e0c3b8f842dd4934e7d"
3931
+ "size": 2727,
3932
+ "sha256": "3bfcd4eb4df4ca0309446a606550cb11adc4d88daa676f2217249691d2e6b042"
3908
3933
  },
3909
3934
  {
3910
3935
  "path": "skills/write-paper/references/exemplar_discussion/ai_validation_tripod_claim.md",
@@ -3916,6 +3941,11 @@
3916
3941
  "size": 2500,
3917
3942
  "sha256": "7d49d926eb9aa78c42ce0e6579ca299f528dec77dafc17ed9451ada0c2340b3c"
3918
3943
  },
3944
+ {
3945
+ "path": "skills/write-paper/references/exemplar_discussion/meta_analysis_prisma.md",
3946
+ "size": 3357,
3947
+ "sha256": "3cc8542c754372b19acbc25b3c6d6211479b4bbec361c7638c5d2550db3ecc5f"
3948
+ },
3919
3949
  {
3920
3950
  "path": "skills/write-paper/references/exemplar_discussion/observational_cohort_strobe.md",
3921
3951
  "size": 3652,
@@ -3928,8 +3958,8 @@
3928
3958
  },
3929
3959
  {
3930
3960
  "path": "skills/write-paper/references/exemplar_methods/README.md",
3931
- "size": 2247,
3932
- "sha256": "158c4894b92c1b6c19bda8becd947e455c5050cbef4d7d3606c2c46c3123d006"
3961
+ "size": 2342,
3962
+ "sha256": "6966e8b723d0c4ccc012d54e2b8a22ef59b39c22619e63a8597f9badb380b4e7"
3933
3963
  },
3934
3964
  {
3935
3965
  "path": "skills/write-paper/references/exemplar_methods/ai_validation_tripod_claim.md",
@@ -3941,6 +3971,11 @@
3941
3971
  "size": 2739,
3942
3972
  "sha256": "f403613a0f3625c5c7dab8fa16a21635007821ede2b58d265440db51b55165a6"
3943
3973
  },
3974
+ {
3975
+ "path": "skills/write-paper/references/exemplar_methods/meta_analysis_prisma.md",
3976
+ "size": 4160,
3977
+ "sha256": "a0e696e2f581fa6ae8b1aeb86ff7b9a5aaa6bdb2184fee4352e74d2ee6559d90"
3978
+ },
3944
3979
  {
3945
3980
  "path": "skills/write-paper/references/exemplar_methods/observational_cohort_strobe.md",
3946
3981
  "size": 2364,
@@ -3948,8 +3983,8 @@
3948
3983
  },
3949
3984
  {
3950
3985
  "path": "skills/write-paper/references/exemplar_results/README.md",
3951
- "size": 2588,
3952
- "sha256": "0ececbb937fa44a2d89d56124bc7d5d2fea540a459fd0328b0cf534c463baaa1"
3986
+ "size": 2799,
3987
+ "sha256": "14b588f1f4433be71c39f11627148fff797eb87b3b74be75e61514095d4c38ea"
3953
3988
  },
3954
3989
  {
3955
3990
  "path": "skills/write-paper/references/exemplar_results/ai_validation_tripod_claim.md",
@@ -3961,6 +3996,11 @@
3961
3996
  "size": 2772,
3962
3997
  "sha256": "8e45e0b30b4ab505b4eb8c37007f970bfb5aa81375fd011915b07d85c9419598"
3963
3998
  },
3999
+ {
4000
+ "path": "skills/write-paper/references/exemplar_results/meta_analysis_prisma.md",
4001
+ "size": 3170,
4002
+ "sha256": "8aed3ee5d36c15515843d77b5f69fe76f433c9972827a9e18303b38802fac782"
4003
+ },
3964
4004
  {
3965
4005
  "path": "skills/write-paper/references/exemplar_results/observational_cohort_strobe.md",
3966
4006
  "size": 2452,
@@ -4273,8 +4313,8 @@
4273
4313
  },
4274
4314
  {
4275
4315
  "path": "skills/write-paper/references/paper_types/meta_analysis.md",
4276
- "size": 10163,
4277
- "sha256": "5384224227f54deb1829a400ec6994b45a1b7cb34c167c158804e9d361466b26"
4316
+ "size": 10536,
4317
+ "sha256": "2c237409005214baab63627966d8f2b31498e3c28bea34c571a6d5591a068ed8"
4278
4318
  },
4279
4319
  {
4280
4320
  "path": "skills/write-paper/references/paper_types/nhis_cohort.md",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "version": "5.10.0",
3
+ "version": "5.12.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.10.0",
3
+ "version": "5.12.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,6 +411,7 @@ tbl %>% as_flex_table() %>% flextable::save_as_docx(path = "table.docx")
411
411
 
412
412
  ### Inter-rater Agreement
413
413
 
414
+ - **Methodology guide**: `references/analysis_guides/agreement_reliability.md` (**load before generating code** — the pseudoreplication trap for clustered/repeated measurements + the pseudoreplication-safe per-subject / mixed-effects code, ICC model/type selection, agreement-vs-reliability distinction; pairs with self-review probe O18)
414
415
  - Table type guide: `references/table-standards/table-types/agreement.md` (ICC with model/type + CI, weighted κ for ordinal, Bland–Altman bias + LoA, reliability-vs-agreement distinction, common errors)
415
416
  - Template: `references/templates/agreement_analysis.py`
416
417
  - 2 raters + categorical: Cohen's kappa
@@ -0,0 +1,130 @@
1
+ # Inter-rater Agreement & Reliability Guide
2
+
3
+ Quantifying how well two or more raters (or a rater and a reference, or repeated
4
+ measurements) **agree**. The coefficient is easy to compute; the two ways these
5
+ analyses fail review are (1) treating **clustered** measurements as independent
6
+ (pseudoreplication) and (2) confusing **agreement** with **reliability**.
7
+
8
+ ---
9
+
10
+ ## When to Use
11
+
12
+ - **Cohen's kappa** — 2 raters, categorical (nominal) labels.
13
+ - **Weighted kappa** — 2 raters, **ordinal** labels (linear or quadratic weights; disagreement
14
+ by one category counts less than by three).
15
+ - **Fleiss' kappa** — ≥3 raters, categorical.
16
+ - **Krippendorff's alpha** — any number of raters, any measurement level, tolerates missing data.
17
+ - **ICC (intraclass correlation)** — **continuous** measurements; report the model + type (below).
18
+ - **Bland–Altman** — two continuous methods/raters: bias (mean difference) + 95% limits of agreement.
19
+ - NOT for: a single 2×2 vs a reference standard (that is diagnostic accuracy — see
20
+ `table-types/diagnostic_accuracy.md`); not for a multi-reader AI-vs-human comparison with reader +
21
+ case variance (that is an MRMC reader study — see `table-types/reader_study.md`).
22
+
23
+ ---
24
+
25
+ ## Pseudoreplication comes first (this, not the coefficient, is the issue)
26
+
27
+ If each **subject contributes more than one measurement** — several lesions, aneurysms, nodules,
28
+ slices, or time-points per patient — the rows are **not independent**. Computing agreement on the
29
+ **pooled** rows (or on all pairwise distances) uses an inflated *n*, narrows the CI, and gives an
30
+ **anti-conservative** p-value. This is the single most common reliability-study error a reviewer
31
+ catches (it is flagged by the self-review probe **O18** in `observational_confounding.md`).
32
+
33
+ Two correct paths — pick one and state it:
34
+
35
+ 1. **Aggregate to the independent unit first**, then compute agreement per subject. This is the
36
+ simplest defensible analysis when a per-subject summary is meaningful (e.g. mean measurement,
37
+ majority label, or one index lesion per subject).
38
+ 2. **Model the clustering** — a mixed-effects / variance-components ICC with a **subject random
39
+ effect** (or a GEE with an exchangeable working correlation), so the within-subject correlation
40
+ is estimated rather than ignored.
41
+
42
+ A pooled-pairwise test can *flip* on correction: e.g. Mann–Whitney p = 0.02 on 448 pooled
43
+ pairwise distances became p = 0.59 at the per-aneurysm level (n = 112). **Report the unit of
44
+ analysis explicitly**, and when subjects have multiple measurements report a per-subject
45
+ sensitivity analysis.
46
+
47
+ ### Produce the pseudoreplication-safe version
48
+
49
+ ```python
50
+ import pandas as pd
51
+ import pingouin as pg # ICC with model/type + CI
52
+
53
+ # long format: one row per (subject, measurement); rater columns rater1..raterK
54
+ df = pd.read_csv("ratings.csv")
55
+
56
+ # 1) DETECT clustering: more rows than independent subjects
57
+ n_rows, n_subjects = len(df), df["subject_id"].nunique()
58
+ if n_rows > n_subjects:
59
+ print(f"CLUSTERED: {n_rows} measurements from {n_subjects} subjects "
60
+ f"({n_rows / n_subjects:.1f} per subject) — do NOT pool as independent.")
61
+
62
+ # 2a) PER-SUBJECT AGGREGATION (continuous): mean per subject, then ICC on subject means
63
+ per_subj = df.groupby("subject_id")[["rater1", "rater2"]].mean().reset_index()
64
+ long = per_subj.melt(id_vars="subject_id", var_name="rater", value_name="score")
65
+ icc = pg.intraclass_corr(data=long, targets="subject_id", raters="rater", nan_policy="omit")
66
+ print(icc[["Type", "ICC", "CI95%"]]) # report Type (e.g. ICC2/ICC2k) + CI
67
+
68
+ # 2b) OR MODEL THE CLUSTERING (keep every measurement, subject random effect)
69
+ import statsmodels.formula.api as smf
70
+ df_long = df.melt(id_vars="subject_id", value_vars=["rater1", "rater2"],
71
+ var_name="rater", value_name="score")
72
+ m = smf.mixedlm("score ~ 1", data=df_long, groups=df_long["subject_id"])
73
+ res = m.fit()
74
+ var_between = float(res.cov_re.iloc[0, 0]); var_resid = float(res.scale)
75
+ icc_clustered = var_between / (var_between + var_resid)
76
+ print(f"variance-components ICC (subject random effect) = {icc_clustered:.3f}")
77
+ ```
78
+
79
+ ---
80
+
81
+ ## ICC: state the model and the type (they are not interchangeable)
82
+
83
+ - **Model**: one-way random (raters differ per subject), two-way random (same raters, generalise to
84
+ a rater population), two-way mixed (same raters, these raters only).
85
+ - **Type**: **agreement** vs **consistency** (agreement penalises systematic rater bias; consistency
86
+ does not), and **single** vs **average** measurement (average-of-k is higher — only report it if
87
+ the clinical use averages k raters).
88
+ - Report as e.g. **ICC(2,1) = 0.82 (95% CI 0.74–0.88), two-way random, absolute agreement, single
89
+ rater**. An ICC with no model/type is not interpretable.
90
+
91
+ ---
92
+
93
+ ## Agreement is not reliability
94
+
95
+ - **Agreement** = do raters give the *same value* (absolute; Bland–Altman bias, absolute-agreement ICC).
96
+ - **Reliability** = can raters *rank/discriminate subjects* consistently (relative; consistency ICC,
97
+ Pearson/Spearman). A method can be highly reliable yet have poor agreement (a constant offset).
98
+ State which one the clinical claim needs, and use the matching coefficient.
99
+
100
+ ---
101
+
102
+ ## Reporting
103
+
104
+ - The coefficient **with a 95% CI** (bootstrap or analytic), the model/type (for ICC), and the
105
+ **unit of analysis** (per-subject vs per-lesion, and the clustering handling).
106
+ - The interpretation band used (e.g. Landis–Koch), but do not over-interpret a point estimate whose
107
+ CI spans two bands.
108
+ - For continuous methods: Bland–Altman **bias + 95% limits of agreement**, not just a correlation.
109
+
110
+ ---
111
+
112
+ ## Common failures (flag at review)
113
+
114
+ - **Pooled/pairwise agreement on clustered data** (pseudoreplication) — the headline coefficient's
115
+ CI is too narrow; re-run per-subject or with a subject random effect (probe O18).
116
+ - **ICC reported with no model/type** — uninterpretable; the same data yields different ICCs.
117
+ - **Reliability coefficient used to claim agreement** (or vice versa) — a high consistency ICC does
118
+ not establish that the two methods are interchangeable.
119
+ - **Correlation (r) reported as agreement** for two methods — r ignores a constant/proportional bias;
120
+ Bland–Altman is required.
121
+ - **Kappa on ordinal labels unweighted** — treats a one-category disagreement as a full disagreement.
122
+
123
+ ---
124
+
125
+ ## Anti-Hallucination
126
+
127
+ - Never hand-type a coefficient or CI — compute it from the ratings CSV with a seeded script.
128
+ - Do not quote an ICC without the model/type actually estimated by the code.
129
+ - If subjects have multiple measurements, the per-subject sensitivity analysis is **mandatory** —
130
+ do not report only the pooled number.
@@ -178,6 +178,7 @@ If the density remains above 2.0, run another fix-verify cycle (max 3 rounds).
178
178
  | 19 | § (section sign) marker | "as in §2.3", "(see §Discussion)", "§Results" | Delete or replace with section name ("Methods", "Results") — `grep -c "§"` = 0 |
179
179
  | 20 | Methods/Results self-reference parenthetical | "(Methods §X)", "(Results §3.1)", "(Methods, Section 2.3)" | Drop the parenthetical or shorten to "(see Methods)" |
180
180
  | 21 | AI Disclosure boilerplate (body) | "## Artificial Intelligence Disclosure", "Generative AI was not used to create..." in manuscript body | Remove from body → place in cover letter / submission form only (per `~/.claude/rules/journal-ai-image-policies.md`) |
181
+ | 25 | Inline-emphasis over-use (typographic over-signposting) | Single-word italics (*into*, *passive*, *same*), whole-clause italics (*a redesign of the relationship itself*), bold used mid-paragraph to signpost | Remove inline emphasis; keep only legitimate italics — statistical symbols (*P*, *t*, *n*), Latin (*in vivo*, *et al.*), gene/species (*BRCA1*). A bold **run-in subheading** at line start is fine (Nature/npj style) |
181
182
 
182
183
  ### Response-Letter Patterns (R2R)
183
184
 
@@ -247,6 +248,7 @@ the pass/fail status.
247
248
  | Pattern 19 — `§` symbol | ENFORCED (senior MA reviewer prep) | `grep -c "§" manuscript.md` > 0 | auto-strip; verify post-rewrite count == 0 |
248
249
  | Pattern 20 — `(see Methods §X)` self-reference | ENFORCED | match found | rewrite to direct section name reference |
249
250
  | Pattern 21 — AI Disclosure paragraph in body | ENFORCED | "Generative AI was not used..." paragraph in manuscript body | move to cover letter or remove |
251
+ | Pattern 25 — inline-emphasis over-use | ENFORCED | italic-emphasis density over threshold after allowlist | run `/self-review` `scripts/check_emphasis_density.py --manuscript manuscript.md`; `EMPHASIS_OVERUSE` (Minor) means strip inline italics (keep only stat symbols / Latin / gene-species); whole-clause italics are the strongest tell |
250
252
  | Patterns 22-24 — R2R editing-mechanism / draft line-number / tooling leak | TRIAGE (response letters); `§` = 0 hard | detection greps in ai_patterns.md R2R section surface candidates | review each hit (analysis narration, quoted additions, revised-manuscript page/line are NOT tells); rewrite confirmed tells to substantive prose |
251
253
  | Citation preservation invariant | ENFORCED | any pre-existing `[@bibkey]` removed by rewrite | revert that single rewrite; flag for user |
252
254
  | Numerical preservation invariant | ENFORCED | any number changed by rewrite | revert; flag for user |
@@ -118,6 +118,17 @@ within the current submission (poolability of incommensurable studies, a broken
118
118
  evaluation instrument). When both classes are present, the **unfixable** class governs the recommendation —
119
119
  do not let a long list of fixable items reframe an unfixable core as "addressable in revision."
120
120
 
121
+ **Salvage-reframe that shrinks the contribution is NOT a fixable major revision.** When your proposed fix
122
+ for a construct/validity flaw is to *narrow the claim* (e.g. "reframe from a clinical classifier to a
123
+ re-identifiability signal", "scope down to a proof-of-concept"), check whether that narrower framing survives
124
+ the novelty/importance bar. If novelty/importance is ALREADY weak — a co-reviewer or your own scorecard flags
125
+ the work as "expected / well-known finding / unconvincing motivation / limited use case" (Originality or
126
+ Reader-interest ≤ mid) — then the reframe *reduces* the contribution and makes the importance problem worse,
127
+ not better. A contribution shrunk to survive a validity flaw is a **Reject-leaning** outcome (the contribution
128
+ is the product, not addressable-in-revision), not an encourage-major-revision. Deterministic trigger to
129
+ self-audit: if your confidential note says the claim is "narrower than / more modest than claimed" AND your
130
+ recommendation is Reject-family-adjacent, do not upgrade it to major revision on the strength of the reframe.
131
+
121
132
  **Review/narrative/primer escalation** *(the contribution IS the product)*: for a review article there is no
122
133
  data to re-analyze; the distinct contribution — novelty, integrative synthesis, domain-specificity — is the
123
134
  deliverable itself. Therefore **weak novelty / no distinct contribution / not domain-specific is
@@ -135,11 +146,11 @@ confidential note and the recommendation are consistent.
135
146
 
136
147
  ### Phase 2A: Systematic Review / Meta-Analysis Extension
137
148
 
138
- Apply this internal-consistency-first gate (P0) plus 17-probe checklist (P1–P17) **only when manuscript type is "Systematic Review", "Meta-Analysis", or "Systematic Review and Meta-Analysis"**. These probes complement (do not replace) the generic Phase 2 issue checklist.
149
+ Apply this internal-consistency-first gate (P0) plus 19-probe checklist (P1–P19) **only when manuscript type is "Systematic Review", "Meta-Analysis", or "Systematic Review and Meta-Analysis"**. These probes complement (do not replace) the generic Phase 2 issue checklist.
139
150
 
140
151
  **SR-MA reviews almost always justify Tier 3 word budget** (1000-1400w) — apply ≥3 of P1-P10 triggering = Tier 3 default.
141
152
 
142
- **Probe detail (P0–P17), with output templates and the leads-vs-findings discipline:** `${CLAUDE_SKILL_DIR}/references/domain-probes/sr_ma.md`. Load it and apply each probe when the trigger above fires. In this skill, map each probe finding to the review draft as a Major / Minor comment; route conclusion-threatening or integrity findings into the Confidential Comments to the Editor, and place a confirmed error that drives a headline claim as the Major #1 candidate.
153
+ **Probe detail (P0–P19), with output templates and the leads-vs-findings discipline:** `${CLAUDE_SKILL_DIR}/references/domain-probes/sr_ma.md`. Load it and apply each probe when the trigger above fires. In this skill, map each probe finding to the review draft as a Major / Minor comment; route conclusion-threatening or integrity findings into the Confidential Comments to the Editor, and place a confirmed error that drives a headline claim as the Major #1 candidate.
143
154
 
144
155
  ### Phase 2B: Survival / Prognostic Model Extension
145
156
 
@@ -182,14 +193,14 @@ The original-research probes (Phase 2 issue checklist, Phase 2A/2B/2C) do not tr
182
193
 
183
194
  ### Phase 2E: Observational / Confounding Extension
184
195
 
185
- Apply this 16-probe checklist (O1–O16) **only when the manuscript is an observational study** (cohort, case-control, cross-sectional, health-screening / registry) **whose central claim is an adjusted exposure–outcome association** estimated by covariate adjustment rather than randomization. These probes complement (do not replace) the generic Phase 2 issue checklist and the STROBE reporting items; they target the gap between the stated adjustment set and what the exposure-stratified Table 1 shows.
196
+ Apply this 18-probe checklist (O1–O18) **only when the manuscript is an observational study** (cohort, case-control, cross-sectional, health-screening / registry) **whose central claim is an adjusted exposure–outcome association** estimated by covariate adjustment rather than randomization. These probes complement (do not replace) the generic Phase 2 issue checklist and the STROBE reporting items; they target the gap between the stated adjustment set and what the exposure-stratified Table 1 shows.
186
197
 
187
198
  **Exempt**:
188
199
  - Randomized trials (confounding controlled by design → Phase 2 + CONSORT)
189
200
  - Purely descriptive / prevalence reports with no adjusted association claim
190
201
  - Diagnostic-accuracy studies with no exposure–outcome estimand (→ Phase 2A DTA cells + categories A–C)
191
202
 
192
- **Probe detail (O1–O16), with output templates:** `${CLAUDE_SKILL_DIR}/references/domain-probes/observational_confounding.md`. Load it and apply each probe when the trigger above fires. O1 (a measured covariate imbalanced by exposure in Table 1 yet absent from the adjustment set), O7 (an outcome consequence/mediator wrongly adjusted — the opposite-direction failure, e.g. serum uric acid in an eGFR model), and O8 (records > subjects with the analysis unit undisclosed) are data-checkable and the highest-yield probes — verify O1/O7 against the manuscript's own Table 1 and run the records-vs-subjects check for O8. In this skill, map each probe finding to the review draft as a Major / Minor comment; a confounding-completeness gap (O1), over-adjustment that moves the headline estimate (O7), a selection/collider structure (O3), undisclosed repeat-subject clustering (O8), an undisclosed complete-case collapse (O5), a report-derived outcome with no construct-validity defence (O9), an inferential effect-size gradient across overlapping/nested subsets with no difference/interaction test (O10), an ignored/mis-specified complex-survey design (O11, NHANES/KNHANES weights without strata+PSU, or a subgroup by row-deletion), a data-mined inflection-point/'saturation' cutoff (O12), a cross-sectional mediation claimed as a causal chain without a temporal-order caveat / M–Y-confounding sensitivity (O13), or a synergy/joint-effect claim on the wrong interaction scale — multiplicative-only or joint-category ORs with no additive RERI/AP/S (O14) — is design-level, so surface it in the Confidential Comments to the Editor and place it as the Major #1 candidate rather than softening it to a reporting fix.
203
+ **Probe detail (O1–O18), with output templates:** `${CLAUDE_SKILL_DIR}/references/domain-probes/observational_confounding.md`. Load it and apply each probe when the trigger above fires. O1 (a measured covariate imbalanced by exposure in Table 1 yet absent from the adjustment set), O7 (an outcome consequence/mediator wrongly adjusted — the opposite-direction failure, e.g. serum uric acid in an eGFR model), and O8 (records > subjects with the analysis unit undisclosed) are data-checkable and the highest-yield probes — verify O1/O7 against the manuscript's own Table 1 and run the records-vs-subjects check for O8. In this skill, map each probe finding to the review draft as a Major / Minor comment; a confounding-completeness gap (O1), over-adjustment that moves the headline estimate (O7), a selection/collider structure (O3), undisclosed repeat-subject clustering (O8), an undisclosed complete-case collapse (O5), a report-derived outcome with no construct-validity defence (O9), an inferential effect-size gradient across overlapping/nested subsets with no difference/interaction test (O10), an ignored/mis-specified complex-survey design (O11, NHANES/KNHANES weights without strata+PSU, or a subgroup by row-deletion), a data-mined inflection-point/'saturation' cutoff (O12), a cross-sectional mediation claimed as a causal chain without a temporal-order caveat / M–Y-confounding sensitivity (O13), or a synergy/joint-effect claim on the wrong interaction scale — multiplicative-only or joint-category ORs with no additive RERI/AP/S (O14) — is design-level, so surface it in the Confidential Comments to the Editor and place it as the Major #1 candidate rather than softening it to a reporting fix.
193
204
 
194
205
  ### Phase 2E-2: Clinical Prediction-Model Extension
195
206
 
@@ -201,7 +212,7 @@ Apply this 4-probe checklist (CP1–CP4) **only when the manuscript develops or
201
212
 
202
213
  Apply when an AI/ML **primary study** (diagnostic, prognostic, triage, detection) makes a clinical claim in the Title/Abstract/Conclusion — generalizable, outperforms clinicians, deployment-ready, can replace a reader. Complements Phase 2F (recommendation calibration) and the signature "Overclaiming vs evidence level" check; co-applies with Phase 2C for radiomics-AI and Phase 2B for prognostic-AI.
203
214
 
204
- **Probe detail (AO0–AO6), with output templates and the leads-vs-findings discipline:** `${CLAUDE_SKILL_DIR}/references/domain-probes/ai_overclaiming.md`. Load it and apply each probe when the trigger fires. Run AO0 first — locate the load-bearing claim and read it together with its cited evidence before alleging over-reach (a hedged Discussion qualifier is not a headline). In this skill, map each probe finding to the review draft as a Major / Minor comment; a headline generalizability (AO1), superiority/replacement (AO2/AO3), or deployment-readiness (AO4) claim that outruns the design is framing-level — surface it in the Confidential Comments to the Editor and place it as the Major #1 candidate when it is the paper's headline. AO5 catches over-reach in the reported metric itself (best-fold headline without cross-fold CI/SD, unstated/test-tuned operating point, rebalanced-accuracy, or a code-vs-claims mismatch); pair it with the `exemplar_reviews/optimistic_validation_reporting.md` phrasing model and raise it as Major when it carries the headline.
215
+ **Probe detail (AO0–AO7), with output templates and the leads-vs-findings discipline:** `${CLAUDE_SKILL_DIR}/references/domain-probes/ai_overclaiming.md`. Load it and apply each probe when the trigger fires. Run AO0 first — locate the load-bearing claim and read it together with its cited evidence before alleging over-reach (a hedged Discussion qualifier is not a headline). In this skill, map each probe finding to the review draft as a Major / Minor comment; a headline generalizability (AO1), superiority/replacement (AO2/AO3), or deployment-readiness (AO4) claim that outruns the design is framing-level — surface it in the Confidential Comments to the Editor and place it as the Major #1 candidate when it is the paper's headline. AO5 catches over-reach in the reported metric itself (best-fold headline without cross-fold CI/SD, unstated/test-tuned operating point, rebalanced-accuracy, or a code-vs-claims mismatch); pair it with the `exemplar_reviews/optimistic_validation_reporting.md` phrasing model and raise it as Major when it carries the headline.
205
216
 
206
217
  ### Phase 2G-2: Model-Development / Validation-Integrity Extension
207
218
 
@@ -223,9 +234,9 @@ Apply this 8-probe checklist (RC0–RC7) **only when the manuscript is a randomi
223
234
 
224
235
  ### Phase 2I: Diagnostic-Accuracy / Reader-Study Extension
225
236
 
226
- Apply this 8-probe checklist (D1–D8) **only when the manuscript is a diagnostic test accuracy (DTA) primary study** — an index test against a reference standard — including **multi-reader multi-case (MRMC)** reader studies (AI-vs-reader or modality comparison). These probes complement (do not replace) the generic Phase 2 issue checklist and the STARD / QUADAS-2 items; they target verification/spectrum/blinding bias and the MRMC design/variance issues a reader study adds. (For a DTA **meta-analysis**, use Phase 2A / `sr_ma.md`.)
237
+ Apply this 11-probe checklist (D1–D11) **only when the manuscript is a diagnostic test accuracy (DTA) primary study** — an index test against a reference standard — including **multi-reader multi-case (MRMC)** reader studies (AI-vs-reader or modality comparison). These probes complement (do not replace) the generic Phase 2 issue checklist and the STARD / QUADAS-2 items; they target verification/spectrum/blinding bias and the MRMC design/variance issues a reader study adds. (For a DTA **meta-analysis**, use Phase 2A / `sr_ma.md`.)
227
238
 
228
- **Probe detail (D1–D8), with output templates and the leads-vs-findings discipline:** `${CLAUDE_SKILL_DIR}/references/domain-probes/diagnostic_accuracy.md`. Load it and apply each probe when the trigger fires. In this skill, map each probe finding to the review draft as a Major / Minor comment; two-gate (case-control) sampling (D2), verification/incorporation bias (D1), or an MRMC analysis that ignores reader variance (D6) is design/analysis-level — surface it in the Confidential Comments to the Editor and place it as the Major #1 candidate. Pairs the `analyze-stats` `table-types/reader_study.md` table and the `make-figures` `exemplar_plots/mrmc_roc.md` figure; a test-set-tuned operating threshold pairs with `exemplar_reviews/optimistic_validation_reporting.md`.
239
+ **Probe detail (D1–D11), with output templates and the leads-vs-findings discipline:** `${CLAUDE_SKILL_DIR}/references/domain-probes/diagnostic_accuracy.md`. Load it and apply each probe when the trigger fires. In this skill, map each probe finding to the review draft as a Major / Minor comment; two-gate (case-control) sampling (D2), verification/incorporation bias (D1), or an MRMC analysis that ignores reader variance (D6) is design/analysis-level — surface it in the Confidential Comments to the Editor and place it as the Major #1 candidate. Pairs the `analyze-stats` `table-types/reader_study.md` table and the `make-figures` `exemplar_plots/mrmc_roc.md` figure; a test-set-tuned operating threshold pairs with `exemplar_reviews/optimistic_validation_reporting.md`.
229
240
 
230
241
  ### Phase 2J: Case-Report Extension
231
242
 
@@ -396,7 +407,7 @@ After drafting, verify mechanically:
396
407
  - ≥50% of Minor requests use hedged forms ("I'd suggest," "could," "would help") rather than imperative ("must," bare "Please [verb]")
397
408
  - General Comments names ≥2 specific strengths before listing concerns
398
409
  - At most 1 typo/grammar Minor Comment, only if in formal section or systematic
399
- 9. **SR-MA-specific QC** (if Phase 2A applied): Confirm the P0 internal-consistency gate was run before any fabrication claim. For each P1–P17 probe used, verify the corresponding Major comment cites source PMID + source page/table reference + verbatim quote, and that no probe lead was promoted to a finding without source confirmation (leads-vs-findings discipline). Reviews citing extraction errors without source-page reference are not actionable for authors.
410
+ 9. **SR-MA-specific QC** (if Phase 2A applied): Confirm the P0 internal-consistency gate was run before any fabrication claim. For each P1–P19 probe used, verify the corresponding Major comment cites source PMID + source page/table reference + verbatim quote, and that no probe lead was promoted to a finding without source confirmation (leads-vs-findings discipline). Reviews citing extraction errors without source-page reference are not actionable for authors.
400
411
  10. **Radiomics-reproducibility QC** (if Phase 2C applied): If an acquisition-parameter sweep predicts an outcome from its own grid axes (R1 design-grid circularity) or the substantive result is a cross-domain failure framed as success (R3), confirm the recommendation reflects design-level severity and is not softened to a reporting fix. Where a model × threshold/cohort grid yields a few p < 0.05, confirm the multiplicity / expected-false-positive count is named (R4), not deferred to "statistical review needed."
401
412
  11. **Review-article QC** (if Phase 2D applied): Confirm RV1–RV9 are reflected — in particular that novelty/value-add (RV1) is raised for a saturated topic and that gap-filling (RV8) is present, not just error-spotting. Verify SANRA is used as an appraisal aid, not over-enforced as a reporting guideline (no PRISMA demand on a narrative review; only RV3 is SANRA-aligned and phrased as a suggestion). Verify every suggested addition uses "consider adding" phrasing (no "must cite"), is source-confirmed, and that preprints are labeled as preprints (not equated with peer-reviewed guidelines). Confirm Phase 2F was run for the recommendation: when RV1 novelty is a Major in a saturated space with no distinct contribution, the recommendation is escalated toward Reject (the contribution IS the product — weak novelty is unfixable-in-current-form), not defaulted to the revision/Reconsider tier.
402
413
  12. **AI/method/review priority QC**: Before a Major Revision (or Reconsider) recommendation, confirm Phase 2F
@@ -466,7 +477,7 @@ For radiomic feature-reproducibility / phantom parameter-sweep / reliability-fil
466
477
 
467
478
  For Review / narrative / primer / state-of-the-art manuscripts, apply the Phase 2D 9-probe audit (novelty/value-add, scope/aims, evidence-gathering transparency, technical/medical accuracy, taxonomy/synthesis coherence, balance/currency/citation accuracy, load-bearing figures/tables, constructive gap-filling, curated-base circularity) in place of the original-research probes — error-spotting plus proportionate gap-filling, with SANRA used as an appraisal aid only.
468
479
 
469
- For observational studies whose central claim is an adjusted exposure–outcome association, also apply the Phase 2E 16-probe audit (confounding completeness, adjustment-set provenance, selection/collider bias, exposure measurement validity, missing-data / complete-case collapse, residual-confounding E-value, over-adjustment, analysis-unit/clustering, outcome construct validity, overlapping-subset gradient, complex-survey design & weighting, data-driven threshold mining, cross-sectional mediation, interaction scale, selection on modality/procedure availability, serial-imaging lesion-tracking), with O1 (a measured covariate imbalanced by exposure in Table 1 yet absent from the adjustment set) and O7 (an outcome consequence/mediator wrongly adjusted) checked against the manuscript's own Table 1.
480
+ For observational studies whose central claim is an adjusted exposure–outcome association, also apply the Phase 2E 18-probe audit (confounding completeness, adjustment-set provenance, selection/collider bias, exposure measurement validity, missing-data / complete-case collapse, residual-confounding E-value, over-adjustment, analysis-unit/clustering, outcome construct validity, overlapping-subset gradient, complex-survey design & weighting, data-driven threshold mining, cross-sectional mediation, interaction scale, selection on modality/procedure availability, serial-imaging lesion-tracking, many-exposure agnostic-scan multiplicity, pseudoreplication in multi-rater agreement), with O1 (a measured covariate imbalanced by exposure in Table 1 yet absent from the adjustment set) and O7 (an outcome consequence/mediator wrongly adjusted) checked against the manuscript's own Table 1.
470
481
 
471
482
  For cross-modality image-synthesis manuscripts (MRI→PET / MRI→CT / non-contrast→contrast / low-dose→full-dose) that claim functional/molecular information or a substitute for the unavailable target modality, also apply the Phase 2K 4-probe audit (IS1 determinism/information-ceiling vs a source→label baseline, IS2 target-derived-preprocessing/slice-selection leakage, IS3 global vs lesion-level quantitative agreement, IS4 mechanistic/proxy-signal plausibility); IS2 and IS4 are typically unfixable-in-current-form and govern the recommendation per Phase 2F.
472
483
 
@@ -49,6 +49,11 @@ A 5-probe checklist (AO1–AO5, with AO0 as a gate) for medical-AI/ML primary st
49
49
  - (b) **Success-conditioned selection** — the arm or the analyzed subset is gated on an AI-success condition (cases where the model produced an output, segmentations that "passed", studies the pipeline did not fail on), so the comparison is conditioned on the very thing under test.
50
50
  - This is a **design/paradigm-level** defect: the operationalized task, not the prose, is mis-specified, so it cannot be fixed by rewording the claim — escalate **past an ordinary Major** (editors read it as a Reject-grade construct-validity failure; a panel that files it as a fixable Major under-rates it). The fix is a re-designed arm whose task matches the intended deployment workflow and an unconditioned (consecutive / intention-to-diagnose) analysis set.
51
51
 
52
+ **AO7 — Comparative "within/comparable-to X variability" claim whose benchmark X was never quantified**:
53
+ - When the Abstract / hypothesis / Conclusion asserts that a result falls **"within inter-expert variability"**, **"comparable to the reference range"**, or **"on par with human readers"**, the named comparator quantity (the inter-expert spread, the human-reader range) must actually be **computed and reported** in Results / a Table. A benchmark claim whose benchmark does not exist in the paper is an unbenchmarked overclaim — the reader cannot check the comparison because the "within X" bound was never measured (e.g. an agreement-envelope was computed but the *volume* inter-expert spread it is compared against was not).
54
+ - Lead: for each "within / comparable-to / on par with `<comparator>` variability|range|performance" claim, verify the `<comparator>` quantity appears in Results or a Table with a number; if absent → flag as unbenchmarked.
55
+ - Severity: MAJOR when the comparative claim is a headline; the fix is to compute and report the benchmark, or to drop the comparative framing. Distinct from AO5 (metric overstates evidence) — here the comparison *target* is simply missing.
56
+
52
57
  ## Decision-impact / early-deployment probes (DECIDE-AI axis, DI1–DI5)
53
58
 
54
59
  Co-apply when a study claims **clinical utility, deployment, or decision impact** of an AI system, or *is* an early-stage live clinical evaluation. The reporting axis is then DECIDE-AI (early-stage clinical evaluation of AI decision-support); these probes check that a utility/deployment claim rests on real-use evidence, not retrospective accuracy. They sharpen AO4 for the deployment-evaluation case.