Handoff MCP v0.36–0.37 — 要件は書いた。で、どこまでテストした?
要件・設計・テストの対応関係を Markdown 上で追跡する V-model トレーサビリティを導入しました。普段の Markdown に見出し ID とメタデータを足すだけで、カバレッジ分析・変更影響検出・suspect 自動通知まで動きます。
Handoff MCP v0.36 と v0.37 をリリースしました。V-model 要件トレーサビリティ——要件からテストまでの対応関係を機械的に追いかける仕組みが入っています。
要件を書いただけでは何も守れない
「要件は仕様書に書いてある」。それ自体は間違っていません。ただ、書いた要件がコードのどこに反映されていて、どのテストで検証されていて、仕様を変えたらどこに波及するか——ここまで把握し続けるのは、手作業ではまず無理です。
AI エージェントに実装を任せている場合、この問題はさらに深刻です。エージェントは振られたタスクを実装しますが、それがどの要件に対応していて関連テストが全部通っているかまでは管理しません。追跡の仕組みがなければ、何がテスト済みで何が漏れているか分からなくなります。
普通の Markdown がそのままトレーサビリティになる
v0.37 で入ったレイヤードキュメントは、いつもの Markdown に V-model の構造を載せる仕組みです。handoff_doc_save に layer(requirement・basic_spec・detailed_spec・acceptance・system_test・unit_test)を指定すると、見出しが個別の追跡項目になります。
## REQ-AUTH-001 ログイン試行回数の制限
- priority: P0
- method: automated
5回連続で認証に失敗したアカウントを30分間ロックする。
受入基準:
- 5回失敗後にロックされること
- 30分後に解除されること
- 成功でカウンタがリセットされること
特別なフォーマットではありません。見出しに REQ-・SPEC-・AT- などの ID を付け、priority や method といった属性行を添えるだけ。受入基準は gwt(Given-When-Then)・ears・text に自動分類され、それぞれが独立した検証対象になります。
レイヤー間の紐付けは refines(上位を詳細化)と verifies(左辺を検証)で書きます。特定の受入基準だけを狙うなら verifies: REQ-AUTH-001#AC1 のように指定できます。
カバレッジが数字で見える
handoff_trace_report を叩けば、全レイヤーを横断したカバレッジが出ます。
- 水平カバレッジ — その要件に検証項目が紐付いているか
- 垂直カバレッジ — 上位要件が下位仕様にちゃんと展開されているか
状態は covered・partial・uncovered・waived・na の5段階。受入基準の一部だけ検証済みなら partial として正直に報告されます。
変えたら即バレる:suspect と影響分析
要件を書き換えたとき、下流で何が壊れるか。これを自動で検出するのが suspect です。
- リンク suspect —
refines/verifies先の定義が変わった - タスク suspect — 紐付いた要件の中身が変わった
- 結果 suspect — テスト記録時と今で定義が食い違っている
ドキュメントを保存した時点で suspect_introduced がレスポンスに含まれるので、影響範囲はその場で分かります。
まだ保存していない段階でも handoff_trace_impact で「もしこう変えたら何に響くか」を事前に確認できます。ファイル変更・git diff・個別項目の書き換え案、どこからでも起動可能です。
タスクと要件が双方向でつながる
handoff_update_task(requirement_ids=[...]) でタスクと要件を双方向リンク。タスクが完了すれば、紐付いた要件の development stage も自動で implemented に進みます。v0.37 では implements(実装)と executes(テスト実行)のロール区別も入りました。
プロジェクトごとにレイヤーを自在に定義
ビルトイン6レイヤーで足りなければ、config.toml の [[trace.layer]] で独自レイヤーを追加できます。プロファイル(minimal・standard・full・bugfix・カスタム)で使うレイヤーの組み合わせを選び、ドキュメント単位で上書きすることも可能です。
新ツール一覧(v0.36–v0.37)
| ツール | 用途 |
|---|---|
trace_record | 検証結果(pass/fail/blocked)の記録 |
trace_report | カバレッジ&ギャップレポート |
trace_slice | タスク/項目の近傍ビュー |
trace_history | 項目の実行履歴 |
trace_ingest | cargo/JUnit XML テスト結果の一括取り込み |
trace_scaffold | 受入基準→検証項目の自動生成 |
trace_suspect | suspect の一覧・クリア・ベースライン |
trace_impact | 変更の事前影響分析 |
trace_propose | 重複チェック+テンプレート提案 |
trace_lint | 構造ギャップ・ドリフトの lint |
trace_matrix | CSV/Markdown テーブルエクスポート |
trace_update | 5種類の変更を一括適用 |
trace_tasks | 未リンク項目→タスク自動生成 |
trace_next | 「次にやるべきこと」のランク付き提案 |
doc_req_status | 要件の進捗集計 |
doc_req_list | 要件のフィルタ・ソート |
doc_req_import | Markdown→要件ツリー構築 |
doc_req_scan | ソースからコード/テスト参照を提案 |
doc_req_impact | ファイル変更→影響要件の特定 |
インストール・アップデート
npx handoff-mcp-server@latest
Claude Code のプラグインとして使っている場合:
/plugin install alphaelements/handoff-mcp

