Citation Verifier
Triggers & routing
- Trigger: citation, BibTeX, ref.bib, verified.jsonl, references, 引用, 参考文献.
- Use when: 已有
papers/paper_notes.jsonl,需要为 prose/LaTeX 准备可追溯的引用(每条都有 url/date/title 验证记录)。
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
uv run python .codex/skills/citation-verifier/scripts/run.py --help
- Offline (record now, verify later):
uv run python .codex/skills/citation-verifier/scripts/run.py --workspace <workspace> --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:
uv run python .codex/skills/citation-verifier/scripts/run.py --workspace <workspace> --offline --verification-note "auto-generated; needs manual verification"
- Later, verify-only (when network is available):
uv run python .codex/skills/citation-verifier/scripts/run.py --workspace <workspace> --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`.4---56# Citation Verifier78## Triggers & routing910- **Trigger**: citation, BibTeX, ref.bib, verified.jsonl, references, 引用, 参考文献.11- **Use when**: 已有 `papers/paper_notes.jsonl`,需要为 prose/LaTeX 准备可追溯的引用(每条都有 url/date/title 验证记录)。121314Generate `citations/ref.bib` and ensure every entry has a traceable verification record in `citations/verified.jsonl`.1516When network access is restricted, prefer a “record now, verify later” workflow: keep URLs/titles consistent and leave a clear verification note.1718## Input1920- `papers/paper_notes.jsonl`2122## Outputs2324- `citations/ref.bib`25- `citations/verified.jsonl`2627## Workflow (heuristic)28291. Collect `bibkey`, `title`, `url`, `year`, `authors` from `papers/paper_notes.jsonl`.302. Write/refresh `citations/ref.bib`:31 - Prefer arXiv-style fields when `arxiv_id` / `primary_category` exist (`eprint`, `archivePrefix`, `primaryClass`).323. Write one verification record per BibTeX entry to `citations/verified.jsonl` with at least:33 - `bibkey`, `title`, `url`, `date`344. 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.3536## Quality checklist3738- [ ] Every BibTeX entry has a corresponding `verified.jsonl` record.39- [ ] No missing `url`/`date`/`title` in verification records.4041## Offline Mode4243When network access is restricted, run in offline mode to produce auditable records now, then verify later.4445- Generate offline records: `verification_status: offline_generated`46- Verify later (when network is available): `--verify-only`4748### `verification_status`4950- `offline_generated`: record was generated without network verification (needs later verification)51- `verified_online`: URL/title verified successfully by the script52- `verify_failed`: verification was attempted but failed (network error or title mismatch)53- `needs_manual_verification`: missing/ambiguous fields (e.g., empty `url`/`title`)5455## Script5657### Quick Start5859- `uv run python .codex/skills/citation-verifier/scripts/run.py --help`60- Offline (record now, verify later): `uv run python .codex/skills/citation-verifier/scripts/run.py --workspace <workspace> --offline`6162### All Options6364- `--offline`: do not attempt network verification; write `verification_status=offline_generated`65- `--verify-only`: verify existing `citations/verified.jsonl` records (does not rewrite BibTeX)66- `--verification-note <text>`: stored in `citations/verified.jsonl` `notes`6768### Examples6970- Generate BibTeX + offline verification records:71 - `uv run python .codex/skills/citation-verifier/scripts/run.py --workspace <workspace> --offline --verification-note "auto-generated; needs manual verification"`72- Later, verify-only (when network is available):73 - `uv run python .codex/skills/citation-verifier/scripts/run.py --workspace <workspace> --verify-only`7475### Notes7677- Minimal requirement for every verification record: `url`, `date`, `title`.78- The script sanitizes stray/unbalanced `{}` in titles to keep `bibtex` parsing robust.79- 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.80- URLs are kept raw in BibTeX `url` fields (BibTeX styles wrap them with `\url{...}`); `@misc` uses `howpublished=\url{...}`.81- In offline mode, records are *not* truly verified; treat `offline_generated` as a to-do for human/network verification.8283## Troubleshooting8485### Common Issues8687#### Issue: Missing `bibkey` / missing `url` in notes8889**Symptom**:90- `citations/ref.bib` is missing entries, or `verified.jsonl` has empty `url/title`.9192**Causes**:93- `papers/paper_notes.jsonl` lacks `bibkey`/`url` fields.9495**Solutions**:96- Ensure each core paper note has a stable `bibkey` and a canonical `url`.97- Rerun citation generation after fixing notes.9899#### Issue: `verification_status=offline_generated`100101**Symptom**:102- Records exist but are not truly verified.103104**Causes**:105- `--offline` was used, or network verification was unavailable.106107**Solutions**:108- When network is available, run `--verify-only` to upgrade records.109- Or manually verify and update `citations/verified.jsonl` with notes.110111### Recovery Checklist112113- [ ] Every BibTeX entry has a matching `citations/verified.jsonl` record.114- [ ] Verification records include `url`, `date`, `title`.