--- argument-hint: [phase.task] allowed-tools: ["Read", "Write", "Edit", "Bash", "Task", "AskUserQuestion", "TodoWrite"] --- # specs/[taskname]/配下の仕様書ドキュメントを読み込み、それに基づいて実装作業を行います 以下の引数で指定されたタスクについて、仕様書に基づいた実装作業を行ってください。 【引数】 $ARGUMENTS ## 引数の形式 - `[taskname]` - タスク名のみ指定した場合、そのタスクの最初から作業開始 - `[taskname] [phase].[task]` - Phase番号とタスク番号を指定した場合、そのタスクから作業開始 - 例: `user-authentication 2.3` → user-authenticationのphase2のタスク3から開始 ## 実行手順 ### 0. TodoWriteで実装ステップをTodoリストに追加 コマンド実行時、最初に以下の4つのステップをTodoWriteツールでTodoリストに追加: ``` TodoWrite([ { content: "タスクとPhaseの特定", activeForm: "タスクとPhaseを特定中", status: "in_progress" }, { content: "ステアリングドキュメントと仕様書の読み込み", activeForm: "ステアリングドキュメントと仕様書を読み込み中", status: "pending" }, { content: "Phase状況の確認", activeForm: "Phase状況を確認中", status: "pending" }, { content: "実装作業の実行", activeForm: "実装作業を実行中", status: "pending" } ]) ``` その後、以下のステップを順番に実行し、各ステップ完了時にTodoの状態を更新: ### 1. タスクとPhase/タスクの特定 上記の引数を解析して作業対象を特定: 1. **引数が指定されている場合** - `[taskname]`のみ: specs/[taskname]/を対象とし、Phase 1から開始 - `[taskname] [phase].[task]`: specs/[taskname]/を対象とし、指定されたPhaseとタスクから開始 2. **引数が指定されていない場合** - `specs/`ディレクトリ内のサブディレクトリを一覧表示 - 複数のタスクがある場合、ユーザーに選択させる: 「どのタスクで作業しますか?」 - [1] specs/user-authentication/ - [2] specs/payment-integration/ - [3] specs/admin-dashboard/ - 単一のタスクのみの場合は自動選択 3. **指定されたタスクディレクトリが存在しない場合** - エラーメッセージを表示: 「specs/[taskname]/ ディレクトリが見つかりません」 - specs/配下の利用可能なタスクを一覧表示 ### 2. ステアリングドキュメントの読み込み プロジェクト全体のコンテキストを把握するため、以下のステアリングドキュメントを読み込みます: **`specs/_steering/product.md`**: - プロダクトの目的とビジョン - ターゲットユーザー - 主要機能とビジネス目標 **`specs/_steering/tech.md`**: - 技術スタックとアーキテクチャ - 開発標準(型安全性、コード品質、テスト戦略) - 重要な技術的決定事項 **`specs/_steering/structure.md`**: - プロジェクト構造と命名規則 - コード組織原則 - モジュール境界 **`specs/_steering/principles.md`**: - 開発原則 **ステアリングドキュメントが存在しない場合**: - 警告メッセージを表示: 「⚠️ ステアリングドキュメントが見つかりません。プロジェクト固有のコンテキストなしで進めます。」 - `/sdd:steering` コマンドでステアリングドキュメントを作成することを推奨 - 処理は続行(ステアリングドキュメントは必須ではない) ### 3. 仕様書の確認 選択されたタスクディレクトリ(specs/[taskname]/)から以下のファイルを読み込んで内容を把握: 1. **specs/[taskname]/overview.md** - プロジェクト全体の概要とPhase構成を理解 2. **specs/[taskname]/specification.md** - 機能要件と非機能要件の詳細を確認 3. **specs/[taskname]/technical-details.md** - 技術的な実装方針を確認 4. **specs/[taskname]/tasks/phase{N}-{phaseName}.md** - 該当するPhaseの計画書を確認 ### 4. 現在の状況確認 以下を確認してユーザーに報告: - 各Phaseの現在の状態(未着手/進行中/完了) - 実装可能なPhaseの特定(依存関係を考慮) - ブロッカーの有無 ### 5. 作業開始位置の決定 #### 5-1. `[phase].[task]` が指定されている場合 1. 指定されたPhaseファイル(phase{N}-{phaseName}.md)を読み込む 2. 指定されたタスク番号のタスクを特定 3. そのタスクの依存関係を確認: - 依存関係が満たされていない場合、警告を表示し、ユーザーに続行するか確認 - 依存関係が満たされている場合、そのまま続行 4. 指定されたタスクの詳細を表示し、実装計画に進む #### 5-2. `[phase].[task]` が指定されていない場合 ユーザーに以下を質問: 「どのPhaseの作業を進めますか?」 選択肢: - Phase {N}: {phaseName}(状態: 〇〇、依存関係: 〇〇) - または、特定のタスク番号を指定(例: 2.3 でPhase 2のタスク3) ### 6. タスクの確認と実行計画 選択されたPhaseまたはタスクについて: 1. **仕様の確認** - specification.mdから該当機能の詳細仕様を抽出 - technical-details.mdから技術的な実装方針を確認 - Phase計画書から具体的なタスクとその依存関係を確認 2. **実行可能性の確認** - 依存関係が満たされているか確認 - ブロッカーがないか確認 - 必要なライブラリやツールが揃っているか確認 3. **TodoWriteで実装タスクを追加** Phase計画書のタスクリストから、以下の形式でTodoWriteに実装用Todoを追加: ``` - content: "{タスク名} の実装" activeForm: "{タスク名} を実装中" status: "pending" ``` **重要**: - Phase計画書のタスク1つにつき、Todoアイテム1つを作成 - タスクの依存関係順に並べる - 各Todoには以下の情報を含める: - 実装対象のファイルパス - 実装する機能の概要 - テスト対象 4. **ユーザーに確認** 追加した実装用Todoリストを表示し、AskUserQuestionで確認: 「この計画で実装作業を開始してよろしいですか?」 承認された場合、次のステップへ進む ### 7. 実装作業 承認後、追加した実装用Todoを1つずつ実行: 各Todoについて以下の手順で作業: 1. **Todoを`in_progress`に更新** 2. **実装** - specification.mdの要件を満たすコードを実装 - technical-details.mdの技術方針に従う - 既存のコードベースとの整合性を保つ - any型は絶対に使用しない 3. **品質チェック** - コードレビュー基準に従っているか確認 - エラーハンドリングが適切か確認 - 関数型プログラミングのスタイルを意識(map/filterの活用) 4. **テスト** - Phase計画書のテスト計画に従ってテストを実装 - ユニットテスト - 統合テスト(必要に応じて) 5. **Todoを`completed`に更新** 6. **次のTodoへ** - すべての実装Todoが完了するまで繰り返し ### 8. 完了報告と状態更新 作業完了後の報告フォーマット: ``` ✅ タスク [Phase.Task] の実装が完了しました ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📍 対象: specs/{taskname}/ - Phase {N}, Task {M} 💡 次のアクション: - 次のタスク実施: `/sdd:implement-phase {taskname} {phase}.{task+1}` - Phase検証実施: `/sdd:verify-phase {taskname} {phase}` (Phase内の全タスク完了時) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` **Phase状態の更新**: - specs/[taskname]/overview.mdのPhase状態を更新 - 該当するspecs/[taskname]/tasks/phase{N}-{phaseName}.mdのタスク状態を更新 - タスク目次の該当タスクの状態とTDDステップを更新 ### 9. 品質チェックの実施 作業完了前に必ず以下を確認: - [ ] 仕様書の要件を満たしているか - [ ] 依存関係が適切に処理されているか - [ ] エラーハンドリングが実装されているか - [ ] テストが実装され、パスしているか - [ ] any型を使用していないか - [ ] 関数型のスタイルを意識しているか(配列操作など) - [ ] 既存の類似実装を確認し、重複を避けているか - [ ] 既存ライブラリで実現できないか検討したか ## 重要な注意事項 - 実装中は仕様書(overview.md、specification.md、technical-details.md)を常に参照し、要件から逸脱しないこと - Phase計画書の依存関係を必ず確認し、順序を守ること - タスク・Phaseの状態を適切に更新すること - 不明点や仕様の矛盾があれば、実装前にユーザーに確認すること ## 使用例 1. タスク全体を最初から開始: `/sdd:implement-phase user-authentication` 2. Phase 2のタスク3から開始: `/sdd:implement-phase user-authentication 2.3` 3. 引数なしで対話的に選択: `/sdd:implement-phase` ## 内部品質チェック **重要**: 以下のチェックはコマンド内部で実施し、**生成されるspecファイルには結果を記載しません**。 ### ステアリングドキュメントレビュー(内部処理) 実装完了後、内部的にステアリングドキュメントとの整合性を確認: - product.mdのビジネス目標との整合性 - tech.mdのコーディング標準との整合性 - structure.mdの命名規則・モジュール境界の遵守 - principles.mdの開発原則との一致 問題がある場合のみユーザーに修正を促す。準拠している場合は何も出力しない。 ### 矛盾チェック(内部処理) 実装完了後、内部的に仕様書間の矛盾を確認: - 実装内容とPhase計画書の整合性 - specification.mdとの整合性 - technical-details.mdとの整合性 - 依存関係のあるドキュメント間の矛盾 矛盾がある場合のみユーザーに警告を表示。問題がなければ何も出力しない。