Story
Rule
✓Automated rule
Example
Question
Ubiquitous Language
実装リポジトリがマスタを見てテスト駆動で自動化する→
livtはマスタをMCPサーバーとして公開し、消費側はlivtのソースを読まずに仕様を取得する
✓ automated
🔗 R-01
実装リポジトリは別ディレクトリにあるマスタの場所を指定できる
✓ automated
🔗 R-02
各レスポンス(ツール・リソース)はマスタのバージョン(gitリビジョン)を返し、仕様のズレを防ぐ
✓ automated
🔗 R-03
実装リポジトリはストーリー単位で実例マッピングをリソースとして取得できる
✓ automated
🔗 R-04
実装リポジトリはルール単位で仕様をリソースとして取得できる
✓ automated
🔗 R-05
実装リポジトリは利用可能なストーリーの一覧を取得できる
✓ automated
🔗 R-06
消費側は stdio で livt mcp をサブプロセスとして起動し、消費者ごとに1対1で接続する
✓ automated
🔗 R-07
消費側は常駐する1つの livt mcp --http サーバーをURL参照で共有する
✓ automated
🔗 R-08
実装リポジトリはストーリーマップをリソースとして取得できる
✓ automated
🔗 R-09
実装リポジトリはストーリー本文をリソースとして取得できる
✓ automated
🔗 R-10
実装リポジトリはユビキタス言語の用語をリソースとして取得できる
✓ automated
🔗 R-11
公開対象の一覧はツールとリソーステンプレートで提供し、concrete resources と変更通知には広げない
✓ automated
🔗 R-12
Questions
livt mcp コマンドでstdioのMCPサーバーが起動する
消費側エージェントはツール/リソース経由で実例マッピング・ルールを取得する
環境変数 LIVT_ROOT でマスタのルートディレクトリを指定する
CLI引数 --root が環境変数より優先される
いずれも未指定ならカレントディレクトリをルートとする
出力に spec_version としてマスタのgit HEAD(rev-parse --short の短縮リビジョン)が含まれる
マスタがgitリポジトリでない場合 spec_version は空になる
resources/templates/list に livt://mapping/{story_key} が現れる
resources/read livt://mapping/{story_key} でルール・実例・質問を取得する
各ルールは自分のリソースURI(livt://mapping/{story_key}/rule/{rule_id})を持つ
resources/read livt://mapping/{story_key}/rule/{rule_id} で単一ルールと実例を取得する
存在しないキーやルールIDのURIは not found を返す
list_stories で全ストーリーのキーと名前を取得する
各エントリは実例マッピングがあれば、そのリソースURI(livt://mapping/{key})を示す
クライアントが livt mcp をサブプロセスとして spawn し、標準入出力で接続する
マスタの場所は --root / LIVT_ROOT で指す(消費側に別チェックアウトが要る)
1消費者につき1プロセスで、サーバーは共有しない
マスタ側で livt mcp --http localhost:5488 を常駐起動する
複数リポジトリが http://localhost:5488/mcp を共有参照し、per-repo の LIVT_ROOT は不要
ステートレス・読み取り専用なので1プロセスで複数クライアントを捌く
list_story_maps で全ストーリーマップの名前とリソースURI(livt://story-map/{map_name})を取得する
resources/read livt://story-map/{map_name} でアクティビティ・ステップ・ストーリーカード・リリースを取得する
マップ名はビルド出力(story-map/{name}.html)と同じ表示名で、URI上はパーセントエンコードして表す
存在しないマップ名は not found を返す
resources/read livt://story/{story_key} でストーリーの名前・本文・frontmatterメタ(例 issue)を取得する
list_stories の各エントリとストーリーマップ内のストーリーカードは、ストーリーのリソースURI(livt://story/{story_key})を示す
実例マッピングがあるストーリーは、そのリソースURI(livt://mapping/{story_key})も示す
存在しないストーリーキーは not found を返す
resources/read livt://ubiquitous/{term_key} で用語の名前と定義本文を取得する
実例マッピング・ストーリーマップのレスポンスは ubiquitous の各用語キーに解決済みの名前とリソースURIを添える(既存の ubiquitous フィールドはそのまま維持する)
用語ファイルがないキーはURIなしでキーのみを示す
存在しない用語キーは not found を返す
resources/templates/list に全リソーステンプレート(mapping・rule・story-map・story・ubiquitous)が現れる
resources/list への concrete resources 掲載や subscribe は提供せず、毎リクエスト読みのステートレスを保つ
消費側はマスタの更新を spec_version の変化で検知する
ネットワーク(非ローカル)公開する場合の認証・公開モデルをどうするか(現状はローカル利用前提で認証なし)