---
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 の追記のみ）
