Citation Verifier
Generate citations/ref.bib and ensure every entry has a traceable verification record in citations/verified.jsonl.
When network access is restricted, prefer a “record now, verify later” workflow: keep URLs/titles consistent and leave a clear verification note.
Input
Outputs
citations/ref.bib
citations/verified.jsonl
Workflow (heuristic)
- Collect
bibkey, title, url, year, authors from papers/paper_notes.jsonl.
- Write/refresh
citations/ref.bib:
- Prefer arXiv-style fields when
arxiv_id / primary_category exist (eprint, archivePrefix, primaryClass).
- Write one verification record per BibTeX entry to
citations/verified.jsonl with at least:
- If you cannot verify via network, record a clear
notes field (e.g., “auto-generated; needs manual verification”) and/or request human confirmation depending on your policy.
Quality checklist
Offline Mode
When network access is restricted, run in offline mode to produce auditable records now, then verify later.
- Generate offline records:
verification_status: offline_generated
- Verify later (when network is available):
--verify-only
verification_status
offline_generated: record was generated without network verification (needs later verification)
verified_online: URL/title verified successfully by the script
verify_failed: verification was attempted but failed (network error or title mismatch)
needs_manual_verification: missing/ambiguous fields (e.g., empty url/title)
Script
Quick Start
python .codex/skills/citation-verifier/scripts/run.py --help
- Offline (record now, verify later):
python .codex/skills/citation-verifier/scripts/run.py --workspace <workspace_dir> --offline
All Options
--offline: do not attempt network verification; write verification_status=offline_generated
--verify-only: verify existing citations/verified.jsonl records (does not rewrite BibTeX)
--verification-note <text>: stored in citations/verified.jsonl notes
Examples
- Generate BibTeX + offline verification records:
python .codex/skills/citation-verifier/scripts/run.py --workspace <ws> --offline --verification-note "auto-generated; needs manual verification"
- Later, verify-only (when network is available):
python .codex/skills/citation-verifier/scripts/run.py --workspace <ws> --verify-only
Notes
- Minimal requirement for every verification record:
url, date, title.
- The script sanitizes stray/unbalanced
{} in titles to keep bibtex parsing robust.
- The script escapes LaTeX special chars in text fields (
& % $ # _) and rewrites superscript patterns like X^N or X$^N$ as X\textsuperscript{N} to keep LaTeX builds stable.
- URLs are kept raw in BibTeX
url fields (BibTeX styles wrap them with \url{...}); @misc uses howpublished=\url{...}.
- In offline mode, records are not truly verified; treat
offline_generated as a to-do for human/network verification.
Troubleshooting
Common Issues
Issue: Missing bibkey / missing url in notes
Symptom:
citations/ref.bib is missing entries, or verified.jsonl has empty url/title.
Causes:
papers/paper_notes.jsonl lacks bibkey/url fields.
Solutions:
- Ensure each core paper note has a stable
bibkey and a canonical url.
- Rerun citation generation after fixing notes.
Issue: verification_status=offline_generated
Symptom:
- Records exist but are not truly verified.
Causes:
--offline was used, or network verification was unavailable.
Solutions:
- When network is available, run
--verify-only to upgrade records.
- Or manually verify and update
citations/verified.jsonl with notes.
Recovery Checklist
1---2name: citation-verifier3description: Generate and verify BibTeX entries from paper notes, writing `citations/ref.bib` and `citations/verified.jsonl`. **Trigger**: citation, BibTeX, ref.bib, verified.jsonl, references, 引用, 参考文献. **Use when**: 已有 `papers/paper_notes.jsonl`,需要为 prose/LaTeX 准备可追溯的引用(每条都有 url/date/title 验证记录)。 **Skip if**: 还没有 paper notes(或本次产出不需要引用/参考文献)。 **Network**: 自动验证通常需要网络;无网络时可先 record,再标注 needs manual verification。 **Guardrail**: 每个 BibTeX entry 必须对应一条 `citations/verified.jsonl` 记录;prose 只能使用已存在于 `citations/ref.bib` 的 citation keys。4---5
6# Citation Verifier
7
8Generate `citations/ref.bib` and ensure every entry has a traceable verification record in `citations/verified.jsonl`.
9
10When network access is restricted, prefer a “record now, verify later” workflow: keep URLs/titles consistent and leave a clear verification note.
11
12## Input
13
14- `papers/paper_notes.jsonl`
15
16## Outputs
17
18- `citations/ref.bib`
19- `citations/verified.jsonl`
20
21## Workflow (heuristic)
22
231. Collect `bibkey`, `title`, `url`, `year`, `authors` from `papers/paper_notes.jsonl`.
242. Write/refresh `citations/ref.bib`:
25 - Prefer arXiv-style fields when `arxiv_id` / `primary_category` exist (`eprint`, `archivePrefix`, `primaryClass`).
263. Write one verification record per BibTeX entry to `citations/verified.jsonl` with at least:
27 - `bibkey`, `title`, `url`, `date`
284. If you cannot verify via network, record a clear `notes` field (e.g., “auto-generated; needs manual verification”) and/or request human confirmation depending on your policy.
29
30## Quality checklist
31
32- [ ] Every BibTeX entry has a corresponding `verified.jsonl` record.
33- [ ] No missing `url`/`date`/`title` in verification records.
34
35## Offline Mode
36
37When network access is restricted, run in offline mode to produce auditable records now, then verify later.
38
39- Generate offline records: `verification_status: offline_generated`
40- Verify later (when network is available): `--verify-only`
41
42### `verification_status`
43
44- `offline_generated`: record was generated without network verification (needs later verification)
45- `verified_online`: URL/title verified successfully by the script
46- `verify_failed`: verification was attempted but failed (network error or title mismatch)
47- `needs_manual_verification`: missing/ambiguous fields (e.g., empty `url`/`title`)
48
49## Script
50
51### Quick Start
52
53- `python .codex/skills/citation-verifier/scripts/run.py --help`
54- Offline (record now, verify later): `python .codex/skills/citation-verifier/scripts/run.py --workspace <workspace_dir> --offline`
55
56### All Options
57
58- `--offline`: do not attempt network verification; write `verification_status=offline_generated`
59- `--verify-only`: verify existing `citations/verified.jsonl` records (does not rewrite BibTeX)
60- `--verification-note <text>`: stored in `citations/verified.jsonl` `notes`
61
62### Examples
63
64- Generate BibTeX + offline verification records:
65 - `python .codex/skills/citation-verifier/scripts/run.py --workspace <ws> --offline --verification-note "auto-generated; needs manual verification"`
66- Later, verify-only (when network is available):
67 - `python .codex/skills/citation-verifier/scripts/run.py --workspace <ws> --verify-only`
68
69### Notes
70
71- Minimal requirement for every verification record: `url`, `date`, `title`.
72- The script sanitizes stray/unbalanced `{}` in titles to keep `bibtex` parsing robust.
73- The script escapes LaTeX special chars in text fields (`& % $ # _`) and rewrites superscript patterns like `X^N` or `X$^N$` as `X\textsuperscript{N}` to keep LaTeX builds stable.
74- URLs are kept raw in BibTeX `url` fields (BibTeX styles wrap them with `\url{...}`); `@misc` uses `howpublished=\url{...}`.
75- In offline mode, records are *not* truly verified; treat `offline_generated` as a to-do for human/network verification.
76
77## Troubleshooting
78
79### Common Issues
80
81#### Issue: Missing `bibkey` / missing `url` in notes
82
83**Symptom**:
84- `citations/ref.bib` is missing entries, or `verified.jsonl` has empty `url/title`.
85
86**Causes**:
87- `papers/paper_notes.jsonl` lacks `bibkey`/`url` fields.
88
89**Solutions**:
90- Ensure each core paper note has a stable `bibkey` and a canonical `url`.
91- Rerun citation generation after fixing notes.
92
93#### Issue: `verification_status=offline_generated`
94
95**Symptom**:
96- Records exist but are not truly verified.
97
98**Causes**:
99- `--offline` was used, or network verification was unavailable.
100
101**Solutions**:
102- When network is available, run `--verify-only` to upgrade records.
103- Or manually verify and update `citations/verified.jsonl` with notes.
104
105### Recovery Checklist
106
107- [ ] Every BibTeX entry has a matching `citations/verified.jsonl` record.
108- [ ] Verification records include `url`, `date`, `title`.