機能仕様書 / PRD ジェネレーター
⚠️ 最重要ルール: ドメインごとにファイルを分割する
機能仕様書は必ず複数ファイルに分割して出力すること。
機能の「ドメイン(関心領域)」ごとに {domain}-spec.md を1ファイルずつ作成する。
ドメインの種類に応じてフロントエンド / バックエンド / テーブル の専用テンプレートを使い分ける。
出力例(ECサイト 商品管理機能の場合):
code
docs/product-management/ ├── index.md # 概要・背景・スコープ・ユーザーストーリー・処理フロー・仕様書一覧 ├── product-list-spec.md # [FE] 商品一覧画面・検索・フィルタ・ソート・ページネーション ├── product-detail-spec.md # [FE] 商品詳細画面・画像表示・レビュー表示 ├── product-form-spec.md # [FE] 商品登録/編集フォーム・バリデーション・画像アップロード ├── product-api-spec.md # [BE] 商品CRUD API・検索API・画像アップロードAPI ├── image-api-spec.md # [BE] 画像処理・リサイズ・S3連携 ├── products-table-spec.md # [DB] productsテーブル・categories・product_images └── technical-spec.md # [BE] 技術スタック・モジュール構成・エラーハンドリング・制限事項
禁止事項: 全てを1ファイルにまとめて出力してはならない。 必須事項: Write ツールを使い、ファイルごとに個別に書き出すこと。
テンプレート
ドメインの種類に応じて使い分ける:
| テンプレート | パス | 使い分け |
|---|---|---|
| エントリーポイント | assets/templates/index.md | 機能ごとに1つ |
| フロントエンド仕様 | assets/templates/frontend-spec.md | 画面・UI・ユーザー操作・フォーム・状態管理 |
| バックエンド仕様 | assets/templates/backend-spec.md | API・ビジネスロジック・認証・バッチ処理・外部連携 |
| テーブル仕様 | assets/templates/table-spec.md | DBスキーマ・制約・インデックス・リレーション・マイグレーション |
| PRD | assets/templates/prd.md | プロダクト要件定義書(単一ファイル) |
ドメイン分割の考え方
- •独立して読める単位にする(1ファイルで1つの関心が完結)
- •1ファイルが長くなりすぎないようにする(目安: 100〜300行)
- •ドメインがフロント/バック/テーブルのどれに属するかでテンプレートを選ぶ
- •横断的な技術仕様は
technical-spec.md(バックエンドテンプレート)にまとめる - •テンプレートの全セクションを使う必要はない。不要なセクションは削除、必要なセクションは自由に追加してよい
ワークフロー
code
1. ドキュメント形式を判定(機能仕様書 or PRD)
↓
2. ヒアリング(バッチ質問)
↓
3. ドメインを特定し、ファイル構成を確定
↓
4. ファイル構成をユーザーに提示して確認
↓
5. Write ツールで index.md を書き出し
↓
6. Write ツールで各 {domain}-spec.md を1ファイルずつ書き出し
↓
7. 最終ディレクトリ構成を表示
Step 1: 形式の判定
- •「機能仕様書」「画面仕様」「実装仕様」 → 機能仕様書
- •「PRD」「プロダクト要件」「要件定義書」 → PRD
- •曖昧な場合 → AskUserQuestion で確認
PRDの場合: ヒアリング → assets/templates/prd.md を元に生成 → Writeで書き出し。
Step 2: ヒアリング
references/hearing-patterns.md を読み、バッチ形式で質問する。
ルール:
- •1回のバッチで1〜4問を AskUserQuestion で質問
- •ユーザーが既に回答済みの質問はスキップ
- •ユーザーの言語に合わせる
Step 3: ドメイン特定とファイル構成の確認
ヒアリング完了後、ファイルを書き出す前に:
- •機能のドメイン(関心領域)を特定する
- •各ドメインに
{domain}-spec.mdのファイル名と使用テンプレート(FE/BE/DB)を割り当てる - •ファイル構成をユーザーに提示して確認する
提示フォーマット:
code
以下のファイル構成で仕様書を生成します:
docs/{feature-name}/
├── index.md # 概要・背景・スコープ・処理フロー
├── {domain-a}-spec.md # [FE] {内容}
├── {domain-b}-spec.md # [BE] {内容}
└── {domain-c}-table-spec.md # [DB] {内容}
この構成でよろしいですか?
Step 4: ファイル書き出し
各ファイルを Write ツールで個別に書き出す。
4.1 index.md を書き出す
- •
assets/templates/index.mdを Read ツールで読む - •ヒアリング結果でテンプレートを埋める
- •「仕様書一覧」に全
{domain}-spec.mdへのリンクを記載 - •Write ツールで 書き出す
4.2 各 {domain}-spec.md を書き出す
ドメインごとに繰り返す:
- •そのドメインに対応するテンプレート(frontend-spec / backend-spec / table-spec)を Read ツールで読む(テンプレート種別ごとに初回のみ)
- •ヒアリング結果でテンプレートを埋める
- •不要なセクションは削除、ドメイン固有のセクションは追加
- •関連する他の
{domain}-spec.mdへの相対リンクを設定 - •Write ツールで 書き出す
- •次のドメインへ
Step 5: 完了報告
全ファイル書き出し後、最終的なディレクトリ構成を表示する。
出力先
デフォルト出力先: docs/
カスタム出力: ユーザーが指定した場合はそのパスを使用。
PRD: docs/prd-{name}.md