APD Phase 1: Spec — 仕様書の生成
APDフレームワークにおけるSpecフェーズの担当エージェントとして、Design文書からSpec(詳細仕様書)を生成する。
Phase 1は「人間の時間」であり、AIがドラフトを生成し、人間がサマリーと確認依頼箇所だけレビューする。
事前準備
以下のファイルを読み込む:
- •CLAUDE.md — プロジェクト設定(デフォルトスペックフォーマット、エスカレーションポリシー等)を確認
- •
design/product-design.yaml— Design文書を読み込む - •
specs/*.yaml— 既存Specがあれば読み込む - •
decisions/*.yaml— 既存Decision Recordsがあれば読み込む - •アクティブサイクル —
cycles/の最新ファイルを読み込み、トリガー種別を確認
モード判定
ユーザーの指示またはサイクル定義のトリガー種別から、実行モードを判定する:
- •full — 初回フルSpec生成(
new_productトリガー時) - •add — 機能追加Spec(
feature_additionトリガー時) - •bugfix — バグ修正Amendment(
bug_fixトリガー時)
不明な場合はユーザーに確認する。
モード: full(初回フルSpec生成)
生成ルール
- •Design文書の What セクションに記載された全機能について Spec を作成する
- •What Not に含まれるものは絶対に Spec に入れない
- •各Specは以下を含む:
- •
spec_id: コンテキスト略称 + 連番(例: OM-001) - •ユーザーストーリー(誰が・何を・なぜ)
- •受け入れ条件(Given/When/Then形式)
- •UI記述またはモック指示(該当する場合)
- •コンテキスト境界の定義(inputs / outputs / dependencies)
- •
- •コンテキスト間のデータフローを特定し、
specs/_cross-context-scenarios.yamlとしてまとめる - •判断が必要だった箇所は Decision Record のドラフトを作成する
出力
- •Specファイル群 —
specs/ディレクトリにYAML形式で書き出す - •Exit Criteriaチェックリスト(下記参照)
- •確認依頼リスト(下記参照)
- •Decision Recordドラフト — 判断が発生した場合、
decisions/D-{NNN}.yamlに書き出す
モード: add(機能追加Spec)
追加ルール
- •既存Specとの整合性を確認し、矛盾があれば報告する
- •新規Specは新ファイルとして作成する(既存ファイルは上書きしない — Immutable原則)
- •既存Specの修正が必要な場合は Amendment として作成する(
specs/{context}.v{N}.A-{NNN}.yaml) - •コンテキスト間データフローに影響がある場合、
_cross-context-scenarios.yamlのAmendmentも作成する
出力
fullモードの出力に加え:
- •既存Specへの影響分析
- •Amendment が必要な既存Specのリスト
モード: bugfix(バグ修正Amendment)
トリアージ
まず原因を判定する:
- •Spec起因(仕様漏れ・曖昧さ)→ Spec Amendment を作成
- •Execute起因(実装がSpecと合っていない)→ 「Execute起因です。実装修正のみで対応可能です。
/apd-executeで修正してください」と報告
Spec起因の場合の出力
- •Amendment YAML —
specs/{context}.v{N}.A-{NNN}.yaml - •影響を受ける他のSpecの分析
- •Decision Recordドラフト(仕様判断が必要な場合)
共通出力: Exit Criteriaチェックリスト
以下の充足状況を表形式でサマリーする:
| Exit Criteria | 状態 | 備考 |
|---|---|---|
| 全機能にスペックが存在する | ✅/⚠️/❌ | |
| 各スペックにユーザーストーリーがある | ✅/⚠️/❌ | |
| 各スペックに受け入れ条件がある | ✅/⚠️/❌ | |
| 各スペックにUI記述がある(該当時) | ✅/⚠️/❌ | |
| コンテキスト境界が定義されている | ✅/⚠️/❌ | |
| コンテキスト間データフローが特定されている | ✅/⚠️/❌ | |
| Decision Recordが作成されている(判断発生時) | ✅/⚠️/❌ |
共通出力: 確認依頼リスト
推論で埋めた箇所、自信がない箇所を明示する:
code
## 確認が必要な箇所 1. [spec_id] [箇所]: [推論内容] ← 確認してください 2. ...
Human Checkpoint 1
Specが完成したら、以下のチェックリストを提示する:
- • Exit Criteriaチェックリストが全て ✅ になっているか
- • 確認依頼リストの各項目について判断を返したか
- • Decision Recordの各判断について decision と reason を記入したか
- • What Not に含まれるものがSpecに紛れ込んでいないか
承認されたら「/apd-contract を実行してPhase 2に進んでください(ここから先、人間は基本介入しません)」と案内する。
修正が必要な場合はフィードバックを受けてドラフトを更新する。