tabular-document-review について
複数の法律文書から指定項目を抽出し、出典付き比較マトリックスにまとめる法律チーム向けスキルです。エージェントによる並列抽出、確信度表示、MarkdownまたはJSON出力に対応しますが、文書の解析や法的リスク評価は行いません。
主な機能
- 01フォルダーを走査して文書一覧を作成
- 02指定列の情報を抽出
- 03結果を比較マトリックスに集約
- 04出典と確信度を記録
- 05MarkdownまたはJSONで出力
活用シーン
- 01契約書の重要条項を一括比較
- 02NDA、雇用契約、賃貸借契約をレビュー
- 03欠損値や抽出結果の不一致を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ borghei/ claude-skills --skill tabular-document-reviewインストール後、Claude Code で/tabular-document-reviewを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/common_extraction_columns.mdextraction_methodology.mdscripts/document_discovery.pyextraction_aggregator.py詳細
⚠️ 実験的 — このスキルは、教育および情報提供のみを目的として提供されています。法律上の助言を構成するものではありません。使用に関する一切の責任はユーザーにあります。出力に基づいて行動する前に、資格を有する法律専門家に相談してください。
表形式ドキュメントレビュー スキル
概要
複数の法律文書から構造化データを抽出し、引用付きの比較マトリックスにまとめる、本番環境対応のツールキットです。ユーザー定義の抽出列、最大10エージェントによる並列処理、信頼度スコアリングに対応し、Markdown テーブルまたは構造化 JSON で出力します。契約書の一括レビュー、NDA の比較、雇用契約の分析、賃貸借契約のレビューを行う法務チーム向けに設計されています。
目次
まず確認すること
レビューの前に、以下の入力内容を確認してください。不明または曖昧な項目があれば、推測せずに質問してください。
- 抽出列 — 各セルに何を格納するかを正確に定義してください。曖昧な「日付」では数十種類の日付が該当しますが、指針を添えた「発効日」であれば該当するものを絞れます
- 文書セットの場所と形式 — 文書の検索方法と割り当てる並列エージェント数(ceil(N/10)、最大10)を決定します
- 文書の種類 — 契約書、NDA、雇用契約、賃貸借契約など。事前定義された列セットと、列ごとの抽出ガイダンスを選択します
中断ルール:出力に最も影響する2~3項目だけを質問してください。ユーザーが「そのまま作成して」と答えた場合は作業を進め、マトリックスの冒頭に前提を列挙してください。
ツール
1. 文書検出(scripts/document_discovery.py)
ディレクトリをスキャンして法律文書を検出し、インベントリマニフェストを生成します。
python scripts/document_discovery.py /path/to/contracts
python scripts/document_discovery.py /path/to/ndas --types pdf,docx --json
python scripts/document_discovery.py /path/to/leases --types pdf,docx,txt,md --min-size 1024
2. 抽出結果集約(scripts/extraction_aggregator.py)
複数の抽出結果 JSON を集約し、統合された比較マトリックスを作成します。
python scripts/extraction_aggregator.py \
--results extraction_1.json extraction_2.json extraction_3.json
python scripts/extraction_aggregator.py \
--results-dir ./extraction_results/ --json
python scripts/extraction_aggregator.py \
--results-dir ./extraction_results/ \
--format markdown \
--output review_matrix.md
python scripts/extraction_aggregator.py \
--results extraction_1.json extraction_2.json \
--columns "Parties,Effective Date,Term,Governing Law"
リファレンスガイド
| リファレンス | 目的 |
|---|---|
references/extraction_methodology.md | 文書抽出のベストプラクティス、JSON スキーマ、エージェントプロンプト |
references/common_extraction_columns.md | 契約書、NDA、雇用契約、賃貸借契約向けの事前定義済み列セット |
ワークフロー
5段階の文書レビューパイプライン
| ステップ | アクション | ツール | 出力 |
|---|---|---|---|
| 1. 要件の収集 | 文書フォルダー、出力ファイル名、抽出する列を定義する | 手動 | 列リスト、ファイルパス |
| 2. 文書の検出 | 対象文書を求めてディレクトリをスキャンする | document_discovery.py | 文書マニフェスト JSON |
| 3. 文書の処理 | 引用付きで列ごとの値を抽出する(並列エージェント) | AI エージェント(外部) | 文書ごとの抽出 JSON |
| 4. 結果の収集 | 抽出 JSON を集約して統合マトリックスを作成する | extraction_aggregator.py | 統合マトリックス |
| 5. 出力の生成 | Markdown テーブルまたは構造化 JSON としてエクスポートする | extraction_aggregator.py | 最終成果物 |
並列処理戦略
| エージェント数 | エージェントあたりの文書数 | 使用する場合 |
|---|---|---|
| 1 | すべて | 文書が1~5件の場合 |
| 2~3 | ceil(N/agents) | 文書が6~15件の場合 |
| 4~6 | ceil(N/agents) | 文書が16~40件の場合 |
| 7~10 | ceil(N/agents) | 文書が41~100件の場合 |
| 10(最大) | ceil(N/10) | 文書が100件を超える場合 |
エージェントプロンプトのテンプレート
各エージェントには、以下の構成のプロンプトが渡されます。
You are reviewing {count} legal documents. For each document, extract the
following columns:
{column_definitions}
For each value extracted:
1. Provide the exact value found
2. Include the page number (PDF) or section/paragraph (DOCX/MD)
3. Rate your confidence: HIGH (exact match), MEDIUM (inferred), LOW (uncertain)
4. If not found, record "NOT FOUND" with confidence LOW
Output as JSON per the extraction schema.
信頼度スコアリング
| レベル | 色コード | 定義 |
|---|---|---|
| HIGH | 緑 | 明確な引用とともに正確な値が見つかった |
| MEDIUM | 黄 | 文脈から値を推測した。複数の解釈が可能 |
| LOW | 赤/見つからない | 値が不確か、または文書内に見つからない |
出力形式
シート 1:文書レビュー
| 文書 | 当事者 | 発効日 | 契約期間 | 準拠法 | ... |
|---|---|---|---|---|---|
| contract_a.pdf | Acme / Beta [p.1] | 2026-01-15 [p.2] | 3 years [p.3] | Delaware [p.12] | ... |
| contract_b.pdf | Gamma / Delta [p.1] | NOT FOUND | 2 years [p.4] | New York [p.10] | ... |
シート 2:概要
| 指標 | 値 |
|---|---|
| 処理した文書数 | 25 |
| 抽出した列数 | 8 |
| 平均信頼度 | 87% |
| 未検出率 | 12% |
抽出シナリオ
契約書レビュー
| 列 | 抽出内容 |
|---|---|
| 当事者 | すべての契約当事者の正式な法律上の名称 |
| 発効日 | 契約の発効日または締結日 |
| 契約期間 | 契約期間 |
| 更新 | 自動更新の条件および通知期間 |
| 準拠法 | 契約を規律する法域 |
| 責任上限 | 責任の上限額または算定式 |
| 補償 | 補償義務およびその範囲 |
| 知的財産権の帰属 | 知的財産権の帰属に関する条項 |
| 解除権 | 解除事由および通知要件 |
| データ保護 | データ保護またはプライバシーに関する義務 |
NDA レビュー
| 列 | 抽出内容 |
|---|---|
| 当事者 | 開示当事者および受領当事者 |
| 種類 | 相互または一方向 |
| 定義の範囲 | 「機密情報」の定義方法 |
| 例外 | 機密保持に関する標準的な例外 |
| 契約期間 | 機密保持義務の期間 |
| 存続期間 | 契約終了後の存続期間 |
| 返還/破棄 | 契約終了時の義務 |
| 救済措置 | 違反に対して利用できる救済措置 |
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| 検出で文書が 0 件見つかる | パスまたはファイル形式が誤っている | パスが存在することを確認し、--types が実際のファイル拡張子と一致するか確認します |
| 抽出した JSON のスキーマが誤っている | エージェントのプロンプトが不完全 | extraction_methodology.md の抽出スキーマを使用します |
| 集約処理で競合が表示される | 同じセルに複数の値がある | 元の文書を確認します。集約処理では、手動レビューが必要な競合が示されます |
| 「NOT FOUND」の割合が高い | 列の定義が文書の種類に対して具体的すぎる | common_extraction_columns.md の列定義を使用し、定義の範囲を広げます |
| 信頼度がすべて LOW | エージェントが値を見つけられない | 列の定義が十分に具体的か確認し、文書が読み取り可能であることを確認します |
| 大量の結果を処理すると集約処理がクラッシュする | 一度に読み込む結果ファイルが多すぎる | 結果を 50 件ずつ処理し、--columns で出力幅を制限します |
| Markdown テーブルの位置がずれる | 値が長い、または特殊文字が含まれている | 機械処理には --format json を使用し、長い値を短縮します |
| 出典情報がない | エージェントがページ/セクションの参照を含めていない | エージェントのプロンプトで出典の要件を強調し、抽出スキーマを確認します |
成功基準
- 抽出カバレッジ:すべての文書で、定義した列の 90% 以上に値が入力されている
- 信頼度の分布:抽出結果の 70% 以上が高い信頼度と評価されている
- 出典の正確性:抽出したすべての値に、検証可能なページ/セクションの出典が付いている
- 処理速度:並列エージェントを使用して、30 分以内に 50 件以上の文書を処理できる
- マトリックスの完全性:最終マトリックスにすべての文書と列が含まれ、孤立した行がない
対象範囲と制限事項
このスキルの対象:
- PDF、DOCX、TXT、MD 形式の文書の一覧化と検索
- 並列エージェント処理による抽出結果の集約と、統合マトリックスへの整理
- 契約書、NDA、雇用契約書、リース契約書向けの事前定義済み列セット
- 抽出値の信頼度スコアリングと競合の検出
- Markdown および JSON の出力形式
このスキルの対象外:
- 実際の文書解析やテキスト抽出(外部ライブラリまたは AI エージェントが必要です)
- スキャン文書の OCR 処理
- Excel/XLSX の出力生成(JSON で出力し、外部で変換してください)
- 抽出値の自動的な法的分析やリスク評価
- バージョン間の文書比較や赤入れ
アンチパターン
| アンチパターン | 失敗する理由 | より良い方法 |
|---|---|---|
| あいまいな列の定義 | 「日付」では、契約書内の多数の日付が該当する可能性があります | 「発効日」のように、参照箇所の案内を含めた具体的な定義を使用します |
| 文書の検索を省略する | 文書数が不明なため、エージェントの割り当てを誤ります | まず必ず検索を実行し、マニフェストをパイプラインの計画に使用します |
| 信頼度が LOW の結果を無視する | 欠落したデータや不確かなデータが事実として扱われます | 信頼度が LOW のセルをすべて手動で確認し、最終レポートに明記します |
| 100 件を超える文書を 1 つのエージェントで処理する | 処理が遅く、コンテキストウィンドウがあふれ、品質が低下します | 並列処理を使用します。1 エージェントあたりの文書数は ceil(N/10)、エージェント数は最大 10 とします |
| 出典の提示を必須にしない | 抽出値を原文と照合できません | 抽出値ごとにページまたはセクションの出典を必須とし、出典のない値は却下します |
ツールのリファレンス
scripts/document_discovery.py
ディレクトリをスキャンして法律文書を検索し、インベントリマニフェストを生成します。
usage: document_discovery.py [-h] [--json]
[--types TYPES]
[--min-size MIN_SIZE]
[--max-size MAX_SIZE]
directory
positional arguments:
directory Path to directory containing documents
options:
-h, --help Show help message and exit
--json Output in JSON format
--types TYPES Comma-separated file extensions to include
(default: pdf,docx,doc,txt,md,rtf)
--min-size MIN_SIZE Minimum file size in bytes (default: 0)
--max-size MAX_SIZE Maximum file size in bytes (default: no limit)
scripts/extraction_aggregator.py
抽出結果を集約し、統合比較マトリックスにまとめます。
usage: extraction_aggregator.py [-h] [--json]
[--results RESULTS [RESULTS ...]]
[--results-dir RESULTS_DIR]
[--format {markdown,json}]
[--columns COLUMNS]
[--output OUTPUT]
options:
-h, --help Show help message and exit
--json Output in JSON format (alias for --format json)
--results One or more extraction result JSON files
--results-dir Directory containing extraction result JSON files
--format Output format: markdown table or JSON (default: markdown)
--columns Comma-separated column names to include (default: all)
--output Write output to file instead of stdout