medsci-skills 5.26.0 → 5.26.1
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/metadata/distribution_files.json +4 -4
- package/metadata/distribution_manifest.json +1 -1
- package/package.json +1 -1
- package/skills/self-review/tests/fixtures/citation_order_bad.md +9 -12
- package/skills/self-review/tests/test_citation_order.sh +2 -2
- package/skills/sync-submission/SKILL.md +5 -5
- package/skills/verify-refs/scripts/verify_refs.py +3 -5
- package/skills/verify-refs/tests/test_fabricated_author.sh +2 -3
|
@@ -5468,8 +5468,8 @@
|
|
|
5468
5468
|
},
|
|
5469
5469
|
{
|
|
5470
5470
|
"path": "skills/sync-submission/SKILL.md",
|
|
5471
|
-
"size":
|
|
5472
|
-
"sha256": "
|
|
5471
|
+
"size": 40790,
|
|
5472
|
+
"sha256": "45b228823952b028f0ec8160cd3e457f95b37a0a8fe692a09349a49d1e91054a"
|
|
5473
5473
|
},
|
|
5474
5474
|
{
|
|
5475
5475
|
"path": "skills/sync-submission/references/journal_availability_policy.json",
|
|
@@ -5828,8 +5828,8 @@
|
|
|
5828
5828
|
},
|
|
5829
5829
|
{
|
|
5830
5830
|
"path": "skills/verify-refs/scripts/verify_refs.py",
|
|
5831
|
-
"size":
|
|
5832
|
-
"sha256": "
|
|
5831
|
+
"size": 49027,
|
|
5832
|
+
"sha256": "289a91883045bbc38d8e16f65d3e858a106edbb3413ecf6e2d723f353b733362"
|
|
5833
5833
|
},
|
|
5834
5834
|
{
|
|
5835
5835
|
"path": "skills/verify-refs/skill.yml",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "medsci-skills",
|
|
3
|
-
"version": "5.26.
|
|
3
|
+
"version": "5.26.1",
|
|
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,24 +1,21 @@
|
|
|
1
1
|
# Abstract
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This is a synthetic document for testing citation order.
|
|
4
4
|
|
|
5
5
|
# Methods
|
|
6
6
|
|
|
7
|
-
The
|
|
8
|
-
|
|
9
|
-
Table S9. Baseline characteristics by alternative strata appear in Table S16.
|
|
7
|
+
The planned groups are listed in Table 4. Additional setup information is in
|
|
8
|
+
Table S3, and the variable glossary is in Table S1. The example protocol is in Table S8.
|
|
10
9
|
|
|
11
10
|
# Results
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
and the exploratory model in Table S6. Five-year incidences are in Table 3, and the
|
|
16
|
-
landmark model in Table 4. The returner comparison is in Table S2.
|
|
12
|
+
Group summaries appear in Table 2 and Table 1. Further summaries are in Table S2
|
|
13
|
+
and Table S6. The final comparison appears in Table 3, with an example in Table S4.
|
|
17
14
|
|
|
18
15
|
# Discussion
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
Sensitivity analyses S1 through S6 are analysis-plan labels, not supplementary tables.
|
|
18
|
+
The schematic appears in Supplementary Figure S1.
|
|
22
19
|
|
|
23
20
|
# References
|
|
24
21
|
|
|
@@ -26,6 +23,6 @@ labels, not supplementary tables). Schematic in Supplementary Figure S1.
|
|
|
26
23
|
|
|
27
24
|
# Figure Legends
|
|
28
25
|
|
|
29
|
-
**Figure 1.**
|
|
26
|
+
**Figure 1.** Synthetic flow diagram.
|
|
30
27
|
|
|
31
|
-
**Figure 2.**
|
|
28
|
+
**Figure 2.** Example comparison; additional details in Table S3.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# Regression test for the float citation-ORDER gate (journal technical-check pass).
|
|
3
|
-
# Synthetic, PII-free fixtures: a manuscript whose main Tables (
|
|
4
|
-
# supplementary Tables (
|
|
3
|
+
# Synthetic, PII-free fixtures: a manuscript whose main Tables (4,2,1,3) and
|
|
4
|
+
# supplementary Tables (S3,S1,S8,S2,S6,S4) are cited out of numerical order, and
|
|
5
5
|
# a clean manuscript where every series is cited in ascending order (incl. a plural
|
|
6
6
|
# list "Tables S4, S5", a back-matter legends block that must be excluded, and a
|
|
7
7
|
# non-float "S1 through S6" sensitivity label that must NOT be parsed as tables).
|
|
@@ -261,18 +261,18 @@ Body words are matched with a 5% tolerance ("approximately N words"
|
|
|
261
261
|
phrasing). Abstract words tolerate ±5. Reference / table / figure counts
|
|
262
262
|
require exact match.
|
|
263
263
|
|
|
264
|
-
|
|
264
|
+
Example `qc/cover_letter_drift.json` (synthetic values):
|
|
265
265
|
|
|
266
266
|
```json
|
|
267
267
|
{
|
|
268
268
|
"submission_safe": false,
|
|
269
|
-
"truth": {"body_words":
|
|
269
|
+
"truth": {"body_words": 2400, "abstract_words": 210, "references": 10,
|
|
270
270
|
"tables": 3, "figures": 4},
|
|
271
|
-
"claims": {"body_words":
|
|
271
|
+
"claims": {"body_words": 2800, "abstract_words": 250, "references": 10},
|
|
272
272
|
"drifts": [
|
|
273
|
-
{"field": "body_words", "truth":
|
|
273
|
+
{"field": "body_words", "truth": 2400, "cover_letter_claim": 2800,
|
|
274
274
|
"severity": "MAJOR",
|
|
275
|
-
"note": "|claim - truth| =
|
|
275
|
+
"note": "|claim - truth| = 400 > tolerance 120"}
|
|
276
276
|
]
|
|
277
277
|
}
|
|
278
278
|
```
|
|
@@ -735,8 +735,7 @@ def author_cross_check(
|
|
|
735
735
|
Returns ``(mismatches, notes)``: ``mismatches`` — human-readable mismatch strings
|
|
736
736
|
(empty = clean); ``notes`` — non-mismatch evidence strings (the truncation note).
|
|
737
737
|
This is the sole decision surface behind an AUTHOR MISMATCH status, extracted so
|
|
738
|
-
the fabricated-co-author path
|
|
739
|
-
fabricated co-author names) has a network-free regression test
|
|
738
|
+
the fabricated-co-author path has a network-free regression test
|
|
740
739
|
(``tests/test_fabricated_author.sh``). Behaviour is identical to the inline logic
|
|
741
740
|
it replaced in ``verify_record``.
|
|
742
741
|
"""
|
|
@@ -786,7 +785,7 @@ def verify_record(record: RefRecord, offline: bool, timeout: int,
|
|
|
786
785
|
1. PubMed efetch (XML full-record) — best (motivation: CrossRef returned a
|
|
787
786
|
wrong given name "Vasileios" vs PubMed efetch authoritative "Victoria";
|
|
788
787
|
also catches AI-generated bib entries with hallucinated #2..#N family
|
|
789
|
-
names
|
|
788
|
+
names).
|
|
790
789
|
2. CrossRef DOI (fallback when no PMID).
|
|
791
790
|
3. OpenAlex (tertiary; conference proceedings / non-DOI / non-biomedical works
|
|
792
791
|
that PubMed and CrossRef miss — the free analogue of a portal's Scopus pass).
|
|
@@ -1037,8 +1036,7 @@ def write_outputs(records: list[RefRecord], project_root: Path, source: Path,
|
|
|
1037
1036
|
v1.3.0 (2026-05): full-author cross-check. records[] now carry cited_authors[],
|
|
1038
1037
|
actual_authors[], and author counts; schema_version bumps to 4. MISMATCH now
|
|
1039
1038
|
fires on any #2..#N family hallucination or author-count mismatch, not just the
|
|
1040
|
-
first author
|
|
1041
|
-
fabricated co-author given names previously passed audit).
|
|
1039
|
+
first author. A correct lead author does not verify the remaining author list.
|
|
1042
1040
|
"""
|
|
1043
1041
|
qc_dir = project_root / "qc"
|
|
1044
1042
|
qc_dir.mkdir(parents=True, exist_ok=True)
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
#
|
|
4
4
|
# author_cross_check() is the sole decision surface behind an AUTHOR MISMATCH status
|
|
5
5
|
# (family-by-family + author-count). It is the repo's most trust-critical citation
|
|
6
|
-
# check: a
|
|
7
|
-
#
|
|
8
|
-
# that. This test locks the logic so a refactor cannot silently drop the MISMATCH
|
|
6
|
+
# check: a correct first author and DOI can coexist with fabricated co-author
|
|
7
|
+
# names. This test locks the logic so a refactor cannot silently drop the MISMATCH
|
|
9
8
|
# path. Stdlib-only, no network (the pure function is tested in isolation, so no
|
|
10
9
|
# PubMed/CrossRef/OpenAlex call is made).
|
|
11
10
|
set -u
|