academic-writing
Write or revise thesis and paper prose section by section (abstract, introduction, related work, method, results, discussion,…
Audit every citation in a chapter, paper, or proposal against the .bib file and the real world: each cite key must exist, each entry must resolve to a live DOI or arXiv record whose title, authors, and year match, and each claim attributed to a source must be supported by that
Claude Code
$ npx -y skills add KhaledSaeed18/dotclaude --skill citation-verifier --agent claude-code
Codex
$ npx skills add KhaledSaeed18/dotclaude --skill citation-verifier -a codex -y
Cursor
$ npx skills add KhaledSaeed18/dotclaude --skill citation-verifier -a cursor -y
Gemini CLI
$ npx skills add KhaledSaeed18/dotclaude --skill citation-verifier -a gemini-cli -y
GitHub Copilot
$ npx skills add KhaledSaeed18/dotclaude --skill citation-verifier -a github-copilot -y
OpenCode
$ npx skills add KhaledSaeed18/dotclaude --skill citation-verifier -a opencode -y
Windsurf
$ npx skills add KhaledSaeed18/dotclaude --skill citation-verifier -a windsurf -y
name: citation-verifier description: "Audit every citation in a chapter, paper, or proposal against the .bib file and the real world: each cite key must exist, each entry must resolve to a live DOI or arXiv record whose title, authors, and year match, and each claim attributed to a source must be supported by that source's note or text. Reports unverified, mismatched, and unsupported citations with the fix. Use before sending a draft to a supervisor, before submission, or whenever text was drafted with AI assistance and a fabricated reference would be fatal." argument-hint: "path to the .tex, .md, or .docx chapter; optionally the .bib and the notes directory"
A fabricated or misattributed citation is the one error a thesis cannot survive. This skill treats every citation as unverified until three checks pass: the key exists, the entry is real, and the claim is supported.
1. Extract cite keys from the document:
2. Parse the `.bib` keys (`^@\w+\{([^,]+),`). 3. Report keys cited but not defined (hard error) and entries defined but never cited (informational; the bibliography should usually contain only cited works).
For each cited entry:
1. If it has a `doi`: `curl -s "https://api.crossref.org/works/<doi>"` and compare title (normalised), first author surname, and year. A DOI that returns 404 is fabricated or mistyped: search CrossRef by title to find the real one and report both. 2. If it has an arXiv `eprint`: `curl -s "http://export.arxiv.org/api/query?id_list=<id>"` and compare title and first author. 3. If it has only a URL: `curl -sI <url>` returns 2xx/3xx; flag as weakly verified. 4. If it has none of these: `curl -s "https://api.crossref.org/works?query.bibliographic=<title>&rows=3"` and report whether a plausible match exists. Until it does, the entry is **unverified**.
Rate-limit to one request per second per host. Cache results in `research/.citation-cache.json` keyed by DOI so re-runs are fast.
A mismatch in title or author is reported as **mismatched**, with the fetched metadata beside the `.bib` entry, because it usually means the wrong DOI was attached to the right paper (or the right DOI to a paraphrased title).
This is the check that catches "the paper says X" when it does not. For each citation in context:
1. Take the sentence (or list item) that carries the cite and the claim it makes. 2. Open the matching note in `research/notes/` (joined by `key` in the note's front matter). If there is a note, check whether the claim appears under *One-sentence claim*, *Evidence*, or *Quotable*. If there is no note, say so; the student should run `paper-reader` before citing. 3. Classify: **supported** (the note contains it), **plausible but unverified** (the note is silent), **contradicted** (the note's Limitations or Evidence say otherwise), or **overclaimed** (the note supports a weaker version, e.g. "improves" cited as "solves"). 4. For a quotation, the exact text must appear in the note's *Quotable* section or in the source text; otherwise it is an **unverified quote**.
Write `research/citation-report.md` and summarise in the reply:
# Citation report: chapters/02-related-work.tex (2026-09-21) Cited keys: 41 Defined: 58 Missing keys: 1 Unused entries: 17 Verified: 36 Mismatched: 2 Unverified: 3 Claim checks: 30 supported, 8 unverified, 2 overclaimed, 1 contradicted ## Must fix - `lee2022grading` is cited (line 112) but not in references.bib. - `chen2021code`: DOI 10.1145/9999999 returns 404. CrossRef title search finds "..." with DOI 10.1145/3468264.3468563; confirm and replace. - Line 87 cites `smith2023feedback` for "reduces grading time by half"; the note records a 23% reduction (Table 4). Overclaimed. ## Should check - ...
Ordering: missing keys and dead identifiers first (they fail compilation or expose fabrication), then contradictions and overclaims, then the unverified.
Reusable Claude Code extension registry. skills, subagents, slash commands, and hooks for engineering, git, testing, and security workflows. Distributed as a shadcn GitHub registry and as installable plugins.
Write or revise thesis and paper prose section by section (abstract, introduction, related work, method, results, discussion,…
Report computational benchmarks and experimental comparisons the way examiners and reviewers expect: fair baselines run under the…
Maintain the thesis .bib file as a single source of truth: fetch verified BibTeX from a DOI, arXiv id, or title via CrossRef and…
Expand a set of key papers into the literature around them by walking the citation graph with the Semantic Scholar and OpenAlex…
Structure a thesis whose contribution is a built artifact (tool, system, method, model) using design science research: explicit…
Write a thesis in Word without losing the discipline of a source-controlled workflow: author chapters in Markdown or LaTeX,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.