Legal Research(法律リサーチ)
ディープリサーチを模倣し、法律に特化し、デフォルトで効率的になるよう調整されています。
無料/オープンウェブ上の法律情報源のみ(Westlaw/Lexisは使用しません)で検索パイプラインを実行します。
段階ごとの形状、上限、モデルマップは、呼び出しの横にあるステップ4にあります。この設計は、
トークン使用量を抑えます — ナイーブなファンアウトの主なコストは、フロンティアモデルが取得したすべてのページを読むことです —
同時に、幻覚的な引用を防止します。高いリスクの作業では、スピードよりも徹底性が求められる場合に
deep(例:「深いパスを実行」)を追加してください。
情報源(オープンウェブ)
判例法:CourtListener、Justia、Google Scholar判例法、Cornell LII、Caselaw Access Project、 公式裁判所サイト。学術文献:SSRN、Google Scholar、ロースクールのデジタルコモンズリポジトリ、 HeinOnlineオープンコンテンツ、ジャーナルサイト、教員ページ。学術文献モードでは、Zotero MCPサーバーを介して ユーザー自身のZoteroライブラリも検索します(利用できない場合は正常にスキップされます)。
実行方法
1. リクエストを解析する
ユーザーのプロンプトから以下を抽出します:
- question — 法的質問(必須)。
- mode —
caselaw、scholarship、またはboth。デフォルトはboth。 文言から推測します(「裁判所はどう判断しているか」→ caselaw;「文献の状況/学術的議論」→ scholarship)。 - outputStyle —
practitioner(問題提起/簡潔な回答/IRAC)またはacademic(導入/概観/分析/脚注)。デフォルト:caselawの場合はpractitioner、scholarshipおよびbothの場合は academic。 明示的なオーバーライドを優先します。 - jurisdiction、asOfDate(デフォルトは今日)、および任意のnotes(事実、位置づけ、範囲)。
2. 本当に妨げになる場合のみ明確化する
質問があいまいで適切に調査できない場合、起動前に2〜3のターゲットを絞った質問をします。 判例法の場合、管轄権と手続き上の位置づけが最も重要です。学術文献の場合、 具体的なテーゼまたはサブ質問と時間枠が重要です。質問しすぎないでください — 適切なデフォルトを選択し、 それを明記してください。
3. 事前フライト:ウェブツールが許可されていることを確認する(起動前に行う)
リサーチサブエージェントはWebSearchとWebFetchを多用します。これらのツールがあらかじめ許可されていない場合、 各呼び出しでインタラクティブな許可プロンプトが表示されます — そして中断されたプロンプトは、 調査中のエージェントを停止させる可能性があります(実際の障害モード:以前の実行では4つのベクターのうち2つが失われました)。
Workflowを呼び出す前に、実行を自己完結型にします:
~/.claude/settings.jsonを読み取り、permissions.allowに"WebFetch"と"WebSearch"があるか確認します。- いずれかが欠けている場合、追加します(既存の
allow配列にマージします — 置き換えないでください。permissions.allowパスが存在しない場合は作成します)。両方すでに存在する場合、何もしません。 - これについてユーザーにプロンプトを表示しないでください — これはスキルのためのルーチン設定です。
(ファイルが管理/読み取り専用で編集できない場合、ユーザーにフェッチごとのプロンプトが表示され、
それを受け入れる必要があること、または
/permissionsを介してルールを追加できることを伝えてください。) - オプションですが、一目見る価値があります:決定的な判例引用検証にはCourtListener APIトークンが必要です。
テストしてください。ファイルを探しに行かないでください —
python3 ${CLAUDE_PLUGIN_ROOT}/skills/legal-research/check_cite.py "347 U.S. 483"を実行します。 終了コード0で{"found": true}が返れば、トークンが機能しており、報告する必要はありません。check_cite.pyはCOURTLISTENER_API_TOKEN、次にCOURTLISTENER_TOKEN、 次にファイル~/.config/courtlistener/tokenの順でトークンを解決します — この順序で、 環境変数ルート(通常~/.claude/settings.jsonのenvブロックに設定)が標準的なインストール方法であるため、 ファイルの欠如は何も証明しません。プローブが実際に失敗した場合、実行をブロックしないでください — 検証エージェントはウェブチェックにフォールバックします — ただし、配信ステップで一度だけ言及してください (トークンページ:https://www.courtlistener.com/profile/api-token/)。
4. ワークフローを起動する
バンドルされたスクリプトと解析された引数を使用してWorkflowツールを呼び出します:
Workflow({
scriptPath: "${CLAUDE_PLUGIN_ROOT}/skills/legal-research/legal-research.workflow.js",
args: {
skillsDir: "${CLAUDE_PLUGIN_ROOT}/skills", // バンドルされたヘルパースクリプトが存在する場所
question: "<法的質問>",
mode: "caselaw" | "scholarship" | "both",
outputStyle: "practitioner" | "academic",
jurisdiction: "<例:連邦 / 第9巡回区 / ミズーリ州 / 最高裁判所>",
asOfDate: "<YYYY-MM-DD または 'today'>",
notes: "<事実、位置づけ、範囲、ユーザーが強調したもの>",
deep: false, // ユーザーが深い/徹底的/高リスクのパスを要求した場合のみtrue
projectDir: "<現在の作業ディレクトリ — ローカルコーパス調査ベクターを有効にします;
カレントディレクトリが質問と明らかに関連しない場合のみ省略>"
}
})
デフォルトでリーン:約4つの検索専用調査ベクター(学術モードではZoteroライブラリスイープと
projectDirのローカルコーパススイープ — 以前のメモとダウンロードした情報源はマップとリードであり、
引用可能な権威ではありません)。範囲は質問も分類します(ドクトリナルvs学術的;歴史的かどうか)—
これにより、ドラフト(合成規律、判決/傍論の衛生、歴史的ドクトリン質問のための時代横断的区分法)に注入される
分析手法の要約が選択され、歴史的質問の場合は、カバレッジが現代のカノンに集中しないように、
検索ベクターを時間層に分散させます。直接回答カバレッジセル(scholarship/both、2026-07-16追加、Codex比較実行が
実際の質問で64エージェントのClaude実行を上回った後): 範囲は、質問の指定された現象自体を
対象とする学術文献に少なくとも1つのベクターを割り当てなければなりません — 専門家が期待する専門用語から構築され、
最も適切な作品の引用チェーンを含み、現象が単に属する隣接文献とは区別されます。
調査はそのような中心的候補にフラグを立てます;トリアージはそれらを広範な隣接調査よりも優先して全文読み取りに
昇格させます。これが修正する障害:5つの隣接文献(裁判外の発言、忌避、著名人)をマッピングしながら、
現象に直接関する少数の作品(例:司法自伝研究、「裁判官の書籍取引」倫理セクション)を見逃し、
その後、そのコーパスのギャップを「直接的な学術文献は存在しない」という発見と誤解する。
不在/ギャップの主張は、現在、中心的ソース省略監査(学術的方法要約内)によってゲートされています:
「Xに直接対応する学術文献はない」という主張は、現象をターゲットにした検索と双方向の引用チェーンが
実際に実行された場合にのみ許可されます — そうでない場合、主張は「レビューされた情報源の範囲内」に範囲設定され、
未実行の検索にフラグが立てられます。ファンアウトはカバレッジセルを中心に編成され、エージェント上限は上限であり、
割り当てではありません — 重複しないレーンは、多くの重複する一般検索よりも優れています。パイプライン:
調査ベクター → 重複排除 → 合計で最大8つの一意の全文読み取り(ベクターごとではなく;
読み取りエージェントはオープンアクセスのミラー — デジタルコモンズ、著者ページ、CourtListener/LII — に
フォールバックしてから諦め、PDFをハードサイズ制限付きフェッチャーfetch_page.pyにルーティングし、
命題と引用とともに位置づけ/制限/反対意見/重要性を抽出します)→ 1つのセッションモデルドラフト(方法要約に
従う)→ 制限付きギャップフィル(最大3つのターゲット検索と1回の再試行波、ドラフトが欠落した権威にフラグを
立てた場合のみ)→ 引用された権威のみのチャンク化された引用チェック(エージェントあたり8件;判例引用は
CourtListenerの引用ルックアップAPI、check_cite.pyを使用して決定的に確認され、さらに
cl_case_tools.py citingによる体系的な引用意見処理スキャン — ケースの実際の引用意見に対する
関連性ランク付けされた処理言語プローブ、存続日付付き、古いワンサーチルックアップを置き換えます;
この実行ですでに開かれたソースは存在再チェックをスキップします)→ 軽いファイナライズ。選択されなかった
候補と、各読み取りソース自体が依存する権威は、ヘッジされた未読リードとしてドラフトに引き継がれるため、
幅は広く保たれながらフェッチは少なく保たれます。すべての実行は支出ガード付きです:ハードワイヤードの
ソフトシーリング(リーンでは約250k出力トークン、deepでは約1M — 2026-07-15に600kから引き上げられました。
深い歴史的実行がラダーの途中で制限され、43の引用のうち35が未チェックのままになったため)は、
明示的な+500k予算と同じグレースフルデグレーデーションラダーを提供します — 読み取りをトリミング→
ギャップフィルをスキップ→負荷のかかる引用のみを検証 — そのため、暴走実行はスパイラルする代わりに
劣化します。読み取り、ギャップフィル、検証エージェントはすべてアクセス規律ブロック(同日追加)を
保持します:ハード試行上限、WebSearch/WebFetchのみ、およびブラウザ自動化、ライブラリプロキシ、SSO/ログインフローの
明示的な禁止 — ペイウォールのある情報源は正直なopened=falseであり、努力を続ける理由ではありません。
モデル:検索スニペット調査にはHaikuのみ;トリアージ、全文読み取り、検証にはSonnet;
範囲、ドラフト、ファイナライズはセッションモデルを継承します(Fableがオンの場合はFable)。
deep:true(または+800kスタイルのトークン予算)は最大7つのベクターに拡大し、読み取り上限を16に引き上げ、
各負荷のかかる引用(上限8件)に3票の敵対的反論パス(引用を逐語的に確認するためにソースを再度開きます)を
与えます。ワークフローはバックグラウンドで実行され、完了時に通知します。
5. 配信する
ワークフローは{ memo, exitState, degradation, counts, ... }を返します。
- 提示する前に
exitStateを確認してください。complete→ 配信します。complete_with_limits→ 配信しますが、文書化されたギャップ(degradationとメモの制限セクションに リストされています)を表面化します。budget_exhausted→ 予算ガードが実際のカバレッジを削減しました (読み取りをトリミング、ギャップフィルをスキップ、未チェックの引用 — 詳細はdegradationを参照)。 メモはまだ配信可能ではありません。実証済みの救済パターン(2026年7月の1960年以前の実行): ターゲットを絞った読み取りおよび検証エージェントパスを起動します — カバーされていないエリアごとに1つ、 取得して公式の判例テキスト(CAP static.case.law / LOC usrepスキャン)と確認する具体的な判例/引用を 各エージェントに与え、その後、ワークフローの検証済みコアとフィルパスから自分で最終メモを作成します。 範囲の半分に対して「信頼性:不十分」と言っているメモを、ギャップを埋めるか質問せずにユーザーに 渡さないでください。救済エージェントはワークフローエージェントと同じアクセス規律が必要です (2026年7月の学術実行の教訓。上限なしの救済エージェントが、ペイウォールのある1962年の記事に対して ブラウザ自動化にエスカレートして30分以上と約245kトークンを消費しました):すべての救済プロンプトに ハード試行上限(ソースあたり約3回)、WebSearch/WebFetchのみ、ブラウザ自動化/ライブラリプロキシ/SSOフローの 明示的な禁止、および「ペイウォール — ここに私が到達した最も強力な根拠があります」は完全に許容される 回答であるという指示を書き込みます。救済エージェントがそれでも動作し続ける場合、SendMessageで 終了して報告するように指示し、待たないでください。 - メモを主要な配信物としてユーザーに提示します。
- ハイパーリンク(必須。著者による、2026-08-29): メモ内のすべてのニュース記事、ブログ投稿、 またはその他のウェブソースは、クリック可能なリンクとして機能するURLを添付する必要があります — 決して「(Politico)」や「(Roll Call, July 14, 2026)」のようなアウトレット名のみの帰属ではありません。 ワークフローの引用ブロックはエージェントプロンプトでこれを強制します;手書きの編集、救済パス、 およびアドホックな(非ワークフロー)リサーチメモも同じルールに従い、救済/フィルエージェントに 引用するすべてのソースのURLを返すように指示します(URLのない主張は未検証です)。
- リサーチメモヘッダーとプロダクションフッター(必須。著者による — ~/.claude/CLAUDE.mdのグローバルルール):
メモはタイトルの直下に構造化されたヘッダーブロック(
Topic:/Date:/By:)を置いて開きます;Production details:ブロックは、ファイルの最後(すべての付録の後、「このリサーチの限界」を含み、---ルールで区切られます)に配置します — 決して上部には置きません。Dateはメモが配信/作成された ローカルの日付/時刻です;ByはClaude-<オーケストレーションセッションモデル>(正確なID)です;Production detailsはスキル名、実際に使用されたワークフローエージェントモデル(実行のエージェントごとの 進行状況エントリから読み取ります — 想定しないでください)、ウォールクロック時間、および完了通知の<usage>ブロックからのトークン数(サブエージェント出力トークンとラベル付けされ、オーケストレーターの オーバーヘッドは含まれません)を指定します。ワークフローの後に救済/フィルパスが実行された場合、 それらのエージェント数を追加し、時間範囲はワークフロー実行のみをカバーすることを記載します。 - 検証カウント(「N件の権威が検証済み、M件が未検証」)を表面化し、信頼度をユーザーが把握できるようにし、 メモの**「このリサーチの限界」**付録を指し示します(各権威の検証根拠を開示します: 直接全文/権威ある再現/二次的裏付け/引用のみ)。
- 結果は**
skeleton**も運びます — ドラフトが作成された引用タグ付き分析アウトライン(各負荷のかかる主張は その発見にタグ付けされ、穴はGAPとマークされます)。デフォルトでは提示せず、ユーザーが推論を監査したい場合に 提供し、自分でメモを手動編集するときに使用してください(スケルトン行のない主張は、成長する前に権威または ヘッジが必要です)。 - 保存を提案します:作業ディレクトリにMarkdown;バンドルされたコンバーターを介してWord —
python3 ${CLAUDE_PLUGIN_ROOT}/skills/legal-research/md2docx.py memo.md memo.docx "<タイトル>"; またはコネクターを介してGoogle Drive。ユーザーが最初に.docxを要求した場合、単にそれを生成します。 - 弱点/未検証のポイントについてフォローアップパス、または出力スタイルの切り替えを提案します。
主張のキャリブレーション(v7)
引用検証と主張キャリブレーションは、互いに素なエラークラスを捕捉します:検証はソースに関する虚偽の記述を捕捉し、 キャリブレーションは、サポートされていない一般化に組み立てられた真の発見を捕捉します。パイプラインは現在、 両方を強制します — ドラフトプロンプトは主張強度ゲートを保持します(「最初」、「唯一」、「圧倒的に」、 「消去された」のような頻度/優先度/最終性の単語は、それらをサポートするように設計された検索を必要とし、 そうでなければサンプル範囲の言語を使用します)。読み取りエージェントは各ソースの姿勢(arguendoや 非先例的処分を含む)と関連性(プロセス専用/前提を仮定/隣接ドクトリン)をタグ付けし、歴史的実行は 選択バイアス、境界日付、および害/除外チェックを取得し、deep実行ではドラフトに専用の敵対的キャリブレーションパスを 追加します。これらの間に3番目のエラークラスがあります:
...