mcpField
L
ln-614-docs-fact-checker

ln-614-docs-fact-checker

github.com/levnikolaevichドキュメント584235 回インストール2 日前に更新
リポジトリ

ln-614-docs-fact-checker について

プロジェクトのMarkdownから検証可能な主張を抽出し、コードベースと照合するファクトチェック用スキルです。文書間の矛盾も調べ、根拠付きのレポートを作成します。

主な機能

  1. 019種類の検証可能な主張を抽出
  2. 02コードやマニフェストと照合
  3. 03文書間の矛盾を検出
  4. 04根拠と重大度を報告

活用シーン

  1. 01文書内のパスやコマンドの検証
  2. 02バージョン・設定・エンドポイントの確認
  3. 03Markdown間で異なる事実の検出

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-614-docs-fact-checker

インストール後、Claude Code で/ln-614-docs-fact-checkerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
audit_output_schema.md
audit_scoring.md
audit_summary_contract.md
audit_worker_core_contract.md
claim_extraction_rules.md
docs_quality_contract.md
docs_quality_rules.json
docs_quality_rules.json.SOURCE.md
markdown_read_protocol.md
mcp_integration_patterns.md
mcp_tool_preferences.md
two_layer_detection.md
references/templates/
audit_worker_report_template.md

詳細

パス: ファイルパス(references/、../ln-*)は、このスキルディレクトリを基準とします。

ドキュメント事実確認担当(L3 ワーカー)

種類: L3 ワーカー

ドキュメントから検証可能な主張を抽出し、各主張を実際のコードベースと照合する専門のワーカーです。

目的と範囲

  • 正式なドキュメントと主張の多いドキュメントを優先し、その後、Markdown ドキュメントから検証可能な主張を抽出します
  • 各主張をコードベースと照合します(Grep/Glob/Read/Bash)
  • ドキュメント間の矛盾(同じ事実が異なる形で記述されている状態)を検出します
  • 対象範囲に docs/reference/、docs/tasks/、tests/ を含みます
  • 1 回の呼び出しで実行します(ドキュメントごとではありません)。そのため、ドキュメント間の確認には全体的な視点が必要です
  • 対象範囲との整合性や構造上の品質は確認しません

入力

必須の読み込み: references/audit_worker_core_contract.md、references/docs_quality_contract.md、references/markdown_read_protocol.md、references/mcp_tool_preferences.md を読み込みます。 ルールカタログは任意です。正確なルール ID、パスマトリクス、または許可リストに含まれるプレースホルダーの例外が必要な場合に限り、references/docs_quality_rules.json を読み込みます。 ツールのポリシー:ホストの AGENTS.md が対象範囲に含まれない分離サブエージェントとして実行される場合があるため、ファイルの読み込み、検索、編集には、まず hex-line MCP を使用してください。MCP の動作が不明な場合に限り、references/mcp_integration_patterns.md を読み込みます。

tech_stack、project_root、output_dir を含む contextStore を受け取ります。

ワークフロー

フェーズ 1:コンテキストの解析

contextStore から技術スタック、プロジェクトのルート、output_dir を抽出します。

フェーズ 2:ドキュメントの検出

プロジェクト内の Markdown ドキュメントを Glob で検索します。以下は除外します。

  • node_modules/、.git/、dist/、build/
  • docs/project/.audit/(監査の出力であり、プロジェクトのドキュメントではありません)
  • CHANGELOG.md(設計上、履歴を記録するものです)

docs/project/.context/doc_registry.json が存在する場合:

  • 最初に読み込みます
  • doc_role=canonical のファイルを優先します
  • 主張の種類(パス、エンドポイント、バージョン、コマンド)が多いファイルを優先します
  • 矛盾がそれらを参照している場合を除き、ナビゲーションハブの優先度を下げます
フェーズ 3:主張の抽出(レイヤー 1)

検出ポリシー:2 層検出(候補のスキャン、その後のコンテキスト検証)を使用します。検証方法が曖昧な場合に限り、references/two_layer_detection.md を読み込みます。

優先順位を付けた各ドキュメントについて、セクションを優先して読み、Grep/正規表現パターンを使って検証可能な主張を抽出します。

ドキュメントで参照されているコードファイルについては、組み込みの読み取り機能を使う前に、outline() と発見を優先した read_file() を使用します。検証が追加編集に発展した場合に限り、edit_ready=true, verbosity="full" を指定します。エンティティの同一性や参照解決が、マニフェスト/ファイルを直接確認した後も曖昧な場合に限り、hex-graph を使用します。

必ず読み込むこと: 主張の種類ごとの詳細な抽出パターンについて、references/claim_extraction_rules.md を読み込みます。

9 種類の主張:

#主張の種類抽出する内容抽出パターン
1ファイルパスソースファイル、ディレクトリ、設定ファイルへのパスsrc/、lib/、app/、docs/、config/、tests/ に一致するバッククォート付きパス、リンク先
2バージョンパッケージ/ツール/イメージのバージョン依存関係/パッケージ/イメージ名の近くにある Semver パターン
3件数/統計コードベースに関する数値の主張`\d+ (modules
4API エンドポイントHTTP メソッドとパス`(GET
5設定キー/環境変数環境変数、設定キー設定のコンテキストにある [A-Z][A-Z_]{2,}、process.env.、os.environ
6CLI コマンドシェルコマンドバッククォートブロック内の npm run、python、docker、make
7関数/クラス名コードエンティティへの参照バッククォート内またはコードのコンテキストにある CamelCase/snake_case
8行番号参照file:line 形式のパターン[\w/.]+:\d+ のパターン
9Docker/インフラに関する主張イメージタグ、ポート、サービス名イメージ名とタグ、Docker のコンテキストにあるポートマッピング

主張ごとの出力形式:{doc_path, line, claim_type, claim_value, raw_context}。

フェーズ 4:主張の検証(レイヤー 2)

抽出した各主張を、コードベースと照合して検証します。

主張の種類検証方法検出結果の種類
ファイルパスGlob または ls で存在を確認PATH_NOT_FOUND
バージョンパッケージファイル(package.json、requirements.txt、docker-compose.yml)を Grep し、比較VERSION_MISMATCH
件数Glob/Grep で実際のエンティティ数を数え、主張された数と比較COUNT_MISMATCH
API エンドポイントルート/コントローラー定義を GrepENDPOINT_NOT_FOUND
設定キーソース内で実際の使用箇所を GrepCONFIG_NOT_FOUND
CLI コマンドpackage.json のスクリプト、Makefile のターゲット、バイナリの存在を確認COMMAND_NOT_FOUND
関数/クラスソース内で定義を GrepENTITY_NOT_FOUND
行番号指定行のファイルを読み込み、内容が主張されたコンテキストと一致するか確認LINE_MISMATCH
Docker/インフラdocker-compose.yml 内のイメージタグとポートを GrepINFRA_MISMATCH

偽陽性の除外(レイヤー 2 の推論):

  • テンプレートのプレースホルダー({placeholder}、YOUR_*、<project>、xxx)→ スキップ
  • 例示/仮定上のパス(「e.g.」、「for example」、「such as」に続くもの)→ スキップ
  • 未来の予定に関する主張(「will add」、「planned」、「TODO」)→ スキップまたは LOW
  • 条件付きの主張(「X を使用する場合は、Y を設定する」)→ X が tech_stack で検出された場合のみ検証
  • 外部サービスのパス(URL、外部リポジトリ)→ スキップ
  • 他のプロジェクトについて説明する SCOPE/コメントの HTML ブロック内にあるパス → スキップ
  • .env.example の値 → スキップ(実際の値と異なるのが想定されるため)
フェーズ 5:ドキュメント間の一貫性

ドキュメント間で抽出した主張を比較し、矛盾を見つけます。

確認項目方法検出タイプ
同じパス、異なる場所ファイルパスに関する主張をグループ化し、すべてが同じ実際のパスを指しているか確認しますCROSS_DOC_PATH_CONFLICT
同じエンティティ、異なるバージョンエンティティ名ごとにバージョンに関する主張をグループ化し、値を比較しますCROSS_DOC_VERSION_CONFLICT
同じ指標、異なる数値主題ごとに数に関する主張をグループ化し、値を比較しますCROSS_DOC_COUNT_CONFLICT
仕様書にはあるがガイドにはないエンドポイントapi_spec.md と guides/runbook のエンドポイントに関する主張を比較しますCROSS_DOC_ENDPOINT_GAP

アルゴリズム:

claim_index = {}  # key: normalized(claim_type + entity), value: [{doc, line, value}]
FOR claim IN all_verified_claims WHERE claim.verified == true:
  key = normalize(claim.claim_type, claim.entity_name)
  claim_index[key].append({doc: claim.doc_path, line: claim.line, value: claim.claim_value})

FOR key, entries IN claim_index:
  unique_values = set(entry.value for entry in entries)
  IF len(unique_values) > 1:
    CREATE finding(type=CROSS_DOC_*_CONFLICT, severity=HIGH,
      location=entries[0].doc + ":" + entries[0].line,
      issue="'" + key + "' stated as '" + val1 + "' in " + doc1 + " but '" + val2 + "' in " + doc2)
フェーズ 6:スコアとレポート

必ず読むこと: references/audit_scoring.md を読み込みます。

ペナルティ計算式を使ってスコアを計算します。レポートを作成します。

監査カテゴリ(Checks テーブル用)

ID確認項目対象範囲
path_claimsファイル/ディレクトリのパスすべてのパス参照をファイルシステムと照合します
version_claimsバージョン番号パッケージ、ツール、イメージのバージョンをマニフェストと照合します
count_claims数量と統計数値に関する記述を実際の数と照合します
endpoint_claimsAPI エンドポイントルート定義をコントローラー/ルーターと照合します
config_claims設定と環境変数環境変数と設定キーをソースと照合します
command_claimsCLI コマンドスクリプトとコマンドを package.json/Makefile と照合します
entity_claimsコード内のエンティティ名関数とクラスをソース内の定義と照合します
line_ref_claims行番号参照file:line を実際のファイル内容と照合します
cross_docドキュメント間の一貫性ドキュメント間で同じ事実が一致しているか確認します

重大度の対応付け

問題タイプ重大度理由
PATH_NOT_FOUND(重要なファイル:AGENTS.md、CLAUDE.md、runbook、api_spec)CRITICALセットアップ/オンボーディングが失敗します
PATH_NOT_FOUND(その他のドキュメント)HIGH誤解を招く参照です
VERSION_MISMATCH(メジャーバージョン)HIGH根本的に誤っています
VERSION_MISMATCH(マイナー/パッチ)MEDIUM表面的なずれです
COUNT_MISMATCHMEDIUM誤解を招く指標です
ENDPOINT_NOT_FOUNDHIGHAPI 利用者に影響します
CONFIG_NOT_FOUNDHIGHデプロイが失敗します
COMMAND_NOT_FOUNDHIGHセットアップ/CI が失敗します
ENTITY_NOT_FOUNDMEDIUM混乱を招きます
LINE_MISMATCHLOW軽微な不正確さです
INFRA_MISMATCHHIGHDocker/デプロイに影響します
CROSS_DOC_*_CONFLICTHIGH信頼性が損なわれ、ドキュメント間で矛盾が生じます

出力形式

必ず読むこと: references/templates/audit_worker_report_template.md を読み込みます。

references/audit_summary_contract.md に従って JSON サマリーを作成します。管理モードでは、呼び出し元が runId と summaryArtifactPath の両方を渡します。スタンドアロンモードでは、ワーカーが共通コントラクトに従って、実行スコープのアーティファクトパスを独自に生成します。

{output_dir}/ln-614--global.md に、category: "Fact Accuracy" と、次のチェックを含めたレポートを作成します:path_claims、version_claims、count_claims、endpoint_claims、config_claims、command_claims、entity_claims、line_ref_claims、cross_doc。

references/audit_summary_contract.md に従ってサマリーを返します。

summaryArtifactPath がない場合は、スタンドアロンのランタイムサマリーを .hex-skills/runtime-artifacts/runs/{run_id}/evaluation-worker/{worker}--{identifier}.json に書き込み、構造化出力にも同じサマリーを任意で出力します。

Report written: .hex-skills/runtime-artifacts/runs/{run_id}/audit-report/ln-614--global.md
Score: X.X/10 | Issues: N (C:N H:N M:N L:N)

重要なルール

読み込み済みの references/audit_worker_core_contract.md を適用してください。

  • 自動修正しない: 違反のみを報告してください。ユーザー向けにコーディネーターが集約します。
  • コードが正: ドキュメントがコードと矛盾する場合、(コードのバグでない限り)ドキュメントが誤りです。
  • 証拠が必要: 各指摘に、使用した検証コマンドとその結果を含めてください。
  • 誤検出をしない: 誤って報告するくらいなら、問題を見逃すほうが適切です。確信が持てない場合は、注記を添えて LOW に分類してください。
  • 位置を正確に示す: プログラムから移動できるよう、必ず file:line を含めてください。
  • 広範囲を対象とする: すべての .md ファイルをスキャンしてください。docs/reference/、tests/、タスク用ドキュメントもスキップしないでください。
  • 重点的に深掘りする: まず、正規ドキュメントと主張の多いドキュメントの検証に最も注力してください。
  • ドキュメント間の整合性も確認する: ドキュメント間の矛盾は、単独のドキュメントの誤りよりも信頼を損ないます。
  • 効率よくまとめて処理する: 先にすべての主張を抽出し、その後、種類ごと(すべてのパス、すべてのバージョンなど)にまとめて検証してください。
  • 共有プレースホルダーポリシー: docs_quality_rules.json の許可リストにあるセットアップ用プレースホルダーを尊重し、タスクのセットアップ用ドキュメントで問題として報告しないでください。
  • 意味の曖昧さがある場合に限り hex-graph を使用する: コードエンティティと参照については、直接のマニフェスト/ファイルの確認でもシンボルの識別や参照の解決が曖昧な場合に限り、繰り返し grep するよりグラフクエリを優先してください。

完了の定義

読み込み済みの references/audit_worker_core_contract.md を適用してください。

  • contextStore を正常に解析した(output_dir を含む)
  • すべての .md ファイルを検出した(広範囲)
  • 9 種類の主張を抽出した
  • すべての主張を、証拠を添えてコードベースと照合した
  • ドキュメント間の整合性を確認した
  • Layer 2 の推論で誤検出を除外した
  • ペナルティアルゴリズムを使用してスコアを算出した
  • {output_dir}/ln-614--global.md にレポートを書き込んだ(単一の Write 呼び出しによるアトミックな書き込み)
  • 契約に従ってサマリーを書き込んだ

参照ファイル


バージョン: 1.0.0 最終更新日: 2026-03-06

コメント