{"id":"e6b404e7-91d0-4792-96fb-11e70cab0ddd","shortId":"R2wTNV","kind":"skill","title":"manage-refs","tagline":"Cross-cutting reference manager for medical manuscripts. Single entry point for citation-key validation, journal-CSL pandoc rendering, manuscript ↔ DOCX cross-reference QC, marker conversion (``[N]`` ↔ ``[@key]``), and native Zotero CWYW field-code injection. Replaces the inline ","description":"# Manage-Refs Skill\n\nYou are routing reference-handling work for a medical manuscript. The user is\nsomewhere in the lifecycle — drafting, building a circulation DOCX, swapping\nCSL after a journal rejection, fixing a cross-reference defect surfaced by\nQC, or wiring up live Zotero field codes for a co-author Word workflow. Pick\nthe right tool from the decision table; do not invent a parallel pipeline.\n\n## Why This Skill Exists\n\nReference handling spans every late-stage skill: `/write-paper` builds the\nfirst DOCX, `/revise` rebuilds it after each reviewer round, `/peer-review`\nemits a critique that quotes references back, `/sync-submission` packages the\nfinal tarball, `/find-journal` informs CSL swaps on rejection cascade, and\n`/verify-refs` audits the bibliography. Until 2026-05-01 these scripts lived\nunder `skills/write-paper/scripts/`, which made `/revise` and `/sync-submission`\nsilently depend on a sibling skill — a layering inversion that broke when\n`/write-paper` was loaded into a non-research project. Moving the\nlifecycle tools here turns reference handling into a first-class concern\nwith one decision tree, one set of CSL files, and one provenance file\n(`NOTICE.md`) for the vendored Zotero CWYW writer.\n\nValidated 2026-05-01 against a 21-reference meta-analysis manuscript\n(a meta-analysis project's submission) for both pandoc-citeproc and Zotero-CWYW paths.\n\n## Anti-Hallucination Guarantees\n\n1. **Citekey discipline (Phase 0)**: every in-text citation must be\n   `[@bibkey]` resolvable in `refs.bib`. `scripts/check_citation_keys.py` is\n   a hard gate — UNDEFINED keys exit non-zero and block the build.\n\n   **`[@NEW:topic]` placeholder convention**: while drafting, `/write-paper`\n   may emit `[@NEW:topic_slug]` markers for citations the author still needs\n   to source. `check_citation_keys.py` classifies these as `NEW_PLACEHOLDER`\n   (not UNDEFINED) and exits 0 — the build is allowed to proceed during\n   drafting. Phase 7.6 (DOCX render) is a hard gate: zero NEW_PLACEHOLDER\n   entries must remain. Resolve each by adding the citation to Zotero (then\n   `/lit-sync` refreshes refs.bib) and replacing the placeholder with the\n   real `[@bibkey]`. Never let a `[@NEW:...]` reach a rendered DOCX.\n2. **No hand-typed References list** — references are always rendered by\n   pandoc citeproc + journal CSL or by the Zotero Word plugin (CWYW). See\n   `~/.claude/rules/manuscript-references.md`.\n3. **Zotero metadata is never invented** — `inject_zotero_cwyw.py` fetches\n   item data live from `http://localhost:23119`. Any HTTP failure aborts\n   with a non-zero exit so partial bibliographies never reach the user.\n4. **Marker conversion is mapping-driven** — `md_marker_convert.py` will\n   never guess a Zotero key for a number; unmapped markers stay as `[N]`\n   and are reported on stderr.\n5. **Cross-reference QC is a submission gate** — `scripts/check_xref.py`\n   `--strict` exits 1 on any `MISSING_DOCX` / `MISSING_BODY` / `MISMATCH`,\n   blocking pipelines that try to ship a DOCX whose Table/Figure citations\n   don't match captions.\n6. **Audit boundary**: this skill writes; bibliographic correctness against\n   PubMed/CrossRef stays in `/verify-refs`. Always invoke `/verify-refs`\n   after a render before signing off — one read-only audit, one writer.\n\n## Decision Tree\n\n| Situation | Tool | Why |\n|---|---|---|\n| Validate `[@bibkey]` ↔ `refs.bib` (UNDEFINED / UNUSED keys) | `scripts/check_citation_keys.py` | Hard build gate, runs in seconds |\n| Single-author submission lockdown, frozen output | `scripts/render_pandoc.sh -j <journal>` | Reproducible, CI-friendly |\n| Cascade rejection (e.g., ER → JVIR → CVIR) | `render_pandoc.sh` with new `-j` | CSL swap reformats references in seconds |\n| Reviewer revision: add 1–2 refs to a Word doc with co-authors live | Zotero Word plugin (user GUI) | Minimal disruption to track-changes flow |\n| Reviewer revision: bulk reference change | Edit markdown SSOT, re-run `render_pandoc.sh` | Consistency, no cherry-pick risk |\n| Migrate `[N]` numeric markers → `[@key]` for pandoc | `scripts/md_marker_convert.py --to-keys` | Mapping-driven, partial conversion safe |\n| Convert `[@key]` → `[N]` for round-trip / debug | `scripts/md_marker_convert.py --to-numbers` | Same map, opposite direction |\n| Wire native Zotero CWYW field codes into a .docx (live Refresh in Word) | `scripts/inject_zotero_cwyw.py` | Co-author Word workflow, post-circulation editability |\n| Manuscript ↔ rendered DOCX cross-reference QC | `scripts/check_xref.py --strict` | Submission gate (P0 blocker on mismatch) |\n| Figures/tables submitted as separate attachments (radiology, most medical journals) | `check_xref.py --strict --allow-separate-attachments` | Downgrades `MISSING_DOCX` to WARN; `MISSING_BODY`/`MISMATCH` remain P0 |\n| **Master pre-submission gate** (recommended before any submission) | `scripts/pre_submission_gate.sh` | Chains `check_citation_keys` → `verify_refs --strict` → `render_pandoc` (optional) → `check_xref --strict`; single artifact `qc/pre_submission_gate.json` |\n| Bibliographic audit against PubMed / CrossRef | **delegate** to `/verify-refs` | Audit-only — keep writer/auditor separation |\n\n## Workflows\n\n### A. Pandoc citeproc (default for solo authors and final submissions)\n\nUser provides `manuscript.md` with `[@bibkey]` citations + `refs.bib`.\n1. **Gate**: `python \"${CLAUDE_SKILL_DIR}/scripts/check_citation_keys.py\" manuscript.md refs.bib`\n   — exits non-zero on UNDEFINED keys. Fix and re-run.\n2. **Render**:\n   ```bash\n   \"${CLAUDE_SKILL_DIR}/scripts/render_pandoc.sh\" \\\n     -j european-radiology \\\n     -i manuscript.md \\\n     -b refs.bib \\\n     -o manuscript_final.docx\n   ```\n   Bundled CSLs (in `citation_styles/`): `european-radiology`, `radiology`,\n   `american-journal-of-roentgenology`, `cardiovascular-and-interventional-radiology`,\n   `korean-journal-of-radiology`, `vancouver`, `vancouver-superscript`,\n   `springer-basic-brackets`, `springer-vancouver-brackets`. Use\n   `radiology` for RYAI; use `vancouver` for JVIR (no dedicated CSL).\n3. **QC**:\n   ```bash\n   python3 \"${CLAUDE_SKILL_DIR}/scripts/check_xref.py\" \\\n     --md manuscript.md --docx manuscript_final.docx \\\n     --out qc/xref_audit.json --strict\n   ```\n   Treat `submission_safe: false` as a halt. Route fixes by symptom — see\n   the table in `references/check_xref_symptoms.md`.\n4. **Audit hand-off**: invoke `/verify-refs` for the PubMed/CrossRef audit\n   before sign-off.\n\n### B. Zotero CWYW (co-author Word workflow)\n\nUser has a markdown SSOT and wants reviewers to edit citations directly in\nWord. Each reference must already exist as a Zotero item; the user supplies\na `[N] → ZoteroKey` mapping.\n1. **Convert markers**:\n   ```bash\n   python3 \"${CLAUDE_SKILL_DIR}/scripts/md_marker_convert.py\" \\\n     --input manuscript.md --output manuscript_keys.md \\\n     --map ref_map.json --to-keys\n   ```\n   Optionally stage with `--active-ns 1,2,3,4,19` for a sample build first\n   (validated on an active meta-analysis project: 5-ref sample reduces Word Refresh blast radius\n   when debugging).\n2. **Render to .docx** with pandoc (workflow A) so the body has plain text\n   `[@key]` markers, OR pre-build a .docx some other way that still contains\n   plain `[@key]` text.\n3. **Inject CWYW**:\n   ```bash\n   python3 \"${CLAUDE_SKILL_DIR}/scripts/inject_zotero_cwyw.py\" \\\n     --input manuscript_keys.docx --output manuscript_cwyw.docx \\\n     --user-id 16613550 --keys-from keys.txt\n   ```\n   The script fetches Zotero metadata via the local connector (port 23119);\n   any HTTP failure aborts with non-zero exit.\n4. **First-build instruction** (REQUIRED — see Known Limitation #1): open\n   the output in Word → Zotero tab → **Add/Edit Bibliography** once. After\n   that, **Refresh** keeps citations and bibliography in sync as authors\n   edit.\n5. **Surgical patches are unsafe**: for ref additions in later rounds, edit\n   the markdown SSOT and rebuild the whole .docx instead of regex-patching\n   the post-CWYW file. Zotero's rendered `[N]` superscripts can collide\n   with plain `[N]` markers and corrupt the field codes.\n\n### C. Cascade rejection re-render (find-journal hand-off)\n\nUser got rejected from journal A and `/find-journal` recommended journal B.\n1. Confirm the new CSL exists in `citation_styles/` (or fetch from\n   https://citationstyles.org/styles and drop in).\n2. Re-run `render_pandoc.sh -j <new-csl>` against the same `manuscript.md` +\n   `refs.bib`.\n3. Re-run `check_xref.py --strict`.\n4. Re-run `/verify-refs` if any new references were added during the\n   inter-journal revision.\n\n### D. Cross-reference QC only\n\nUser shipped a manuscript and a reviewer flagged a Table/Figure mismatch.\n1. Run `check_xref.py --strict` on the current `manuscript.md` + `.docx`.\n2. Inspect `qc/xref_audit.json`. Body caption is the SSOT — fix `manuscript.md`\n   and rebuild, never patch the .docx by hand.\n3. See `references/check_xref_symptoms.md` for the\n   `MISSING_BODY` / `MISSING_DOCX` / `MISMATCH` triage table.\n4. For journals that accept figures and tables as **separate attachment files**\n   (the default in European Radiology, Radiology, AJR, JVIR, KJR, and most\n   medical journals), pass `--allow-separate-attachments`. `MISSING_DOCX` rows\n   are then recorded as WARN rather than FAIL; `MISSING_BODY` and `MISMATCH`\n   remain P0 because they indicate SSOT drift, not attachment policy.\n\n### E. Master pre-submission gate (recommended end-to-end chain)\n\nThe single entry point that combines workflows A and D plus `/verify-refs`\ninto one aborting chain. Use this immediately before submission or before\ncirculating a v_N package to senior co-authors.\n\n```bash\nbash \"${CLAUDE_SKILL_DIR}/scripts/pre_submission_gate.sh\" \\\n    --md manuscript/manuscript.md \\\n    --bib manuscript/_src/refs.bib \\\n    --docx submission/<journal>/manuscript.docx \\\n    --allow-separate-attachments    # omit if the journal accepts inline figures/tables\n```\n\nStage order (first failure aborts):\n1. `check_citation_keys.py manuscript.md refs.bib` — UNDEFINED / UNUSED keys\n2. `verify_refs.py refs.bib --strict` — PubMed / CrossRef per-entry verification\n3. `render_pandoc.sh -j <csl> -i ... -b ... -o ...` — invoked only when `--docx` is omitted\n4. `check_xref.py --md ... --docx ... --strict [--allow-separate-attachments]`\n\nOn success the chain writes `qc/pre_submission_gate.json` (plus the\nper-stage artifacts `qc/reference_audit.json` and `qc/xref_audit.json`)\nwith `submission_safe: true`. On any failure the JSON records the failing\nstage and exit code, and the script exits non-zero — do not submit until\nthe failing stage passes.\n\nCritical: the gate does **not** reimplement any check. It calls the existing\nscripts as subprocesses. If you find yourself wanting to add a check, add it\nto the underlying script (the gate then picks it up automatically).\n\n## Quality Gates\n\nThis skill defines **three submission gates** and **one user approval gate**:\n\n- **Gate 1 (citekey integrity)**: `check_citation_keys.py` exits non-zero on\n  UNDEFINED keys. The pipeline halts; the user reviews and fixes.\n- **Gate 2 (cross-reference integrity)**: `check_xref.py --strict` exits 1 on\n  any `MISSING_DOCX` / `MISSING_BODY` / `MISMATCH` row. The user reviews\n  `qc/xref_audit.json` and resolves before proceeding.\n- **Gate 3 (audit hand-off)**: before sign-off, the user must run\n  `/verify-refs` and confirm `submission_safe: true` in\n  `qc/reference_audit.json`. This skill never marks the bibliography\n  audited on its own.\n- **User approval gate (CWYW first build)**: the user must perform Word →\n  Zotero → Add/Edit Bibliography manually after the first\n  `inject_zotero_cwyw.py` build. The skill cannot automate this and warns\n  on stderr that it is required.\n\n## Provenance\n\n`scripts/_vendor_citation_writer.py` is vendored from\n`alisoroushmd/zotero-mcp` @ `ed5dfb71`, MIT licensed. See\n[`NOTICE.md`](./NOTICE.md) and [`LICENSE.zotero-mcp`](./LICENSE.zotero-mcp).\n\n## Related\n\n- `~/.claude/rules/manuscript-references.md` — global rule (decision tree\n  this skill implements)\n- `~/.claude/rules/agent-skill-routing.md` — skill router (this skill is the\n  reference-handling row)\n- `~/.claude/rules/zotero-workflow.md` — BBT auto-export, MCP setup\n- `/verify-refs` — read-only audit (PubMed / CrossRef + first-author\n  cross-check)\n- `/lit-sync` — Zotero ↔ Obsidian sync, `refs.bib` provider\n- `/write-paper` Phase 7.6 — calls this skill (one-line delegation)\n- `/revise`, `/sync-submission`, `/find-journal` — call this skill on\n  rebuild / re-render / cascade\n\n## Known Limitations\n\n1. **First-build empty BIBL field (CWYW)**: `inject_zotero_cwyw.py` writes a\n   stub `ADDIN ZOTERO_BIBL` field; Word's Zotero Refresh treats an empty\n   stub as user-customized and refuses to populate it. User must run\n   Add/Edit Bibliography once. Subsequent Refresh works as expected.\n   Validated on Word for Mac, an active meta-analysis project.\n2. **Webpage / non-journal item types**: handled by the patched\n   `zotero_to_csl_json` that fetches Zotero's native CSL-JSON; do not bypass\n   this patch.\n3. **Surgical post-build regex patches are unsafe** — see Workflow B step 5.\n4. **Local Zotero required for CWYW** — port 23119 must be reachable; no\n   web-API fallback yet (would need `ZOTERO_API_KEY`). On failure the script\n   aborts with non-zero exit so partial builds never ship.","tags":["manage","refs","medsci","skills","aperivue","agent-skills","biostatistics","claude-code","claude-skills","clinical-research","diagnostic-accuracy","irb-protocol"],"capabilities":["skill","source-aperivue","skill-manage-refs","topic-agent-skills","topic-biostatistics","topic-claude-code","topic-claude-skills","topic-clinical-research","topic-diagnostic-accuracy","topic-irb-protocol","topic-literature-review","topic-manuscript","topic-medical-ai","topic-medical-research","topic-meta-analysis"],"categories":["medsci-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Aperivue/medsci-skills/manage-refs","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Aperivue/medsci-skills","source_repo":"https://github.com/Aperivue/medsci-skills","install_from":"skills.sh"}},"qualityScore":"0.499","qualityRationale":"deterministic score 0.50 from registry signals: · indexed on github topic:agent-skills · 98 github stars · SKILL.md body (13,334 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:56:30.669Z","embedding":null,"createdAt":"2026-05-13T12:57:45.726Z","updatedAt":"2026-05-18T18:56:30.669Z","lastSeenAt":"2026-05-18T18:56:30.669Z","tsv":"'-01':168,237 '-05':167,236 '/.claude/rules/agent-skill-routing.md':1674 '/.claude/rules/manuscript-references.md':404,1666 '/.claude/rules/zotero-workflow.md':1685 '/find-journal':153,1163,1723 '/license.zotero-mcp':1664 '/lit-sync':361,1705 '/manuscript.docx':1387 '/notice.md':1660 '/peer-review':140 '/revise':133,176,1721 '/scripts/check_citation_keys.py':779 '/scripts/check_xref.py':865 '/scripts/inject_zotero_cwyw.py':1033 '/scripts/md_marker_convert.py':950 '/scripts/pre_submission_gate.sh':1380 '/scripts/render_pandoc.sh':800 '/styles':1181 '/sync-submission':148,178,1722 '/verify-refs':161,510,513,748,895,1206,1353,1598,1692 '/write-paper':128,191,304,1711 '0':271,329 '1':267,475,577,773,942,966,1075,1167,1236,1404,1539,1567,1735 '16613550':1041 '19':970 '2':380,578,794,967,994,1185,1245,1411,1559,1790 '2026':166,235 '21':240 '23119':418,1056,1839 '3':405,858,968,1025,1196,1263,1421,1585,1818 '4':436,889,969,1066,1202,1275,1433,1832 '5':463,984,1098,1831 '6':498 '7.6':339,1713 'abort':422,1060,1356,1403,1858 'accept':1279,1396 'activ':964,979,1785 'active-n':963 'ad':355,1212 'add':576,1509,1512 'add/edit':1083,1628,1771 'addin':1747 'addit':1105 'ajr':1293 'alisoroushmd/zotero-mcp':1654 'allow':333,702,1302,1389,1439 'allow-separate-attach':701,1301,1388,1438 'alreadi':929 'alway':389,511 'american':821 'american-journal-of-roentgenolog':820 'analysi':244,249,982,1788 'anti':264 'anti-hallucin':263 'api':1846,1852 'approv':1536,1617 'artifact':739,1453 'attach':694,704,1285,1304,1328,1391,1441 'audit':162,499,524,742,750,890,899,1586,1612,1696 'audit-on':749 'author':99,314,547,587,668,762,909,1096,1374,1701 'auto':1688 'auto-export':1687 'autom':1639 'automat':1524 'b':807,904,1166,1425,1829 'back':147 'bash':796,860,945,1028,1375,1376 'basic':841 'bbt':1686 'bib':1383 'bibkey':279,371,533,770 'bibl':1740,1749 'bibliograph':504,741 'bibliographi':164,431,1084,1092,1611,1629,1772 'blast':990 'block':295,483 'blocker':687 'bodi':481,711,1004,1248,1269,1317,1573 'boundari':500 'bracket':842,846 'broke':189 'build':69,129,297,331,540,974,1013,1069,1621,1635,1738,1822,1866 'bulk':603 'bundl':811 'bypass':1815 'c':1144 'call':1497,1714,1724 'cannot':1638 'caption':497,1249 'cardiovascular':826 'cardiovascular-and-interventional-radiolog':825 'cascad':159,558,1145,1732 'chain':725,1341,1357,1445 'chang':599,605 'check':726,735,1495,1511,1704 'check_citation_keys.py':319,1405,1542 'check_xref.py':699,1200,1238,1434,1564 'cherri':616 'cherry-pick':615 'ci':556 'ci-friend':555 'circul':71,673,1365 'citat':17,276,312,357,493,727,771,814,922,1090,1174 'citation-key':16 'citationstyles.org':1180 'citationstyles.org/styles':1179 'citekey':268,1540 'citeproc':257,393,758 'class':212 'classifi':320 'claud':776,797,862,947,1030,1377 'co':98,586,667,908,1373 'co-author':97,585,666,907,1372 'code':41,94,657,1143,1472 'collid':1134 'combin':1347 'concern':213 'confirm':1168,1600 'connector':1054 'consist':613 'contain':1021 'convent':301 'convers':32,438,634 'convert':636,943 'correct':505 'corrupt':1140 'critic':1488 'critiqu':143 'cross':5,28,82,465,679,1221,1561,1703 'cross-check':1702 'cross-cut':4 'cross-refer':27,81,464,678,1220,1560 'crossref':745,1416,1698 'csl':22,74,155,221,395,568,857,1171,1803,1811 'csl-json':1810 'csls':812 'current':1242 'custom':1762 'cut':6 'cvir':563 'cwyw':38,232,261,402,655,906,1027,1126,1619,1742,1837 'd':1219,1351 'data':414 'debug':643,993 'decis':108,216,527,1669 'dedic':856 'default':759,1288 'defect':84 'defin':1529 'deleg':746,1720 'depend':180 'dir':778,799,864,949,1032,1379 'direct':651,923 'disciplin':269 'disrupt':595 'doc':583 'docx':26,72,132,340,379,479,490,660,677,707,868,997,1015,1117,1244,1260,1271,1306,1385,1430,1436,1571 'downgrad':705 'draft':68,303,337 'drift':1326 'driven':442,632 'drop':1183 'e':1330 'e.g':560 'ed5dfb71':1655 'edit':606,674,921,1097,1109 'emit':141,306 'empti':1739,1757 'end':1338,1340 'end-to-end':1337 'entri':13,349,1344,1419 'er':561 'european':803,817,1290 'european-radiolog':802,816 'everi':123,272 'exist':119,930,1172,1499 'exit':290,328,428,474,782,1065,1471,1476,1543,1566,1863 'expect':1778 'export':1689 'fail':1315,1468,1485 'failur':421,1059,1402,1463,1855 'fallback':1847 'fals':876 'fetch':412,1048,1177,1806 'field':40,93,656,1142,1741,1750 'field-cod':39 'figur':1280 'figures/tables':690,1398 'file':222,226,1127,1286 'final':151,764 'find':1151,1505 'find-journ':1150 'first':131,211,975,1068,1401,1620,1633,1700,1737 'first-author':1699 'first-build':1067,1736 'first-class':210 'fix':79,789,881,1253,1557 'flag':1232 'flow':600 'friend':557 'frozen':550 'gate':287,345,471,541,685,719,774,1335,1490,1519,1526,1532,1537,1538,1558,1584,1618 'global':1667 'got':1157 'guarante':266 'guess':446 'gui':593 'hallucin':265 'halt':879,1552 'hand':383,892,1154,1262,1588 'hand-off':891,1153,1587 'hand-typ':382 'handl':55,121,207,1683,1797 'hard':286,344,539 'http':420,1058 'id':1040 'immedi':1360 'implement':1673 'in-text':273 'indic':1324 'inform':154 'inject':42,1026 'inject_zotero_cwyw.py':411,1634,1743 'inlin':45,1397 'input':951,1034 'inspect':1246 'instead':1118 'instruct':1070 'integr':1541,1563 'inter':1216 'inter-journ':1215 'intervent':828 'invent':112,410 'invers':187 'invok':512,894,1427 'item':413,934,1795 'j':553,567,801,1190,1423 'journal':21,77,394,698,822,832,1152,1160,1165,1217,1277,1299,1395,1794 'journal-csl':20 'json':1465,1804,1812 'jvir':562,854,1294 'keep':752,1089 'key':18,34,289,449,537,623,629,637,728,788,959,1008,1023,1043,1410,1549,1853 'keys-from':1042 'keys.txt':1045 'kjr':1295 'known':1073,1733 'korean':831 'korean-journal-of-radiolog':830 'late':125 'late-stag':124 'later':1107 'layer':186 'let':373 'licens':1657 'license.zotero':1662 'lifecycl':67,202 'limit':1074,1734 'line':1719 'list':386 'live':91,171,415,588,661 'load':193 'local':1053,1833 'localhost':417 'lockdown':549 'mac':1783 'made':175 'manag':2,8,47 'manage-ref':1,46 'manual':1630 'manuscript':11,25,60,245,675,1228 'manuscript.md':768,780,806,867,952,1194,1243,1254,1406 'manuscript/_src/refs.bib':1384 'manuscript/manuscript.md':1382 'manuscript_cwyw.docx':1037 'manuscript_final.docx':810,869 'manuscript_keys.docx':1035 'manuscript_keys.md':954 'map':441,631,649,941,955 'mapping-driven':440,630 'mark':1609 'markdown':607,915,1111 'marker':31,310,437,454,622,944,1009,1138 'master':715,1331 'match':496 'may':305 'mcp':1663,1690 'md':866,1381,1435 'md_marker_convert.py':443 'medic':10,59,697,1298 'meta':243,248,981,1787 'meta-analysi':242,247,980,1786 'metadata':407,1050 'migrat':619 'minim':594 'mismatch':482,689,712,1235,1272,1319,1574 'miss':478,480,706,710,1268,1270,1305,1316,1570,1572 'mit':1656 'move':200 'must':277,350,928,1596,1624,1769,1840 'n':33,457,620,638,939,1131,1137,1368 'nativ':36,653,1809 'need':316,1850 'never':372,409,432,445,1257,1608,1867 'new':298,307,323,347,375,566,1170,1209 'non':197,292,426,784,1063,1478,1545,1793,1861 'non-journ':1792 'non-research':196 'non-zero':291,425,783,1062,1477,1544,1860 'notice.md':227,1659 'ns':965 'number':452,647 'numer':621 'o':809,1426 'obsidian':1707 'omit':1392,1432 'one':215,218,224,520,525,1355,1534,1718 'one-lin':1717 'open':1076 'opposit':650 'option':734,960 'order':1400 'output':551,953,1036,1078 'p0':686,714,1321 'packag':149,1369 'pandoc':23,256,392,625,733,757,999 'pandoc-citeproc':255 'parallel':114 'partial':430,633,1865 'pass':1300,1487 'patch':1100,1122,1258,1800,1817,1824 'path':262 'per':1418,1451 'per-entri':1417 'per-stag':1450 'perform':1625 'phase':270,338,1712 'pick':102,617,1521 'pipelin':115,484,1551 'placehold':300,324,348,367 'plain':1006,1022,1136 'plugin':401,591 'plus':1352,1448 'point':14,1345 'polici':1329 'popul':1766 'port':1055,1838 'post':672,1125,1821 'post-build':1820 'post-circul':671 'post-cwyw':1124 'pre':717,1012,1333 'pre-build':1011 'pre-submiss':716,1332 'proceed':335,1583 'project':199,250,983,1789 'proven':225,1649 'provid':767,1710 'pubm':744,1415,1697 'pubmed/crossref':507,898 'python':775 'python3':861,946,1029 'qc':30,87,467,681,859,1223 'qc/pre_submission_gate.json':740,1447 'qc/reference_audit.json':1454,1605 'qc/xref_audit.json':871,1247,1456,1579 'qualiti':1525 'quot':145 'radiolog':695,804,818,819,829,834,848,1291,1292 'radius':991 'rather':1313 're':610,792,1148,1187,1198,1204,1730 're-rend':1147,1729 're-run':609,791,1186,1197,1203 'reach':376,433 'reachabl':1842 'read':522,1694 'read-on':521,1693 'real':370 'rebuild':134,1114,1256,1728 'recommend':720,1164,1336 'record':1310,1466 'reduc':987 'ref':3,48,579,730,985,1104 'ref_map.json':956 'refer':7,29,54,83,120,146,206,241,385,387,466,571,604,680,927,1210,1222,1562,1682 'reference-handl':53,1681 'references/check_xref_symptoms.md':888,1265 'reformat':570 'refresh':362,662,989,1088,1754,1775 'refs.bib':282,363,534,772,781,808,1195,1407,1413,1709 'refus':1764 'regex':1121,1823 'regex-patch':1120 'reimplement':1493 'reject':78,158,559,1146,1158 'relat':1665 'remain':351,713,1320 'render':24,341,378,390,516,676,732,795,995,1130,1149,1731 'render_pandoc.sh':564,612,1189,1422 'replac':43,365 'report':460 'reproduc':554 'requir':1071,1648,1835 'research':198 'resolv':280,352,1581 'review':138,574,601,919,1231,1555,1578 'revis':575,602,1218 'right':104 'risk':618 'roentgenolog':824 'round':139,641,1108 'round-trip':640 'rout':52,880 'router':1676 'row':1307,1575,1684 'rule':1668 'run':542,611,793,1188,1199,1205,1237,1597,1770 'ryai':850 'safe':635,875,1459,1602 'sampl':973,986 'script':170,1047,1475,1500,1517,1857 'scripts/_vendor_citation_writer.py':1650 'scripts/check_citation_keys.py':283,538 'scripts/check_xref.py':472,682 'scripts/inject_zotero_cwyw.py':665 'scripts/md_marker_convert.py':626,644 'scripts/pre_submission_gate.sh':724 'scripts/render_pandoc.sh':552 'second':544,573 'see':403,884,1072,1264,1658,1827 'senior':1371 'separ':693,703,754,1284,1303,1390,1440 'set':219 'setup':1691 'ship':488,1226,1868 'sibl':183 'sign':518,902,1592 'sign-off':901,1591 'silent':179 'singl':12,546,738,1343 'single-author':545 'situat':529 'skill':49,118,127,184,502,777,798,863,948,1031,1378,1528,1607,1637,1672,1675,1678,1716,1726 'skill-manage-refs' 'skills/write-paper/scripts':173 'slug':309 'solo':761 'somewher':64 'sourc':318 'source-aperivue' 'span':122 'springer':840,844 'springer-basic-bracket':839 'springer-vancouver-bracket':843 'ssot':608,916,1112,1252,1325 'stage':126,961,1399,1452,1469,1486 'stay':455,508 'stderr':462,1644 'step':1830 'still':315,1020 'strict':473,683,700,731,737,872,1201,1239,1414,1437,1565 'stub':1746,1758 'style':815,1175 'submiss':252,470,548,684,718,723,765,874,1334,1362,1386,1458,1531,1601 'submit':691,1482 'subprocess':1502 'subsequ':1774 'success':1443 'superscript':838,1132 'suppli':937 'surfac':85 'surgic':1099,1819 'swap':73,156,569 'symptom':883 'sync':1094,1708 'tab':1082 'tabl':109,886,1274,1282 'table/figure':492,1234 'tarbal':152 'text':275,1007,1024 'three':1530 'to-key':627,957 'to-numb':645 'tool':105,203,530 'topic':299,308 'topic-agent-skills' 'topic-biostatistics' 'topic-claude-code' 'topic-claude-skills' 'topic-clinical-research' 'topic-diagnostic-accuracy' 'topic-irb-protocol' 'topic-literature-review' 'topic-manuscript' 'topic-medical-ai' 'topic-medical-research' 'topic-meta-analysis' 'track':598 'track-chang':597 'treat':873,1755 'tree':217,528,1670 'tri':486 'triag':1273 'trip':642 'true':1460,1603 'turn':205 'type':384,1796 'undefin':288,326,535,787,1408,1548 'under':1516 'unmap':453 'unsaf':1102,1826 'unus':536,1409 'use':847,851,1358 'user':62,435,592,766,912,936,1039,1156,1225,1535,1554,1577,1595,1616,1623,1761,1768 'user-custom':1760 'user-id':1038 'v':1367 'valid':19,234,532,976,1779 'vancouv':835,837,845,852 'vancouver-superscript':836 'vendor':230,1652 'verif':1420 'verifi':729 'verify_refs.py':1412 'via':1051 'want':918,1507 'warn':709,1312,1642 'way':1018 'web':1845 'web-api':1844 'webpag':1791 'whole':1116 'whose':491 'wire':89,652 'word':100,400,582,590,664,669,910,925,988,1080,1626,1751,1781 'work':56,1776 'workflow':101,670,755,911,1000,1348,1828 'would':1849 'write':503,1446,1744 'writer':233,526 'writer/auditor':753 'xref':736 'yet':1848 'zero':293,346,427,785,1064,1479,1546,1862 'zotero':37,92,231,260,359,399,406,448,589,654,905,933,1049,1081,1128,1627,1706,1748,1753,1801,1807,1834,1851 'zotero-cwyw':259 'zoterokey':940","prices":[{"id":"ce8fd02d-2a69-4221-a085-99831d8b6183","listingId":"e6b404e7-91d0-4792-96fb-11e70cab0ddd","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Aperivue","category":"medsci-skills","install_from":"skills.sh"},"createdAt":"2026-05-13T12:57:45.726Z"}],"sources":[{"listingId":"e6b404e7-91d0-4792-96fb-11e70cab0ddd","source":"github","sourceId":"Aperivue/medsci-skills/manage-refs","sourceUrl":"https://github.com/Aperivue/medsci-skills/tree/main/skills/manage-refs","isPrimary":false,"firstSeenAt":"2026-05-13T12:57:45.726Z","lastSeenAt":"2026-05-18T18:56:30.669Z"}],"details":{"listingId":"e6b404e7-91d0-4792-96fb-11e70cab0ddd","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Aperivue","slug":"manage-refs","github":{"repo":"Aperivue/medsci-skills","stars":98,"topics":["agent-skills","biostatistics","claude-code","claude-skills","clinical-research","diagnostic-accuracy","irb-protocol","literature-review","manuscript","medical-ai","medical-research","meta-analysis","physician-researcher","prisma","pubmed","radiology","reporting-guidelines","strobe","systematic-review","tripod-ai"],"license":"other","html_url":"https://github.com/Aperivue/medsci-skills","pushed_at":"2026-05-17T20:50:52Z","description":"Claude Code skills for medical research — literature search, reporting guidelines, statistical analysis, publication figures. Built by a physician-researcher, tested on real publications. MIT licensed.","skill_md_sha":"58843da6f49bd70371da74e89be9991493e94b77","skill_md_path":"skills/manage-refs/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Aperivue/medsci-skills/tree/main/skills/manage-refs"},"layout":"multi","source":"github","category":"medsci-skills","frontmatter":{"name":"manage-refs","description":"Cross-cutting reference manager for medical manuscripts. Single entry point for citation-key validation, journal-CSL pandoc rendering, manuscript ↔ DOCX cross-reference QC, marker conversion (``[N]`` ↔ ``[@key]``), and native Zotero CWYW field-code injection. Replaces the inline reference-handling that previously lived in ``/write-paper`` Phase 7.6 and is reused by ``/revise``, ``/peer-review``, ``/sync-submission``, and any skill that produces a journal submission. Audit-only verification stays in ``/verify-refs`` — this skill writes (renders, injects, converts); that skill only reads."},"skills_sh_url":"https://skills.sh/Aperivue/medsci-skills/manage-refs"},"updatedAt":"2026-05-18T18:56:30.669Z"}}