Files
gh-masseater-claude-code-pl…/commands/breakdown-phase.md
2025-11-30 08:39:29 +08:00

379 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
argument-hint: <タスク名> <phase番号>
description: 指定されたPhaseの詳細タスク計画書を生成
allowed-tools: ["Read", "Write", "Task", "AskUserQuestion"]
---
# 指定されたPhaseの詳細タスク計画書を生成します
このコマンドは、**TDDTest-Driven DevelopmentとSOLID原則**に基づいた指定Phaseの詳細計画書を `specs/[taskname]/tasks/phase{N}-{name}.md` として生成します。
**重要**: Phase構成は `/sdd:plan-phases` で決定済みであることが前提です。
【引数】
$ARGUMENTS
**引数の形式**:
- `<タスク名>` - 必須
- `<phase番号>` - 必須(例: 1, 2, 3
## Phase分けの基本方針
Phase分けは以下の原則に基づいて行います
### 重要な前提条件
**⚠️ 調査・設計はPhase分け前に完了させること**
- Phase内のタスクには調査・設計タスクを含めてはいけません
- 技術選定、アーキテクチャ設計、実装方法の検討など、全ての調査・設計作業は `/sdd:conduct-research` コマンドで完了させてください
- Phase内のタスクは「実装」のみに焦点を当てます
**Phase内に含めてはいけないタスクの例**:
- ❌ 「認証ライブラリの選定」
- ❌ 「データベーススキーマの設計検討」
- ❌ 「API設計の方針決定」
- ❌ 「パフォーマンスの実現可能性調査」
**Phase内に含めるべきタスクの例**:
- ✅ 「ユーザーテーブルのマイグレーション作成」
- ✅ 「認証APIエンドポイントの実装」
- ✅ 「ログインUIコンポーネントの実装」
- ✅ 「ユニットテストの作成」
### タスク分解の方針
#### Phase分けの基準
Phaseは以下の基準で分割してください
1. **独立してデプロイ・リリース可能な単位**
- 各Phaseは独立して動作確認とリリースができる状態になるように分割
- Phase完了時点で品質チェックに成功する状態であること必須
2. **機能の依存関係による分割**
- 後続Phaseが前Phaseの成果物に依存する構造
- 並行開発可能なPhaseは別々に分ける
3. **リスクとビジネス価値による優先順位付け**
- 高リスク・高価値の機能は早期のPhaseで実装
- 基盤機能 → コア機能 → 拡張機能の順に配置
#### Phase内のタスク分けの基準
各Phase内でさらに小さいタスクに分ける場合、以下の基準を適用してください
1. **適切な粒度の単位**
- 大きすぎる場合はさらに分割を検討
- 小さすぎる場合は統合を検討
2. **TDDサイクルが完結する単位**
- Red → Green → Refactor のサイクルが1回以上完結すること
- テストと実装がセットで完了すること
3. **単一の機能または責任を持つ単位**
- 単一責任の原則に従う
- タスク名が「〇〇と△△」のように複数の責任を示す場合は分割
4. **他のタスクとの依存関係が明確**
- タスクAが完了しないとタスクBに着手できない場合は依存関係を明記
- 並行作業可能なタスクは独立させる
#### 具体例空のWebアプリにログイン機能を実装する場合
**Phase 1: ユーザーテーブルとモデル**
- タスク1: ユーザーテーブルのマイグレーションファイル作成
- タスク2: マイグレーション実行とテスト
- タスク3: ユーザーモデルの基本構造作成ID、メール、パスワードハッシュフィールド
**Phase 2: ログインAPI**
- タスク1: ログインエンドポイントの骨組み作成POST /api/auth/login、リクエスト受付のみ
- タスク2: パスワード検証ロジックの実装
- タスク3: JWTトークン生成機能の実装
**Phase 3: ログインUI**
- タスク1: ログインフォームコンポーネントの骨組み作成(メール・パスワード入力欄のみ)
- タスク2: フォーム送信処理とAPIとの連携
- タスク3: エラー表示UIバリデーションエラー、認証エラー
各タスクはTDDサイクルRed→Green→Refactorが1回完結する粒度です。
### 開発原則
各Phaseでは `specs/_steering/principles.md` に記載された以下の原則を適用します:
- **TDDTest-Driven Development**: Red-Green-Refactorサイクル
- **SOLID原則**: 単一責任、開放/閉鎖、リスコフの置換、インターフェース分離、依存性逆転
- **YAGNI原則**: 実際に必要になるまで機能を追加しない
### ⚠️ 重要な制約事項
- **過度な抽象化を避ける**: インターフェース(抽象)を作ることが目的化してはいけない
- **型定義だけを先に作ることは禁止**: 実装と共に型を作成し、必要に応じて分離する
- **YAGNI原則の徹底**: 将来の要件を予測した実装は行わない
## 実行手順
### 1. 引数のパースと検証
`$ARGUMENTS` から タスク名 と Phase番号 を抽出:
**引数が不足している場合**:
- タスク名のみ指定: エラーメッセージ「Phase番号を指定してください。使用方法: /sdd:breakdown-phase <taskname> <phase番号>」
- 両方未指定: `specs/` ディレクトリ内のタスクをリスト表示し、**AskUserQuestionツールで選択**を求める
**Phase番号が数値でない場合**:
- エラーメッセージ「Phase番号は数値で指定してください」
### 2. タスクディレクトリの確認
- `specs/[taskname]/` ディレクトリの存在を確認
- 必須ファイルの存在確認:
- `overview.md` Phase構成が含まれているはず
- `specification.md`
- `technical-details.md`
- `specs/[taskname]/tasks/` ディレクトリが存在しない場合は作成
### 3. ステアリングドキュメントの読み込み
プロジェクト全体のコンテキストを把握するため、以下のステアリングドキュメントを読み込みます:
**`specs/_steering/product.md`**:
- プロダクトの目的とビジョン
- ターゲットユーザー
- 主要機能とビジネス目標
**`specs/_steering/tech.md`**:
- 技術スタックとアーキテクチャ
- 開発標準(型安全性、コード品質、テスト戦略)
- 重要な技術的決定事項
**`specs/_steering/structure.md`**:
- プロジェクト構造と命名規則
- コード組織原則
- モジュール境界
**ステアリングドキュメントが存在しない場合**:
- 警告メッセージを表示: 「⚠️ ステアリングドキュメントが見つかりません。プロジェクト固有のコンテキストなしで進めます。」
- `/sdd:steering` コマンドでステアリングドキュメントを作成することを推奨
- 処理は続行(ステアリングドキュメントは必須ではない)
### 4. 調査完了の確認
詳細タスク計画作成前に、必ず調査が完了していることを確認:
1. **overview.mdの調査セクション確認**
- `specs/[taskname]/overview.md` の調査項目表を読み込み
- 全ての調査項目の状態を確認
2. **調査ステータスの判定**
- 全て「完了」の場合: 次のステップへ進む
- 「未着手」がある場合:
- 警告メッセージを表示: 「⚠️ 調査が完了していません」
- 未完了の調査項目をリスト表示
- AskUserQuestionツールで確認して続行するか判断
- 続行しない場合: `/sdd:conduct-research [taskname]` を推奨
### 5. 既存ドキュメントの分析
以下のドキュメントから情報を抽出:
**`overview.md`**:
- 調査結果調査セクションおよびspecs/research/配下の個別ファイル)
- **指定されたPhase番号のPhase情報のみ**を抽出
- Phase名、状態、目標、依存関係、成果物
- Phase番号が overview.md に存在しない場合:
- エラーメッセージ「Phase {N} は overview.md に存在しません。/sdd:plan-phases でPhase構成を作成してください。」
- 処理を中断
**`specification.md`**:
- 機能要件の詳細
- 指定Phaseで実装する機能
- 非機能要件
**`technical-details.md`**:
- 技術スタックと技術選定
- データ設計とAPI設計
- セキュリティ要件
### 6. Phase計画書の生成/更新
指定されたPhase番号に対して `specs/[taskname]/tasks/phase{N}-{phaseName}.md` ファイルを生成または更新:
**ファイル名の決定**:
- Phase番号: 引数で指定された番号
- Phase名: overview.mdから抽出したPhase名kebab-case に変換)
- 例: Phase 2 "Core Features" → `phase2-core-features.md`
**生成・更新モードの判定**:
- ファイルが存在しない場合: 新規作成
- ファイルが存在する場合:
- 既存内容を確認
- **AskUserQuestionツール**で「上書き/スキップ/マージ」を確認
- マージの場合は既存の進捗情報(チェックボックスの状態、開始日時、完了済みタスク)を保持しながら更新
**Phase内タスクの検証**:
- 各タスクが実装タスクのみであることを確認
- 調査・設計タスクが含まれていないかチェック
- 調査・設計タスクが見つかった場合: 警告を表示し、research.mdへの移動を提案
**ファイルフォーマット**:
```markdown
# Phase {N}: {phaseName} 計画書
## タスク目次
- 1. [タスク名]
- 2.1. [タスク名]2.x系は並列実行可能
- 2.2. [タスク名]
- 2.3. [タスク名]
- 3. [タスク名]
**並列実行の判断基準(明示的並列宣言方式):**
- デフォルトは全て直列実行
- 並列実行するタスクは明示的にn.x形式で番号付け例: 2.1, 2.2, 2.3
- タスク作成者が並列実行して問題ないことを保証する責任を持つ
- Phase分け時にユーザーに依存関係の妥当性を確認する
## Phase概要
- **Phase名**: {phaseName}
- **状態**: 未着手/進行中/完了
- **目標**:
## 開発原則
このPhaseでは `specs/_steering/principles.md` に記載された開発原則を適用します。
各タスクでTDDRed-Green-Refactorサイクルを実施してください。
## 依存関係
- **前提条件**: [Phase N-1の完了、必要なライブラリの選定など]
- **ブロッカー**: [なし、または現在のブロッカー]
- **後続Phaseへの影響**: [Phase N+1が依存する機能]
## 実装する機能
- 機能1
- 機能2
- 機能3
## タスク詳細
### タスク1: [タスク名]
- **説明**: [実装内容]
- **状態**: 未着手
- **開始日時**:
- **TDDステップ**:
- [ ] Red: テストケース作成
- [ ] Green: 最小実装
- [ ] Refactor: リファクタリング
- **依存関係**: なし
### タスク2.1: [タスク名]
- **説明**: [実装内容]
- **状態**: 未着手
- **開始日時**:
- **TDDステップ**:
- [ ] Red: テストケース作成
- [ ] Green: 最小実装
- [ ] Refactor: リファクタリング
- **依存関係**: タスク1
### タスク2.2: [タスク名]
- **説明**: [実装内容]
- **状態**: 未着手
- **開始日時**:
- **TDDステップ**:
- [ ] Red: テストケース作成
- [ ] Green: 最小実装
- [ ] Refactor: リファクタリング
- **依存関係**: タスク1
### タスク3: [タスク名]
- **説明**: [実装内容]
- **状態**: 未着手
- **開始日時**:
- **TDDステップ**:
- [ ] Red: テストケース作成
- [ ] Green: 最小実装
- [ ] Refactor: リファクタリング
- **依存関係**: タスク2.x系全て
## テスト戦略
- **単体テスト**: 各関数/メソッドの振る舞いを検証
- **統合テスト**: モジュール間の連携を検証
- **E2Eテスト**: エンドユーザーの視点からの動作を検証
## Phase完了条件
- [ ] 全タスク完了
- [ ] 全テスト通過
- [ ] 品質チェックコマンドが成功lint、type check、buildなど
- [ ] コードレビュー承認
## 技術的課題と解決方針(必要な場合のみ)
[想定される課題と解決方針がある場合に記述]
## リスク管理(必要な場合のみ)
[Phase固有のリスクがある場合に記述]
## 次Phaseへの引き継ぎ事項必要な場合のみ
[引き継ぎ事項がある場合に記述]
```
### 7. 完了報告
```
✅ Phase {N} の詳細計画書を生成/更新しました
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📍 対象ファイル: specs/[taskname]/tasks/phase{N}-{name}.md
📝 モード: [新規作成/更新/マージ]
📊 Phase {N} 概要:
- Phase名: {name}
- 状態: {status}
- 目標: {goal}
- タスク数: {count}
💡 次のアクション:
- Phase計画書の内容を確認・編集してください
- TDDサイクルRed→Green→Refactorを意識して進めてください
- 他のPhaseの計画書を作成する場合: `/sdd:breakdown-phase [taskname] [phase番号]`
- Phase実装を開始する場合: `/sdd:implement-phase [taskname] [phase番号]`
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
## 注意事項
- **⚠️ 重要**: このコマンドは**指定された1つのPhase**の詳細計画のみを生成します
- **⚠️ 重要**: Phase構成は事前に `/sdd:plan-phases` で決定されている必要があります
- **⚠️ 重要**: 詳細であれば詳細であるほど良いわけではない。必要な部分だけを必要なだけ書くこと
- **⚠️ 重要**: インターフェースや抽象クラスは、それを使用しなければ実現できない時以外は使用禁止
- **⚠️ 重要**: 型定義だけを先に作ることは絶対に行わないこと。タスク単位で型定義だけを作ることは禁止。実装を作った後、他でもその型を使用する場合に分離する
- **⚠️ 重要**: 推測される開発期間、工数、見積もり時間などは一切記載しないこと(タスクの開始日時は記録する)
- **⚠️ 重要**: 「将来的に必要になる」「今後〜が必要」といった適当な推測に基づいた記述は禁止。現時点で明確に必要なことのみを記載すること
- **⚠️ 重要**: 不明なところは勝手に決めずに「**不明**」と明記し、複数の案案A、案B、案Cなどを記述すること。ユーザーは `/sdd:clarify-spec [taskname]` コマンドで不明箇所を明確化できる
- **配置先**: `specs/[taskname]/tasks/phase{N}-{name}.md`
- 既存のPhase計画書がある場合、進捗情報状態、タスクの開始日時、チェックボックス、完了済みタスクは保持する
- **TDD原則**: 各タスクでRed→Green→Refactorサイクルを明記
- **設計原則**: 各Phase/タスクでどの設計原則を適用するか明確に記述
- 依存関係は具体的かつ明確に記述し、依存性注入(関数やオブジェクトを引数として渡す)を活用
- overview.mdの「Phase概要と依存関係」セクションと整合性を保つ
- Phase名は overview.md から自動抽出し、ファイル名は `phase{N}-{kebab-case-name}.md` 形式とする
## 内部品質チェック
**重要**: 以下のチェックはコマンド内部で実施し、**生成されるspecファイルには結果を記載しません**。
### ステアリングドキュメントレビュー(内部処理)
Phase詳細計画書生成後、内部的にステアリングドキュメントとの整合性を確認
- tech.mdのコーディング標準・テスト戦略への準拠
- structure.mdのモジュール境界・命名規則の遵守
- product.mdのビジネス目標との整合性
- principles.mdの開発原則TDD、SOLID、YAGNIへの従属
問題がある場合のみユーザーに修正を促す。準拠している場合は何も出力しない。
### 矛盾チェック(内部処理)
Phase詳細計画書作成後、内部的に仕様書間の矛盾を確認
- overview.mdとの整合性
- specification.mdとの一致
- technical-details.mdとの整合性
矛盾がある場合のみユーザーに警告を表示。問題がなければ何も出力しない。