关于 validate-bib
validate-bib 用于核对课程文件中的引文与参考文献表。默认进行结构检查,也可启用语义模式,检测重复条目、验证 DOI 并检查引文格式。
主要功能
- 01查找参考文献表中缺失的引文条目
- 02标记未引用条目和疑似键名拼写错误
- 03检查参考文献字段及格式
- 04在语义模式下检测重复文献
- 05可选验证 DOI 元数据和引文格式
适用场景
- 01提交前审查课程材料
- 02查找引用不一致的参考文献条目
- 03检查多个文件中的 DOI 元数据和引文格式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pedrohcgs/ claude-code-my-workflow --skill validate-bib安装后在 Claude Code 中输入/validate-bib确认已加载。
详细介绍
验证参考文献
交叉核对讲义文件中的引文与参考文献条目。两种模式:
- **默认(结构):**缺失条目、未使用条目、格式错误的字段、疑似拼写错误的条目。
- **
--semantic:**增加引文漂移检测(同一论文的重复条目)、通过 crossref 验证 DOI,以及检查每个文件内的引文格式是否一致。
报告保存至 quality_reports/bib_audit_[structural|semantic].md。
模式 1:结构(默认)
步骤
-
读取参考文献文件并提取所有引文键。
-
扫描讲义文件中的引文键:
.tex:\cite{、\citet{、\citep{、\citeauthor{、\citeyear{、\textcite{、\parencite{.qmd/.md:@key、[@key]、[@key1; @key2]- 提取所有使用过的唯一引文键。
-
交叉核对:
- **缺失条目(严重):**讲义中引用了,但
.bib中没有。 - **未使用条目(提示):**在
.bib中,但从未被引用。 - **疑似拼写错误的条目:**与
.bib中某个键的编辑距离不超过 2 的键(例如,Smith2020与Smth2020)。
- **缺失条目(严重):**讲义中引用了,但
-
检查条目质量:
- 必填字段齐全(author、title、year、journal/booktitle)。
- author 字段格式正确。
- year 在 1900 至当前年份之间。
- 没有格式错误的字符或编码问题。
doi字段已规范化(不以https://doi.org/开头)。
-
将报告写入
quality_reports/bib_audit_structural.md。
扫描的文件
Slides/*.tex
Quarto/*.qmd
guide/*.qmd
master_supporting_docs/**/*.tex
参考文献位置
默认位于仓库根目录下的 Bibliography_base.bib;可通过 CLAUDE.md 覆盖。
模式 2:语义(--semantic)
包含模式 1 的所有内容,另加:
2a. 引文漂移检测
不同键对应多个描述同一论文的 .bib 条目。常见表现:
Smith2020和Smith2020a的 DOI 或标题完全相同。CallawaySantAnna2021和CS2021都指向同一篇论文。- 合作者合并的
.bib文件。
检测启发式规则(满足任意一项 → 标记):
| 检查项 | 信号 |
|---|---|
| 不同键对应相同 DOI | 确定重复(严重) |
| 标题相同(忽略大小写并去除标点) | 很可能重复(严重) |
| 作者、年份和期刊相同 | 可能重复(中) |
| 标题 token 的 Jaccard 相似度 > 0.85,且 token 长度 ≥ 4 个字符 | 疑似重复(低) |
对于每组标记的条目:列出两个键、各自的引用位置,并建议一个规范键(优先选择引用次数最多的键,其次按字母顺序选择)。
2b. DOI 验证(可选;需要网络)
对于每个含有 doi 的条目,获取 https://api.crossref.org/works/{doi} 并比较:
- 第一作者的姓氏
- 年份
- 标题(规范化 token 的 Jaccard 相似度 > 0.7)
- 容器标题 / 期刊(完全一致或缩写形式)
严重程度:
- 作者或标题不匹配 → 严重(论文错误)
- 年份不匹配 → 中(预印本与正式发表版本不同,或存在拼写错误)
- 期刊不匹配 → 低(合法的预印本版本差异)
**速率限制:**每次运行最多查询 50 次,每次调用间隔 0.5 秒。在 quality_reports/.doi_cache.json 中缓存。
**退出方式:**在离线或无法使用 WebFetch 的环境中使用 --skip-doi。
2c. 每个文件内的格式一致性
对于每个文件,统计引文命令(\citet 与 \citep 与 \cite;@key 与 [@key])。如果文件中混用格式且看不出明显规律,则标记该文件(例如,同一套讲义中有 20 个 \citep 和 3 个 \cite)。严重程度低。
2d. 引文与论述的合理性检查(仅标记)
使用 --cite-claim 启用。对于每个文件中引用次数最多的 10 篇文献,使用 WebFetch 获取 Crossref 摘要,并将摘要与文中的上下文一并呈现。不自动判断——由人工决定论述是否相符。
**此项检查的是存在性和结构,而非恰当性。**判断被引论文是否确实表达了文中归于它的观点,是
/verify-claims的任务——它会读取原文,并通过引文和页码给出支持 / 部分支持 / 反驳的判断(对于有充分依据的具名替代方案,可使用 EXPLAINED 例外)。--cite-claim只会呈现摘要;如需得出判断,请运行/verify-claims。
报告结构(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.
退出行为
- **结构检查:**退出码为 0;报告会列出问题。
- **语义检查:**如果只有 LOW 级别的问题,退出码为 0;存在任何 CRITICAL 问题时,退出码为 1。可用作提交前检查关卡。
交叉引用
.claude/skills/review-paper/SKILL.md— 配合使用,完成全面的提交前检查。.claude/skills/audit-reproducibility/SKILL.md— 数值声明检查的对应技能。.claude/skills/verify-claims/SKILL.md— 引用恰当性检查的对应技能(被引用的论文是否支持该声明?)。此技能检查引用是否存在且格式正确;/verify-claims检查引用是否成立。
此技能不做什么
- 不判断引用是否用于正确的语境——被引用的论文是否确实表达了声明所归因的内容。这是
/verify-claims的工作(见 2d);此技能只检查引用是否存在以及结构是否正确。 - 不自动修复你的
.bib文件——所有修改都只是建议。 - 不检查非 DOI 标识符(ISBN、arXiv、SSRN)——此项列入路线图。