--- name: documentation-criteria description: PRD、ADR、Design Doc、作業計画書の作成を支援。テンプレートと作成判定マトリクスを提供。 --- # ドキュメント作成基準 ## 作成判定マトリクス | 条件 | 必要ドキュメント | 作成順序 | |-----|--------------|---------| | 新機能追加 | PRD → [ADR] → Design Doc → 作業計画書 | PRD承認後 | | ADR条件該当(下記参照) | ADR → Design Doc → 作業計画書 | 即座に開始 | | 6ファイル以上 | ADR → Design Doc → 作業計画書(必須) | 即座に開始 | | 3-5ファイル | Design Doc → 作業計画書(推奨) | 即座に開始 | | 1-2ファイル | なし | 直接実装 | ## ADR作成条件(いずれか該当で必須) ### 1. 型システム変更 - **3階層以上のネスト型追加**: `type A = { b: { c: { d: T } } }` - 判断理由: 深いネストは複雑性が高く、影響範囲が広い - **3箇所以上で使用される型の変更・削除** - 判断理由: 複数箇所への影響は慎重な判断が必要 - **型の責務変更**(例: DTO→Entity) - 判断理由: 概念モデルの変更は設計思想に関わる ### 2. データフロー変更 - **保存場所変更**(DB→ファイル、メモリ→キャッシュ) - **3ステップ以上の処理順序変更** - 例: 「入力→検証→保存」から「入力→保存→非同期検証」 - **データ受け渡し方法変更**(props→Context、直接参照→イベント) ### 3. アーキテクチャ変更 - レイヤー追加・責務変更・コンポーネント再配置 ### 4. 外部依存変更 - ライブラリ・フレームワーク・外部API導入・置換 ### 5. 複雑な実装ロジック(規模に関わらず) - 3つ以上の状態を管理 - 5つ以上の非同期処理の連携 ## 各ドキュメントの詳細定義 ### PRD(Product Requirements Document) **目的**: ビジネス要件とユーザー価値を定義 **含むもの**: - ビジネス要件とユーザー価値 - 成功指標とKPI(測定可能な形式) - ユーザーストーリーとユースケース - MoSCoW法による優先順位(Must/Should/Could/Won't) - MVPとFutureフェーズの分離 - ユーザージャーニー図(必須) - スコープ境界図(必須) **含まないもの**: - 技術実装詳細(→Design Doc) - 技術選定理由(→ADR) - **実装フェーズ**(→作業計画書) - **タスク分解**(→作業計画書) ### ADR(Architecture Decision Record) **目的**: 技術的決定の理由と背景を記録 **含むもの**: - 決定事項(何を選択したか) - 根拠(なぜその選択をしたか) - 選択肢の比較(最低3案)とトレードオフ - アーキテクチャへの影響 - 実装への原則的な指針(例:「依存性注入を使用」) **含まないもの**: - 実装スケジュール、期間(→作業計画書) - 実装手順の詳細(→Design Doc) - 具体的なコード例(→Design Doc) - 担当者の割り当て(→作業計画書) ### Design Document **目的**: 技術的実装方法を詳細定義 **含むもの**: - **既存コードベース分析**(必須) - 実装パスマッピング(既存と新規の両方を記載) - 統合点の明確化(新規実装でも既存との接続点を記載) - 技術的実装アプローチ(垂直/水平/ハイブリッド) - **技術的依存関係と実装制約**(実装の必要順序) - インターフェース定義と型定義 - データフローとコンポーネント設計 - **統合ポイントでのE2E確認手順** - **受入条件(EARS形式: When/While/If-then/無印)** - 変更影響マップ(直接影響/間接影響/波及なしを明記) - 統合点の完全な列挙 - データ契約の明確化 - **合意事項チェックリスト**(関係者との合意内容) - **前提となるADR**(共通ADR含む) **必須構造要素**: ```yaml 変更影響マップ: 変更対象: [コンポーネント/機能] 直接影響: [ファイル/関数] 間接影響: [データ形式/処理時間] 波及なし: [影響を受けない機能] インターフェース変更マトリクス: 既存: [メソッド名] 新規: [メソッド名] 変換必要性: [あり/なし] 互換性確保: [方法] ``` **含まないもの**: - なぜその技術を選んだか(→ADR参照) - いつ実装するか、期間(→作業計画書) - 誰が実装するか(→作業計画書) ### 作業計画書 **目的**: 実装タスクの管理と進捗追跡 **含むもの**: - **フェーズ構成**(Design Docの技術的依存関係を基に作成) - タスク分解と依存関係(最大2階層まで) - スケジュールと期間見積もり - **Design DocのE2E確認手順を各フェーズに配置** - **最終フェーズに品質保証を含む**(必須) - 進捗記録(チェックボックス形式) **含まないもの**: - 技術的な根拠(→ADR) - 設計の詳細(→Design Doc) - 技術的依存関係の決定(→Design Doc) **タスク完了定義の3要素**: 1. **実装完了**: コードが動作する 2. **品質完了**: テスト・型チェック・リントがパス 3. **統合完了**: 他コンポーネントとの連携確認 ## 作成プロセス 1. **問題分析**: 変更規模判定、ADR条件確認 2. **ADR選択肢検討**(ADR時のみ): 3案以上比較、トレードオフ明記 3. **作成**: テンプレート使用、測定可能な条件記載 4. **承認**: レビュー後「Accepted」で実装可 ## 保存場所 | ドキュメント | パス | 命名規則 | テンプレート | |------------|-----|---------|------------| | PRD | `docs/prd/` | `[機能名]-prd.md` | `prd-template.md` | | ADR | `docs/adr/` | `ADR-[4桁]-[タイトル].md` | `adr-template.md` | | Design Doc | `docs/design/` | `[機能名]-design.md` | `design-template.md` | | 作業計画書 | `docs/plans/` | `YYYYMMDD-{type}-{description}.md` | `plan-template.md` | | タスクファイル | `docs/plans/tasks/` | `{plan-name}-task-{number}.md` | `task-template.md` | ※作業計画書は`.gitignore`で除外 ## ADRステータス `Proposed` → `Accepted` → `Deprecated`/`Superseded`/`Rejected` ## AI自動化ルール - 5ファイル以上: ADR作成提案 - 型・データフロー変更検出: ADR必須化 - 既存ADR確認してから実装 ## 図表作成要件 各ドキュメントで必須の図表(mermaid記法使用): | ドキュメント | 必須図表 | 目的 | |------------|---------|-----| | PRD | ユーザージャーニー図、スコープ境界図 | ユーザー体験と範囲の明確化 | | ADR | 選択肢比較図(必要時) | トレードオフの視覚化 | | Design Doc | アーキテクチャ図、データフロー図 | 技術構造の理解 | | 作業計画書 | フェーズ構成図、タスク依存関係図 | 実装順序の明確化 | ## 共通ADRとの関係性 1. **作成時**: 共通技術領域(ログ、エラーハンドリング、非同期処理等)を特定し、既存共通ADRを参照 2. **不足時**: 必要な共通ADRが存在しない場合は作成を検討 3. **Design Doc**: 「前提となるADR」セクションで共通ADRを明記 4. **準拠確認**: 設計が共通ADRの決定事項と整合しているかを検証 ## テンプレート テンプレートは`references/`ディレクトリにあります: - [Design Documentテンプレート](references/design-template.md) - [PRDテンプレート](references/prd-template.md) - [作業計画書テンプレート](references/plan-template.md) - [ADRテンプレート](references/adr-template.md) - [タスクファイルテンプレート](references/task-template.md)