Back to skills
SkillHub ClubWrite Technical DocsFull StackTech WriterTesting

citation-verifier

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。

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
334
Hot score
99
Updated
March 19, 2026
Overall rating
C3.8
Composite score
3.8
Best-practice grade
S96.0

Install command

npx @skill-hub/cli install willoscar-research-units-pipeline-skills-citation-verifier

Repository

WILLOSCAR/research-units-pipeline-skills

Skill path: .codex/skills/citation-verifier

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。

Open repository

Best for

Primary workflow: Write Technical Docs.

Technical facets: Full Stack, Tech Writer, Testing.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: WILLOSCAR.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install citation-verifier into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/WILLOSCAR/research-units-pipeline-skills before adding citation-verifier to shared team environments
  • Use citation-verifier for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: citation-verifier
description: |
  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。
---

# 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

- `papers/paper_notes.jsonl`

## Outputs

- `citations/ref.bib`
- `citations/verified.jsonl`

## Workflow (heuristic)

1. Collect `bibkey`, `title`, `url`, `year`, `authors` from `papers/paper_notes.jsonl`.
2. Write/refresh `citations/ref.bib`:
   - Prefer arXiv-style fields when `arxiv_id` / `primary_category` exist (`eprint`, `archivePrefix`, `primaryClass`).
3. Write one verification record per BibTeX entry to `citations/verified.jsonl` with at least:
   - `bibkey`, `title`, `url`, `date`
4. 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

- [ ] Every BibTeX entry has a corresponding `verified.jsonl` record.
- [ ] No missing `url`/`date`/`title` in verification records.

## 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

- [ ] Every BibTeX entry has a matching `citations/verified.jsonl` record.
- [ ] Verification records include `url`, `date`, `title`.
citation-verifier | SkillHub