--- name: sdd-plan description: SDD実装計画。仕様書(Part 1)を読み込み、実装計画(Part 2)を追記する。ユーザーが「実装計画を作成して」「計画を立てて」「SDDの計画フェーズに進みたい」と言った場合に使用する。 disable-model-invocation: false allowed-tools: Read, Glob, Grep, Write, Edit --- # SDD Plan スキル 仕様駆動開発(SDD)の2番目のステップ。仕様書に基づいて実装計画を作成する。 ## 前提条件 - `/sdd-specify` で仕様書(Part 1)が作成済みであること - `.steering/` ディレクトリに対象の仕様書が存在すること ## ワークフロー ### ステップ1: 準備 1. `sdd-principles` スキルを読み込み、SDD原則・フェーズゲートを確認する 2. `.steering/` から対象の仕様書を特定する - `$ARGUMENTS` でファイル名が指定された場合はそれを使用 - 指定がない場合は `.steering/` 内の最新ファイルを候補として提示 3. 仕様書の Part 1(仕様セクション)を読み込む ### ステップ2: フェーズゲート1 検証 ゲート1(Specify → Plan)の通過条件を検証する: | # | 条件 | 確認方法 | |---|------|---------| | G1-1 | `[NEEDS CLARIFICATION]` マーカーがゼロ | 仕様書内を検索 | | G1-2 | 受入基準が1つ以上存在 | Given-When-Thenテーブルを確認 | | G1-3 | プロジェクト憲法チェックリストが全項目記入済み | チェックボックスを確認 | | G1-4 | ユーザーが仕様を承認済み | 明示的な承認を確認 | **未通過の場合**: 未達成の条件を報告し、`/sdd-specify` に戻ることを提案して中止する。 ### ステップ3: アーキテクチャ設計 仕様の要件に基づいてアーキテクチャを設計する: - 新規ファイルの配置 - 既存ファイルへの変更 - レイヤー分離の確認(条I: モジュール先行、条VI: 関心の分離) - データフローの整理 ### ステップ4: フェーズ分解 受入基準からアトミックなタスクに分解する: 1. **テスト先行**(条III): 各フェーズは「テスト作成→実装→検証」の順序 2. **依存関係**: タスク間の依存関係を明示 3. **完了条件**: 各タスクに受入基準ベースの完了条件を設定 4. **ファイルパス**: 各タスクで変更するファイルを明記 推奨フェーズ構成: ``` フェーズ1: テスト準備(テストヘルパー・フィクスチャ) フェーズ2: コアロジック(ビジネスロジック) フェーズ3: インターフェース統合(外部インターフェース層) フェーズ4: 統合テスト ``` ### ステップ5: シンプリシティゲート 条VII(簡潔性ゲート)準拠を事前チェック: - [ ] 関数・ファイルの行数が上限内に収まる見込み - [ ] ネスト深度が上限内に収まる見込み 超過が見込まれる場合は、分割方針を計画に記載する。 ### ステップ6: リスク評価 実装上のリスクを評価する: - 技術的リスク(未知のAPI、性能懸念等) - 依存関係リスク(外部サービス、パッケージ互換性等) - スコープリスク(要件の曖昧さ、変更の影響範囲等) ### ステップ7: 計画書保存 仕様書の **Part 2(実装計画セクション)** を追記する: - 2.1 進捗サマリー - 2.2 アーキテクチャ変更 - 2.3 実装フェーズ(チェックボックス付きアトミックタスク) - 2.4 シンプリシティゲート - 2.5 リスク評価 - 2.6 成功基準(Part 1 の受入基準から転記) - 2.7 実装ログ(空テーブル) ### ステップ8: ユーザー承認 計画の概要をユーザーに提示し、承認を待つ。 承認後の次のステップ: `/sdd-implement` で実装を開始する。 ## 出力 - 仕様書に Part 2(実装計画)を追記 - フェーズゲート2の準備状況を報告 ## 他のスキルとの連携 - 前のステップ: `/sdd-specify` - 仕様書の作成 - 次のステップ: `/sdd-implement` - 計画に基づいて実装 ## 注意事項 - このスキルではコードの変更は行わない(計画の作成のみ) - フェーズゲート1を通過していない仕様書に対しては計画を作成しない - 仕様書の Part 1 は変更しない(Part 2 の追記のみ)