description: アイデアを整理して実現可能なPRDを作成する
allowed-tools: Read, Glob, Grep, Task, Bash, WebSearch, WebFetch, AskUserQuestion
argument-hint: "[機能やアイデアの概要(任意)]"
曖昧なアイデアや要望を対話を通じて整理し、実現可能なPRD(Product Requirements Document)を作成します。コードベースの調査、技術検証、要件の具体化を段階的に進めます。
出力ディレクトリ=".dcs" カレントディレクトリ={{プロジェクトルート}} セッションファイルリスト=[] イテレーション回数=0 最大イテレーション=10
- $1 がある場合、初期アイデアとして記録する
- $1 がない場合、ユーザーに「どのような機能やアイデアについて相談したいですか?」と尋ねる
- AskUserQuestion ツールを使って初期ヒアリングを実施し、context を更新する
- 収集した context の内容をユーザーに宣言する
- step2 を実行する
- 既存の出力ファイルを確認して、重複しないナンバリングを決定する
- {{出力ディレクトリ}}/{{timestamp}}_* を検索
- 今回の内容を簡単に英語化したもの(例: "order_export", "payment_integration")を作成
- 同じ timestamp と内容で既存ディレクトリがある場合、末尾の連番を +1 する
- ベースディレクトリを "{{出力ディレクトリ}}/{{timestamp}}_{{内容の英語化}}" とする
- 例: ".dcs/20251025123456_order_export"
- セッションファイルのリストを準備する
- インデックスファイル: "{{ベースディレクトリ}}/index.md"
- 会話履歴ファイル: "{{ベースディレクトリ}}/conversation.md"
- コンテキストファイル: "{{ベースディレクトリ}}/context.md"
- 調査結果ファイル: "{{ベースディレクトリ}}/research.md"
- PRDファイル: "{{ベースディレクトリ}}/prd.md"
- すべてのファイル名を セッションファイルリスト に追加する
- インデックスファイルを作成し、セッション情報を記録する
- step3 を実行する
- イテレーション回数を +1 する
- 現在の理解状況をユーザーに確認する
- これまでの整理内容を簡潔にまとめる
- 不明点や確認したい点をリストアップする
- ユーザーからの追加情報や質問への回答を受け取る
- 必要に応じて以下を実施する:
- **コードベース調査**: Task ツールで関連コードを検索・分析
- **技術調査**: WebSearch/WebFetch で技術情報を収集
- **既存機能確認**: Read/Grep で既存実装を確認
- 新しい情報を context に統合し、整理する
- 会話履歴ファイルとコンテキストファイルを更新する
- 調査を実施した場合は調査結果ファイルを更新する
- 次のアクションを判断する ルール に基づいて判断し、該当するステップに進む
- <prd_template> の内容を使って、Task ツールで PRD ファイルを作成する
- subagent_type: "general-purpose"
- description: "PRD(Product Requirements Document)の作成"
- prompt: PRD テンプレートの内容を context で埋めた完全なプロンプト
- PRD ファイル名: "{{ベースディレクトリ}}/prd.md"
- インデックスファイルを最終更新する
- 全てのセッションファイルのパスを整理して表示する
- インデックスファイル
- 会話履歴ファイル
- コンテキストファイル
- 調査結果ファイル(該当する場合)
- PRDファイル
- セッション完了をユーザーに報告する
- ユーザーに次のアクションを提案する
- PRDの内容を実装に進めるか
- さらに詳細化が必要か
- 影響範囲分析を実施するか
AskUserQuestion ツールを使って、以下の質問を実施する:
- **質問**: このアイデアはどのカテゴリに該当しますか?
- **header**: "カテゴリ"
- **multiSelect**: false
- **options**:
- "新機能の追加" - 全く新しい機能を追加したい
- "既存機能の改善" - 既存の機能を改善・拡張したい
- "技術的な改善" - パフォーマンス、アーキテクチャなどの技術的改善
- "バグ修正・問題解決" - 既知の問題を解決したい
- **質問**: この機能の優先度はどの程度ですか?
- **header**: "優先度"
- **multiSelect**: false
- **options**:
- "高 - すぐに必要" - ビジネスクリティカル、早急に必要
- "中 - 近い将来必要" - 重要だが少し時間的余裕がある
- "低 - あると良い" - Nice to have、時間があれば実装したい
- "調査中 - まだ決まっていない" - 優先度を判断するために相談したい
- **質問**: この機能に関連する技術やコードベースについて、どの程度理解していますか?
- **header**: "理解度"
- **multiSelect**: false
- **options**:
- "詳しく理解している" - 技術スタックやコードベースを把握している
- "ある程度理解している" - 概要は理解しているが詳細は不明
- "あまり理解していない" - 技術的な詳細はよくわからない
- "全く理解していない" - 一から教えてほしい
contextとして以下を保持する:
- アイデアの概要
- カテゴリ
- 優先度
- 理解度
- 関連する既存機能(判明している場合)
- 技術的制約(判明している場合)
各イテレーションの終わりに、以下の基準で次のアクションを判断する:
- ユーザーのアイデアがまだ曖昧で具体化が必要
- 追加の技術調査や検証が必要
- 既存コードベースとの統合方法が不明確
- ユーザーからの追加情報待ち
- イテレーション回数が最大イテレーション未満
- アイデアが十分に具体化されている
- 技術的な実現可能性が確認されている
- 要件が明確に定義されている
- ユーザーが PRD 作成に合意している
- イテレーション回数が最大イテレーションに達した
- ユーザーが明示的にセッション終了を希望した
- yyyyMMddHHmmss 形式(例: 20251025123456)
- アイデアを簡潔な英語に変換する
- スネークケース(snake_case)を使用
- 最大30文字程度に収める
- 例:
- "注文履歴のエクスポート機能" → "order_export"
- "決済方法の追加" → "payment_integration"
- "パフォーマンス改善" → "performance_improvement"
- "CSVインポート" → "csv_import"
- `index.md` - セッション全体のインデックス
- `conversation.md` - 会話履歴の記録
- `context.md` - 整理されたコンテキスト情報
- `research.md` - 技術調査・コード調査の結果
- `prd.md` - 最終的なPRD
- `.dcs/20251025123456_order_export/index.md`
- `.dcs/20251025123456_order_export/conversation.md`
- `.dcs/20251025123456_order_export/context.md`
- `.dcs/20251025123456_order_export/research.md`
- `.dcs/20251025123456_order_export/prd.md`
- **カレントディレクトリを基準とした相対パスを使用する**
- フルパス(絶対パス)は記載しない
- 例:
- ❌ `/Users/makotan/projects/ensemble-si/backend/src/main/kotlin/si/ensemble/api/`
- ✅ `backend/src/main/kotlin/si/ensemble/api/`
- オープンエンドな質問から始める
- 具体的な選択肢を提示して絞り込む
- 技術的な詳細は段階的に深掘りする
- ユーザーの理解度に合わせた説明をする
- 5W1H(Who, What, When, Where, Why, How)を意識する
- ユーザーストーリー形式で要件を整理する
- 技術的な実現方法と要件を分けて考える
- 優先順位をつけて整理する
- コードベースの既存機能を確認する必要がある時
- 技術的な実現可能性を検証する必要がある時
- 類似機能の実装例を探す時
- 外部ライブラリやAPIの情報が必要な時
- 複雑なコードベース調査は Task で実施する
- 会話が長くなりコンテキストが複雑になってきたら Task を使う
- 調査結果は必ずファイルに保存する
1. 現状の理解を整理して提示 2. 不明点や確認事項を質問 3. 必要な調査を実施 4. 新しい情報を統合 5. ファイルを更新 6. 次のアクションを判断
- イテレーション情報を会話履歴ファイルに記録する
- 最大イテレーション(10回)に達したら、現状をまとめて PRD 作成を提案する
# ラバーダックセッション - インデックス
**開始日時**: {{開始日時}}
**最終更新**: {{最終更新日時}}
**ファシリテーター**: Claude Code
---
## セッション概要
### アイデア
{{アイデアの概要}}
### カテゴリ
{{カテゴリ}}
### 優先度
{{優先度}}
### 現在のステータス
- **イテレーション**: {{現在のイテレーション}}/{{最大イテレーション}}
- **フェーズ**: 対話中 / PRD作成完了
- **進捗**: {{進捗状況の簡単な説明}}
---
## セッションファイル一覧
- [会話履歴](./conversation.md) - 全ての対話記録
- [整理されたコンテキスト](./context.md) - 要件と技術情報の整理
- [調査結果](./research.md) - 技術調査・コード調査の結果
- [PRD](./prd.md) - 最終的なProduct Requirements Document
---
## クイックサマリー
### 主要な要件
1. {{要件1}}
2. {{要件2}}
3. {{要件3}}
### 技術的な考慮事項
- {{考慮事項1}}
- {{考慮事項2}}
### 次のステップ
- {{次にやるべきこと}}
---
*セッションの詳細は各ファイルを参照してください。*# ラバーダックセッション - 会話履歴
**開始日時**: {{開始日時}}
**最終更新**: {{最終更新日時}}
[← インデックスに戻る](./index.md)
---
## イテレーション 1
**日時**: {{日時}}
### ユーザー
{{ユーザーの発言}}
### Claude
{{Claudeの応答}}
### アクション
- {{実施したアクション1}}
- {{実施したアクション2}}
---
## イテレーション 2
(同様の形式で記録)
---
*会話は時系列順に記録されています。*# ラバーダックセッション - コンテキスト
**最終更新**: {{最終更新日時}}
[← インデックスに戻る](./index.md)
---
## アイデアの概要
{{アイデアの詳細な説明}}
---
## ユーザーストーリー
### As a {{ユーザー種別}}
I want to {{やりたいこと}}
So that {{目的・理由