mcpField
V
validate-bib

validate-bib

github.com/pedrohcgsDocuments1.7k86 installsUpdated 4w ago
Repository

About validate-bib

validate-bib is a skill for auditing citations in lecture files against a bibliography. It offers structural checks by default and an optional semantic mode with duplicate detection, DOI verification, and citation-style checks.

Key features

  1. 01Finds citations missing from the bibliography
  2. 02Flags unused entries and likely key typos
  3. 03Checks bibliography field quality and formatting
  4. 04Detects duplicate works in semantic mode
  5. 05Optionally verifies DOI metadata and citation style

Use cases

  1. 01Audit lecture materials before submission
  2. 02Find bibliography entries that are cited inconsistently
  3. 03Review DOI metadata and citation styles across files

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/pedrohcgs/claude-code-my-workflow --skill validate-bib

After installing, type/validate-bibin Claude Code to confirm it loaded.

Details

From the project README

Validate Bibliography

Cross-reference citations in lecture files against bibliography entries. Two modes:

  • Default (structural): missing entries, unused entries, malformed fields, typo candidates.
  • --semantic: adds citation-drift detection (duplicate entries for the same paper), DOI verification via crossref, and citation-style consistency within each file.

Report saved to quality_reports/bib_audit_[structural|semantic].md.

Mode 1: Structural (default)

Steps
  1. Read the bibliography file and extract all citation keys.

  2. Scan lecture files for citation keys:

    • .tex: \cite{, \citet{, \citep{, \citeauthor{, \citeyear{, \textcite{, \parencite{
    • .qmd / .md: @key, [@key], [@key1; @key2]
    • Extract all unique citation keys used.
  3. Cross-reference:

    • Missing entries (CRITICAL): cited in lectures, absent from .bib.
    • Unused entries (informational): in .bib but never cited.
    • Typo candidates: keys within edit-distance 2 of a .bib key (e.g., Smith2020 vs Smth2020).
  4. Check entry quality:

    • Required fields present (author, title, year, journal/booktitle).
    • Author field properly formatted.
    • Year in 1900–current.
    • No malformed characters / encoding issues.
    • doi field normalized (no leading https://doi.org/).
  5. Write report to quality_reports/bib_audit_structural.md.

Files scanned
Slides/*.tex
Quarto/*.qmd
guide/*.qmd
master_supporting_docs/**/*.tex
Bibliography location

Bibliography_base.bib at repo root by default; override via CLAUDE.md.

Mode 2: Semantic (--semantic)

Everything in Mode 1, plus:

2a. Citation drift detection

Multiple .bib entries describing the same paper under different keys. Symptoms:

  • Smith2020 + Smith2020a with identical DOI or title.
  • CallawaySantAnna2021 + CS2021 both pointing to the same paper.
  • Collaborator-merged .bib files.

Detection heuristics (any → FLAG):

CheckSignal
Same DOI across keysHard-duplicate (CRITICAL)
Same title (case-insensitive, punct-stripped)Likely duplicate (CRITICAL)
Same author+year+journalProbable duplicate (MEDIUM)
Title Jaccard > 0.85 on tokens ≥ 4 charsSoft-duplicate (LOW)

For each flagged pair: list both keys, where each is cited, and recommend a canonical key (prefer most-cited, then alphabetically first).

2b. DOI verification (optional; network)

For each entry with a doi, fetch https://api.crossref.org/works/{doi} and compare:

  • First-author last name
  • Year
  • Title (Jaccard > 0.7 on normalized tokens)
  • Container-title / journal (exact or abbreviation)

Severity:

  • Author or title mismatch → CRITICAL (wrong paper)
  • Year mismatch → MEDIUM (preprint vs published, or typo)
  • Journal mismatch → LOW (legitimate preprint variants)

Rate limit: cap 50 lookups per run, 0.5s delay between calls. Cache in quality_reports/.doi_cache.json.

Opt-out: --skip-doi for offline or no-WebFetch environments.

2c. Style consistency within each file

For each file, count citation commands (\citet vs \citep vs \cite; @key vs [@key]). FLAG files with mixed styles without an obvious pattern (e.g., 20× \citep and 3× \cite in the same deck). Low-severity.

2d. Cite-claim sanity (flag-only)

Gated behind --cite-claim. For the top-10 most-cited works per file, WebFetch the crossref abstract and surface it beside the in-text context. No auto-judgment — humans decide if the claim matches.

This is existence/structure, not appropriateness. Deciding whether the cited paper actually says what the in-text claim attributes to it is /verify-claims's job — it reads the source and grounds a supports / partial / contradicts verdict in quotes + pages (with the EXPLAINED escape for a defensible named alternative). --cite-claim only surfaces the abstract; for the verdict, run /verify-claims.

Report structure (quality_reports/bib_audit_semantic.md)
# Bibliography Semantic Audit

**Date:** YYYY-MM-DD
**Bibliography:** Bibliography_base.bib (N entries)
**Files scanned:** [list]

## Summary

| Check | Critical | Medium | Low |
|---|---|---|---|
| Structural | | | |
| Citation drift | | | |
| DOI verification | | | |
| Style consistency | 0 | 0 | |

## Critical Issues

### Duplicate entries
| Keys | Signal | Citations | Recommended canonical |
|---|---|---|---|

### DOI mismatches
| Key | Field | .bib value | crossref value |
|---|---|---|---|

## Medium / Low issues
…

## Next steps
1. Resolve duplicates — pick canonical key, update citations, remove orphans.
2. Fix DOI mismatches — verify paper in crossref or strip the wrong DOI.
3. Review style-consistency notes.

Exit behavior

  • Structural: exit 0; report enumerates issues.
  • Semantic: exit 0 if only LOW findings; exit 1 on any CRITICAL. Usable as a pre-submission gate.

Cross-references

  • .claude/skills/review-paper/SKILL.md — pair for full pre-submission.
  • .claude/skills/audit-reproducibility/SKILL.md — numeric-claims counterpart.
  • .claude/skills/verify-claims/SKILL.md — citation appropriateness counterpart (does the cited paper support the claim?). This skill checks that a citation exists and is well-formed; /verify-claims checks that it holds.

What this skill does NOT do

  • Judge whether a citation is used in the right context — whether the cited paper actually says what the claim attributes to it. That is /verify-claims's job (see 2d); this skill stays existence-and-structure only.
  • Auto-fix your .bib file — all edits are recommendations.
  • Check non-DOI identifiers (ISBN, arXiv, SSRN) — roadmap.

Comments

Markdown supported