Agent-almanac validate-references

install
source · Clone the upstream repo
git clone https://github.com/pjt222/agent-almanac
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/ja/skills/validate-references" ~/.claude/skills/pjt222-agent-almanac-validate-references-2d2a94 && rm -rf "$T"
manifest: i18n/ja/skills/validate-references/SKILL.md
source content

参考文献の検証

BibTeX参考文献データベースの正確性と完全性を系統的に検証する。エントリタイプ別の必須フィールドチェック、DOI解決によるメタデータの照合、ジャーナル名の正規化と一貫性確認、著者名のフォーマット検証、およびURL・リンクの有効性確認を含む。

使用タイミング

  • 原稿投稿前に参考文献リストの正確性を最終確認する場合
  • 共同研究者から受け取った
    .bib
    ファイルの品質を評価する場合
  • 既存データベースの系統的な品質改善を行う場合
  • DOIを使用してBibTeXメタデータの正確性を検証する場合
  • ジャーナル名の略語を標準化する場合

入力

  • 必須: BibTeXデータベースファイル(
    .bib
  • 必須: 検証レベル(基本:フィールドの完全性のみ、標準:メタデータ照合を含む、包括的:すべてのチェック)
  • 任意: ターゲットジャーナルのスタイル要件
  • 任意: ジャーナル略語データベース(MEDLINE、ISO 4)
  • 任意: 検証対象のフィールドリスト

手順

ステップ1: 構造検証

BibTeXファイルの構造的な整合性を検証する:

  1. パースチェック: ファイルが正常にパースされることを確認する。構文エラー(括弧の不一致、欠落したカンマ、不正なエスケープシーケンス)を検出する。
  2. エントリタイプの検証: 各エントリのタイプ(
    @article
    @book
    @inproceedings
    など)が有効なBibTeXエントリタイプであることを確認する。
  3. 必須フィールドの確認: エントリタイプごとの必須フィールドを確認する:
エントリタイプ必須フィールド
@article
author, title, journal, year, volume
@book
author/editor, title, publisher, year
@inproceedings
author, title, booktitle, year
@incollection
author, title, booktitle, publisher, year
@phdthesis
author, title, school, year
@techreport
author, title, institution, year
@misc
author, title, year(推奨)
  1. フィールド値の検証: 空のフィールド、プレースホルダーテキスト(「TODO」「TBD」など)、明らかな誤り(year = "0000"など)を検出する。

期待結果: すべてのエントリが正常にパースされ、必須フィールドの充足状況がレポートされる。

失敗時: パースエラーがある場合は、エラーメッセージの行番号を元に問題箇所を特定する。一般的な原因は、BibTeXフィールド値内のエスケープされていない特殊文字。

ステップ2: メタデータの照合

DOI解決を使用してエントリのメタデータを外部ソースと照合する:

  1. DOIの存在確認: 各エントリに
    doi
    フィールドが存在するか確認する。DOIが欠落しているエントリを記録する。
  2. DOIの解決: 存在するDOIをCrossref APIまたはDOI.org APIで解決し、返されたメタデータとBibTeXエントリを比較する。
  3. タイトルの照合: DOIから取得したタイトルとBibTeXのタイトルを比較する。大文字小文字の違いやHTMLエンティティの差異を正規化して比較する。
  4. 著者の照合: DOIメタデータの著者リストとBibTeXの著者を比較する。著者数、姓の一致を確認する。
  5. 年・巻・ページの照合: 出版年、巻号、ページ範囲がDOIメタデータと一致するか確認する。
  6. 不一致の記録: 各不一致について、BibTeXの値、DOIメタデータの値、重大度(高:年やタイトルの不一致、中:ページの不一致、低:大文字小文字の違い)を記録する。

期待結果: DOIを持つすべてのエントリについてメタデータの照合が完了し、不一致がレポートされる。

失敗時: DOIが解決されない場合は、DOI文字列のフォーマットを確認する(先頭の

https://doi.org/
を除去してから解決する)。APIレート制限に達した場合は、バッチ間に遅延を入れる。

ステップ3: ジャーナル名の検証

ジャーナル名の正確性と一貫性を検証する:

  1. 一貫性チェック: 同一ジャーナルが異なる名前で記載されていないか確認する(例:「J. Am. Chem. Soc.」と「Journal of the American Chemical Society」の混在)。
  2. 略語の検証: ジャーナル略語がISO 4またはMEDLINE/PubMed標準に準拠しているか確認する。
  3. 正規化: ジャーナル名を標準形式に正規化する。スタイル要件に応じて、完全名または略語に統一する。
  4. ISSNの照合: 可能であればISSNを使用してジャーナルの同一性を検証する。
  5. スペルの確認: ジャーナル名のスペルミスを検出する(既知のジャーナル名データベースとの照合)。

期待結果: ジャーナル名が一貫した形式で記載され、標準略語に準拠している。

失敗時: ジャーナルが標準データベースに見つからない場合は、新しいジャーナルまたは名称変更の可能性がある。ジャーナルのウェブサイトで正式名称を確認する。

ステップ4: 著者名の検証

著者名のフォーマットと一貫性を検証する:

  1. フォーマットの確認: BibTeXの標準フォーマット(
    Last, First
    または
    First Last
    )に従っているか確認する。
  2. 一貫性チェック: 同一著者が異なるフォーマットで記載されていないか確認する(例:「Smith, J.」と「Smith, John」と「J. Smith」)。
  3. 特殊文字: 著者名の特殊文字(アクセント、ウムラウト、中国語・日本語文字)が正しくエンコードされているか確認する。
  4. 「and」区切り: 複数著者が正しく「and」で区切られているか確認する(カンマのみでの区切りはBibTeXエラーの原因となる)。
  5. 組織著者: 組織名が著者として記載されている場合、二重括弧
    {{Organization Name}}
    で囲まれているか確認する。

期待結果: すべての著者名が一貫したフォーマットで記載され、BibTeX構文に準拠している。

失敗時: 著者名のフォーマットが不明な場合は、DOIメタデータまたはPubMedから正確な著者名を取得して照合する。

ステップ5: リンクとアクセシビリティの検証

URLとDOIリンクの有効性を確認する:

  1. URLの有効性:
    url
    フィールドのURLにHTTPリクエストを送信し、200レスポンスが返ることを確認する。リダイレクト(301、302)は記録するが許容する。
  2. DOIリンク: DOIが
    https://doi.org/{doi}
    で解決されることを確認する。
  3. アーカイブリンク:
    eprint
    archiveprefix
    フィールド(arXiv等)が正しいフォーマットであることを確認する。
  4. リンク切れの記録: 404や接続タイムアウトが返るURLを記録し、代替リンク(Wayback Machine、著者ページ)の提案を行う。
  5. アクセス日:
    urldate
    フィールドが存在する場合、妥当な日付であることを確認する。

期待結果: すべてのURLとDOIリンクが有効であり、リンク切れが特定される。

失敗時: リンク切れが多数ある場合は、DOIリンクを優先的に使用する(DOIは永続的識別子であり、URLよりも安定している)。一時的なサーバーエラーの場合は、時間をおいて再試行する。

バリデーション

  • すべてのエントリが正常にパースされる
  • 各エントリタイプの必須フィールドが充足されている
  • DOI解決によるメタデータ照合が完了している
  • 重大な不一致(タイトル、年)が解決されている
  • ジャーナル名が一貫した形式(完全名または略語)で統一されている
  • 著者名のフォーマットが一貫している
  • URL/DOIリンクの有効性が確認されている
  • 検証レポートが生成されている

よくある落とし穴

  • DOIメタデータを盲信する: Crossrefのメタデータも完全ではない。特にページ番号やボリューム番号が不正確な場合がある。BibTeXの値が明らかに正しい場合は、DOIメタデータの不正確さとして記録する。
  • 大文字小文字の過度な比較: BibTeXのタイトルフィールドでは
    {}
    で囲むことで大文字を保護する。DOIメタデータとの比較時は大文字小文字を正規化してから比較すること。
  • APIレート制限の無視: 大量のDOIを一度に解決しようとするとブロックされる。1秒あたりの最大リクエスト数を守ること(Crossref APIでは丁寧なプール使用のためメールアドレスを提供)。
  • ジャーナル略語の過信: 略語データベースは完全ではなく、特に新しいジャーナルや名称変更されたジャーナルでは不正確な場合がある。
  • 検証結果の自動修正: 検出された問題をすべて自動修正しないこと。特にDOIメタデータとの不一致は、手動確認が必要な場合がある。

関連スキル

  • manage-bibliography
    -- 検証対象のBibTeXデータベースの管理
  • format-citations
    -- 検証済みデータベースを使用した引用のフォーマット