--- argument-hint: <タスク名> description: 機能要件と非機能要件の詳細仕様を作成 allowed-tools: ["Read", "Write", "Task", "AskUserQuestion"] --- # 詳細要件仕様書を作成します タスクの機能要件と非機能要件を詳細化し、`specification.md` を生成します。 【対象タスク名】 $ARGUMENTS ## 実行手順 ### 0. ステアリングドキュメントの読み込み 以下のステアリングドキュメントを読み込み、プロジェクトのコンテキストを把握: - `specs/_steering/product.md` - プロダクト方針、ビジネス目標 - `specs/_steering/tech.md` - 技術標準 - `specs/_steering/structure.md` - プロジェクト構造 **ステアリングドキュメントが存在しない場合**: - 警告メッセージを表示: 「⚠️ ステアリングドキュメントが見つかりません。先に `/sdd:steering` を実行することを推奨します。」 ### 1. タスクディレクトリの確認 タスク名が指定されている場合: - `specs/[taskname]/` ディレクトリの存在を確認 - `specs/[taskname]/overview.md` が存在するか確認 タスク名が指定されていない場合: - `specs/` ディレクトリ内の利用可能なタスクをリスト表示 - **AskUserQuestionツールを使用**してどのタスクについて作業するかユーザーに選択を求める ### 2. 既存ドキュメントの読み込み 以下のドキュメントを読み込み、要件定義に必要な情報を抽出: - `specs/[taskname]/overview.md` - プロジェクト概要、主要機能 - `specs/_steering/product.md` - プロダクトの Non-Goals、Business Objectives - `specs/_steering/tech.md` - 技術的制約 ### 3. 非機能要件の確認 以下の非機能要件について、ユーザーに必要かどうかを確認してください: **AskUserQuestionツールを使用**して、以下を確認: ``` 以下の非機能要件について、このタスクで必要なものを選択してください(複数選択可): □ パフォーマンス要件(レスポンスタイム、同時接続数、データ処理量など) □ 可用性要件(稼働率目標、ダウンタイム許容範囲、障害復旧時間など) □ 保守性要件(コード品質基準、ドキュメント要件、技術的負債の管理など) □ ユーザビリティ要件(UI/UX要件、アクセシビリティ、多言語対応など) □ 制約条件(技術的制約、ビジネス的制約、法的・規制上の制約など) □ テスト戦略(テストの種類、カバレッジ目標など) □ 開発環境(必要なツール、セットアップ手順など) 注: セキュリティ要件は常に含まれます ``` ### 4. specification.mdの生成 `specs/[taskname]/specification.md` を生成: ```markdown # 詳細仕様書 ## 機能要件 [overview.mdの主要機能を詳細化] ### 機能1: [機能名] - **概要**: [1-2行で機能を説明] - **優先度**: High/Medium/Low - **実装Phase**: Phase N(plan-phasesで決定後に追加) - **入出力定義**: - **入力**: - パラメータ名: 型、説明 - パラメータ名: 型、説明 - **出力**: - レスポンス形式 - 成功時の戻り値 - エラー時の戻り値 - **制約・注意事項**(必要な場合のみ): - [制約事項や注意点] ### 機能2: [機能名] ... ## 非機能要件 ### セキュリティ(必須) - **認証・認可要件**: [steering/tech.mdから関連する標準を参照] - **データ暗号化**: [要件] - **監査ログ**: [要件] - **セキュリティ標準**: [steering/tech.mdのセキュリティ要件を参照] [ユーザーが選択した非機能要件のみ以下に含める] ### パフォーマンス(選択時のみ) - **レスポンスタイム要件**: [具体的な数値] - **同時接続数**: [具体的な数値] - **データ処理量**: [具体的な数値] - **スループット目標**: [具体的な数値] ### 可用性(選択時のみ) - **稼働率目標**: [例: 99.9%] - **ダウンタイム許容範囲**: [例: 月間43分以内] - **障害復旧時間**: [RTO/RPO] - **監視要件**: [監視項目] ### 保守性(選択時のみ) - **コード品質基準**: [steering/tech.mdの品質標準を参照] - **ドキュメント要件**: [要求されるドキュメント] - **技術的負債の管理**: [方針] - **リファクタリング方針**: [方針] ### ユーザビリティ(選択時のみ) - **UI/UX要件**: [要件] - **アクセシビリティ**: [WCAG準拠レベルなど] - **多言語対応**: [対応言語] - **レスポンシブデザイン**: [対応デバイス] ## データ要件 ### データモデル概要 [主要なデータエンティティとその関係] ### データ保持期間 [データ種別ごとの保持期間] ### データ移行要件 [既存データからの移行が必要な場合] ## インターフェース要件 ### 外部システム連携 [連携する外部システム] ### API仕様概要 [APIの概要、詳細はtechnical-details.mdで定義] ### データフォーマット [JSON, XML, CSVなど] ## 制約条件(選択時のみ) ### 技術的制約 [steering/tech.mdから関連する制約を参照] ### ビジネス的制約 [steering/product.mdから関連する制約を参照] ### 法的・規制上の制約 [GDPR, 個人情報保護法など] ``` **生成時の注意点**: - **⚠️ 重要**: 詳細であれば詳細であるほど良いわけではない。必要な部分だけを必要なだけ書くこと - **⚠️ 重要**: 推測される開発期間、工数、見積もり時間などは一切記載しないこと - **⚠️ 重要**: 「将来的に必要になる」「今後〜が必要」といった適当な推測に基づいた記述は禁止 - 不明なところは勝手に決めずに「**不明**」と明記し、複数の案(案A、案B、案Cなど)を記述すること - ステアリングドキュメントの情報を積極的に参照・活用すること - 実装Phase番号は空欄にする(plan-phasesで決定後に追加) ### 5. 完了報告 ``` ✅ 詳細要件仕様書を作成しました ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📍 作成先: specs/[taskname]/specification.md 📝 機能要件: [N]件 💡 次のアクション: - 技術詳細化: `/sdd:define-technical [taskname]` - 不明点の明確化: `/sdd:clarify-spec [taskname]` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ## 注意事項 - **⚠️ 重要**: ステアリングドキュメントを必ず参照し、プロジェクトの方針や標準に準拠すること - 不明なところは勝手に決めずに「**不明**」と明記すること - ユーザーが選択しなかった非機能要件セクションは含めないこと - specification.mdは機能要件の詳細を記述する場所(技術実装の詳細はtechnical-details.mdで記述) ## 内部品質チェック **重要**: 以下のチェックはコマンド内部で実施し、**生成されるspecファイルには結果を記載しません**。 ### ステアリングドキュメントレビュー(内部処理) ドキュメント生成後、内部的にステアリングドキュメントとの整合性を確認: - product.mdのビジネス目標・ターゲットユーザーとの整合性 - tech.mdのセキュリティ要件との整合性 - structure.mdのプロジェクト構造との整合性 問題がある場合のみユーザーに修正を促す。準拠している場合は何も出力しない。 ### 矛盾チェック(内部処理) ドキュメント生成後、内部的に仕様書間の矛盾を確認: - overview.mdとspecification.mdの機能定義の整合性 - データ要件と機能要件の整合性 矛盾がある場合のみユーザーに警告を表示。問題がなければ何も出力しない。