houki-research Skill
日本の法規(法律・政令・省令・通達・判例・裁決・行政解釈)を横断して調べるときに、 LLM が どの MCP をどの順に呼び、出典をどう書き、どこで注意を促すか を定めた Skill です。 MCP サーバーは資料を返すだけで、順序や書式や注意喚起は決めません。それらの正典がこの Skill です。
- リポジトリ: shuji-bonji/houki-research-skill(0.8.1)
- 配布: claude-plugins marketplace の plugin
houki-research(v0.7.0 からhouki-egov-mcpとhouki-nta-mcpをdependenciesに宣言しており、この plugin を入れれば 2 つの MCP も入ります)、またはskills/houki-research/をプロジェクトの.claude/skills/に置く - 対象分野: 税務に限らず日本の全法規。現時点で MCP が揃っているのが税務なので、例は税務が中心です
4 つの責務
① 業法独占規定への注意喚起
問いが「私の確定申告で」「うちの会社の決算で」「この契約書の条項は」のように 個別の事案への当てはめ を求めていると見えたら、 回答の冒頭で「条文・通達の引用と一般的な説明は行うが、事案への適用判断は資格者に相談してほしい」と伝えます。 文献調査・制度の概観・条文の引用・改正履歴の説明は、その後で通常どおり行います。
v0.3.0 から、このときに返すものと返さないものを表で定めています。
| 内容 | |
|---|---|
| 返すもの | 条文・通達・裁決の提示(出典付き)、制度の概観と改正履歴、論点の列挙、何が事実認定に依存するかの明示、legal_status の階層 |
| 返さないもの | 結論(該当する・しない)、可否の判定、金額・税額の確定、書類の起案・文案、推測 |
返さないもの
返さないものは、注意喚起を添えても返しません。理由は精度ではなく業法の独占規定です(免責事項と利用範囲)。
② 横断の手順
手順は 問いの形 で選びます(v0.8.0 から)。利用者が名乗る立場ではなく、問いの形で選ぶので、同じ人の問いが途中で別の行に移ったら手順も変わります。
| 問いの形 | 手順 |
|---|---|
| この仕様は法令のどこに触れるか / この機能の法令上の要件は | workflows/feasibility-check.md — 仕様の語を法令の語に置き換え、条文 → 施行令・施行規則 → 施行日まで揃えて、仕様の要素ごとの表で返します。「適法か」には答えません |
| この取扱いの根拠と、今も有効か(通達・Q&A から入る) | workflows/tax-research.md — 下の 1〜6 |
| 私の場合はどうなるか(個別の事案) | 鉄則 1 の応答型 — 条文・通達・論点までを返し、結論・可否・金額は返しません |
| この改正はいつから、何が変わるか | revision-tracking.md(予定)。それまでは get_law_revisions と下の 4 |
MCP を組み込む開発者は問いを投げる利用者ではなく契約を読む利用者なので、手順ではなく docs/ARCHITECTURE.md / ERROR-CODES.md と各 MCP の tools/list を参照します。
feasibility-check で呼ぶ順
仕様が法令のどこに触れるかを確かめるときに、Skill を読み込んだ LLM がツールを呼ぶ順です(番号は workflow のステップ)。全体の手順は feasibility-check の仕様書ページ にあります。
図で呼ぶツールのページ: search_law・search_fulltext・get_toc・get_law・get_related_laws・get_article_references・get_law_revisions
tax-research で呼ぶ順
以下は通達・Q&A から根拠条文へ戻る手順(tax-research.md)です。ツールを呼ぶ順は次のとおりです(番号は下の手順の番号)。全体の手順は tax-research の仕様書ページ にあります。
図で呼ぶツールのページ: resolve_abbreviation・get_law・nta_search_tsutatsu・nta_get_tsutatsu・get_law_revisions・nta_search_kaisei_tsutatsu・nta_inspect_pdf_meta。質疑応答事例から入るときは nta_search_qa・nta_get_qa を使います(下の 3 の 3 つ目)。
- 略称(「消基通」「インボイス」「労基法」)が含まれていれば、まず
resolve_abbreviationで正式名と担当 MCP(source_mcp_hint)を確かめます - 法律本文を houki-egov-mcp で引きます。政令・省令があれば続けて引きます
- 通達・Q&A を houki-nta-mcp で引きます。応答の
legal_statusを見て、通達が国民を拘束しないことを回答に残します- 通達から先に引いた場合は、応答の
next_actionsに従って houki-egov-mcp のget_lawで法律本文へ戻ります。条番号は通達の本文の「法第N条」「令第N条」から補います(v0.4.0 から。houki-nta-mcp 0.11.0 以上が前提) next_actions[].exampleに入っているmcpとtoolは、どの MCP のどの tool を呼ぶかを示すもので引数ではありません。この 2 つを除いた残りを引数として渡します。そのまま渡すと、houki-egov-mcp 0.6.0 以上・houki-nta-mcp 0.14.0 以上ではINVALID_ARGUMENTになります(v0.5.1 から)- 質疑応答事例から先に引いた場合は、
nta_get_qaをformat: "json"で呼び、related_laws/related_tsutatsuとnext_actionsに従って法律本文と通達へ戻ります。条・項・号まで入っているので、本文から補う必要はありません。質疑応答事例は「参考情報(拘束力なし)」に置き、作成基準日(qa.basisDate)と国税庁の注記(qa.notice)を残します(v0.5.0 から。houki-nta-mcp 0.12.0 以上が前提)
- 通達から先に引いた場合は、応答の
- 改正の経緯が要るときは
get_law_revisionsと改正通達を引きます。新旧対照表の PDF はnta_inspect_pdf_metaをkind: "comparison", save: trueで呼び、pdf-reader-mcp があればnext_actionsの例をそのままextract_tablesに渡し、無ければsaved[].pathを手元の PDF 読み取りツールに渡してlayout_noteのとおり左右 2 列の表として読みます。左右どちらが改正後かは見出し行で確かめます(v0.13.0 から。houki-nta-mcp 0.19.0 以上が前提) - 応答の
freshnessが古ければ、DB の再取得を促してから答えます - 検索結果や取得した文書に
index_status: "removed_from_index"が付いていたら、それは国税庁の索引から外れた文書です。過去の課税期間の判断では引けますが、現在の取扱いの根拠にはしません。同じ論点の現行の文書を探し直し、見つからなければ断定しません(v0.6.0 から。houki-nta-mcp 0.17.0 以上が前提)freshnessとは別のことを指します。freshnessは「最後に取得してから日が経った」、index_statusは「国税庁の索引から外れた」です。ローカル DB が新しくても印は付きます- 取得ツールの応答の
sourceが"db"なら、fetchedAtはローカル DB に取り込んだ日時です。呼び出した時刻ではないので、citation にはその値をそのまま書きます(houki-nta-mcp 0.16.0 以上)
③ citation の書式
回答の末尾に、階層ラベルを付けて出典を並べます。
## Sources
### 法律(国会制定・国民を拘束)
- 消費税法 第 57 条の 2「適格請求書発行事業者の登録」 — e-Gov の URL
### 政令 / 省令
- 消費税法施行令 第 70 条の 5
### 行政解釈(通達。税務職員を拘束、国民・裁判所は拘束しない)
- 消費税法基本通達 1-7-2「登録番号の構成」 — 国税庁の URL
### 参考情報(拘束力なし)
- タックスアンサー No.6498PDF から表を抽出して引用した場合は、どのツールでどう抽出したか(extract_tables で Markdown 化、など)を注釈として添えます。
④ error contract
family の全 MCP は、エラーを isError: true と code で返します。Skill は code ごとに LLM の行動を定めています。
| 分類 | 代表的な code | LLM が取る行動 |
|---|---|---|
| 引数の問題 | INVALID_ARGUMENT / INVALID_ARTICLE_NUM / OUT_OF_SCOPE | 引数を直して呼び直す。OUT_OF_SCOPE なら案内された MCP に切り替える |
| 見つからない | LAW_NOT_FOUND / ARTICLE_NOT_FOUND / TSUTATSU_NOT_FOUND / ABBREVIATION_NOT_FOUND | 別の名前・条番号で探す。見つからないことを利用者に伝え、推測で本文を作らない |
| ローカル DB に無い | DOC_NOT_FOUND / TSUTATSU_NOT_FOUND で next_actions が cli_bulk_download(検索ツールと、取得ツールでその種別の文書が 1 件も無いとき) | 「該当なし」と答えない。探し直さず、投入コマンドと DB のパスを利用者に伝える(v0.5.0 から) |
| docId が誤っている | 取得ツールの DOC_NOT_FOUND / TSUTATSU_NOT_FOUND に available_doc_ids が付く | 投入は案内しない。available_doc_ids から選ぶか、案内された検索ツールで docId を探し直す(v0.5.1 から。houki-nta-mcp 0.14.1 以上が前提) |
| 取得元の問題 | SOURCE_TIMEOUT / SOURCE_RATE_LIMITED / SOURCE_UNAVAILABLE / SOURCE_API_ERROR | 間を置いて再試行する。続くなら取得できなかったことを明示する |
| PDF の問題 | INVALID_PDF / ENCRYPTED_PDF / UNSUPPORTED_PDF_FEATURE | その PDF は読めなかったと申告し、本文だけで答える |
| 内部 | UNKNOWN_TOOL / INTERNAL_ERROR | 再試行せず、利用者に報告する |
同梱している文書
| ファイル | 内容 |
|---|---|
SKILL.md | 鉄則(注意喚起を回答前に行う、略称は最初に解決する、法律 → 通達 → 改正 → PDF の順で引く) |
docs/BUSINESS-LAW.md | 業法独占規定の条文と、問いの見分け方 |
docs/CITATION.md | 引用書式と、階層ラベルと legal_status の対応表 |
docs/ERROR-HANDLING.md / docs/ERROR-CODES.md | error contract の正典。各 MCP はこの語彙に合わせて実装する |
docs/ARCHITECTURE.md | family の中での Skill の位置づけ |
workflows/feasibility-check.md | 実装前に、仕様が法令のどこに触れるかを条文で確かめる手順書(v0.8.0 から) |
workflows/tax-research.md | 通達・Q&A から根拠条文へ戻る税務調査の手順書 |
examples/ | インボイス登録要件の調査例、エラーからの復帰例、領収書 PDF の保存機能の実現可能性調査(feasibility-check の実測、v0.8.1) |
次の版で予定していること
- workflow の追加: 改正追跡(
revision-tracking)。MCP の追加を待たずに書けます - examples の追加: 相続税の改正(電子帳簿保存法は v0.8.1 で追加済み)
- 労務・民事・知財の workflow は、houki-mhlw-mcp / houki-court-mcp / houki-saiketsu-mcp が揃ってから
v0.2.0(2026-09-07)では、MCP 側の更新に追随して例文の引数名を tools/list の inputSchema と一致させ、search_fulltext を法律本文の入口に加え、INVALID_ARGUMENT の対処に detail.issues[].path を明記しました。ARCHITECTURE.md の配布形態も plugin 化後の状態に更新済みです。