cursor-sdd 1.0.10 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,91 @@
1
+ <meta>
2
+ description: 仕様の包括的な要件を生成
3
+ argument-hint: <feature-name:$1>
4
+ </meta>
5
+
6
+ # 要件生成
7
+
8
+ <background_information>
9
+ - **ミッション**: spec初期化からのプロジェクト説明に基づいて、EARSフォーマットで包括的でテスト可能な要件を生成
10
+ - **成功基準**:
11
+ - 完全な要件ドキュメントを作成
12
+ - すべての受け入れ基準にプロジェクトのEARSパターンと制約を適用
13
+ - 実装詳細なしでコア機能にフォーカス
14
+ - メタデータを更新して生成状況を追跡
15
+ </background_information>
16
+
17
+ <instructions>
18
+ ## コアタスク
19
+ requirements.md のプロジェクト説明に基づいて、機能 **$1** の完全な要件を生成する。
20
+
21
+ ## 実行ステップ
22
+
23
+ 1. **コンテキストの読み込み**:
24
+ - `.cursor/$1/spec.json` から言語とメタデータを読み込み
25
+ - `.cursor/$1/requirements.md` からプロジェクト説明を読み込み
26
+
27
+ 2. **ガイドラインの読み込み**:
28
+ - `.cursor/rules/ears-format.md` から EARS 構文ルールを読み込み
29
+ - `.cursor/templates/specs/requirements.md` からドキュメント構造を読み込み
30
+
31
+ 3. **要件の生成**:
32
+ - プロジェクト説明に基づいて初期要件を作成
33
+ - 関連機能を論理的な要件領域にグループ化
34
+ - すべての受け入れ基準に EARS フォーマットを適用
35
+ - spec.json で指定された言語を使用
36
+
37
+ 4. **メタデータの更新**:
38
+ - `phase: "requirements-generated"` を設定
39
+ - `approvals.requirements.generated: true` を設定
40
+ - `updated_at` タイムスタンプを更新
41
+
42
+ ## 重要な制約
43
+ - 何を(WHAT)にフォーカスし、どのように(HOW)は含めない(実装詳細なし)
44
+ - 要件はテスト可能で検証可能でなければならない
45
+ - EARS文の適切な主語を選択(ソフトウェアにはシステム/サービス名)
46
+ - 最初に初期バージョンを生成し、その後ユーザーフィードバックで反復(事前の連続質問なし)
47
+ - requirements.md の要件見出しには先頭に数値IDのみを含めること(例: "Requirement 1"、"1."、"2 Feature ...")、"Requirement A" のようなアルファベットIDは使用しない
48
+ </instructions>
49
+
50
+ ## ツールガイダンス
51
+ - **最初に読み込み**: 生成前にすべてのコンテキスト(spec、rules、templates)を読み込み
52
+ - **最後に書き込み**: 完全な生成後にのみ requirements.md を更新
53
+ - 外部ドメイン知識が必要な場合のみ **WebSearch/WebFetch** を使用
54
+
55
+ ## 出力説明
56
+ spec.json で指定された言語で以下を出力:
57
+
58
+ 1. **生成された要件サマリー**: 主要な要件領域の簡潔な概要(3-5項目)
59
+ 2. **ドキュメントステータス**: requirements.md の更新と spec.json メタデータの更新を確認
60
+ 3. **次のステップ**: 進め方をガイド(承認して続行、または修正)
61
+
62
+ **フォーマット要件**:
63
+ - 明確さのためMarkdown見出しを使用
64
+ - ファイルパスはコードブロックに含める
65
+ - サマリーは簡潔に(300語以内)
66
+
67
+ ## 安全性とフォールバック
68
+
69
+ ### エラーシナリオ
70
+ - **プロジェクト説明が見つからない**: requirements.md にプロジェクト説明がない場合、ユーザーに機能詳細を確認
71
+ - **曖昧な要件**: 多くの事前質問ではなく、初期バージョンを提案してユーザーと反復
72
+ - **テンプレートが見つからない**: テンプレートファイルが存在しない場合、警告付きでインラインフォールバック構造を使用
73
+ - **言語が未定義**: spec.json で言語が指定されていない場合、日本語(`ja`)をデフォルトに
74
+ - **不完全な要件**: 生成後、要件が期待されるすべての機能をカバーしているか明示的にユーザーに確認
75
+ - **非数値の要件見出し**: 既存の見出しに先頭の数値IDがない場合(例: "Requirement A")、数値IDに正規化し、マッピングの一貫性を維持(数値とアルファベットのラベルを混在させない)
76
+
77
+ ### 次のフェーズ: 設計生成
78
+
79
+ **要件が承認された場合**:
80
+ - `.cursor/$1/requirements.md` で生成された要件をレビュー
81
+ - **オプションのギャップ分析**(既存コードベース用):
82
+ - `/validate-gap $1` を実行して現在のコードとの実装ギャップを分析
83
+ - 既存コンポーネント、統合ポイント、実装戦略を特定
84
+ - ブラウンフィールドプロジェクトには推奨、グリーンフィールドにはスキップ
85
+ - その後 `/design $1 -y` で設計フェーズに進む
86
+
87
+ **修正が必要な場合**:
88
+ - フィードバックを提供し `/requirements $1` を再実行
89
+
90
+ **注記**: 設計フェーズに進む前に承認が必須。
91
+ </output>
@@ -0,0 +1,86 @@
1
+ <meta>
2
+ description: 仕様のステータスと進捗を表示
3
+ argument-hint: <feature-name:$1>
4
+ </meta>
5
+
6
+ # 仕様ステータス
7
+
8
+ <background_information>
9
+ - **ミッション**: 仕様の包括的なステータスと進捗を表示
10
+ - **成功基準**:
11
+ - 現在のフェーズと完了状況を表示
12
+ - 次のアクションとブロッカーを特定
13
+ - 進捗の明確な可視性を提供
14
+ </background_information>
15
+
16
+ <instructions>
17
+ ## コアタスク
18
+ 機能 **$1** のステータスレポートを生成し、すべてのフェーズの進捗を表示する。
19
+
20
+ ## 実行ステップ
21
+
22
+ ### ステップ1: Specコンテキストの読み込み
23
+ - `.cursor/$1/spec.json` からメタデータとフェーズステータスを読み込み
24
+ - 既存ファイルを読み込み: `requirements.md`、`design.md`、`tasks.md`(存在する場合)
25
+ - `.cursor/$1/` ディレクトリで利用可能なファイルを確認
26
+
27
+ ### ステップ2: ステータスの分析
28
+
29
+ **各フェーズを解析**:
30
+ - **Requirements**: 要件と受け入れ基準の数をカウント
31
+ - **Design**: アーキテクチャ、コンポーネント、ダイアグラムを確認
32
+ - **Tasks**: 完了タスク vs 全タスクをカウント(`- [x]` vs `- [ ]` を解析)
33
+ - **Approvals**: spec.json で承認状況を確認
34
+
35
+ ### ステップ3: レポートの生成
36
+
37
+ spec.json で指定された言語でレポートを作成し、以下をカバー:
38
+ 1. **現在のフェーズと進捗**: ワークフローにおけるspecの位置
39
+ 2. **完了状況**: 各フェーズの完了率
40
+ 3. **タスク内訳**: タスクが存在する場合、完了/残りの数を表示
41
+ 4. **次のアクション**: 次に何をすべきか
42
+ 5. **ブロッカー**: 進捗を妨げる問題
43
+
44
+ ## 重要な制約
45
+ - spec.json の言語を使用
46
+ - 正確な完了率を計算
47
+ - 具体的な次のアクションコマンドを特定
48
+ </instructions>
49
+
50
+ ## ツールガイダンス
51
+ - **Read**: 最初に spec.json を読み込み、次に必要に応じて他のspecファイルを読み込み
52
+ - **慎重に解析**: tasks.md のチェックボックスから完了データを抽出
53
+ - **Glob** を使用してどのspecファイルが存在するか確認
54
+
55
+ ## 出力説明
56
+
57
+ spec.json で指定された言語でステータスレポートを提供:
58
+
59
+ **レポート構造**:
60
+ 1. **機能概要**: 名前、フェーズ、最終更新
61
+ 2. **フェーズステータス**: Requirements、Design、Tasks と完了率
62
+ 3. **タスク進捗**: タスクが存在する場合、X/Y 完了を表示
63
+ 4. **次のアクション**: 次に実行する具体的なコマンド
64
+ 5. **問題**: ブロッカーや不足要素
65
+
66
+ **フォーマット**: ステータス用の絵文字(✅/⏳/❌)で明確でスキャンしやすいフォーマット
67
+
68
+ ## 安全性とフォールバック
69
+
70
+ ### エラーシナリオ
71
+
72
+ **Specが見つからない**:
73
+ - **メッセージ**: "`$1` のspecが見つかりません。`.cursor/` で利用可能なspecを確認してください"
74
+ - **アクション**: `.cursor/` 内の利用可能な機能ディレクトリをリスト
75
+
76
+ **不完全なSpec**:
77
+ - **警告**: どのファイルが不足しているか特定
78
+ - **提案アクション**: 次のフェーズコマンドを指示
79
+
80
+ ### すべてのSpecをリスト
81
+
82
+ すべての利用可能なspecを見るには:
83
+ - 引数なしで実行またはワイルドカードを使用
84
+ - `.cursor/` 内のすべてのspecをステータスとともに表示
85
+
86
+ </output>
@@ -0,0 +1,155 @@
1
+ <meta>
2
+ description: 仕様の実装タスクを生成
3
+ argument-hint: <feature-name:$1> [-y:$2] [--sequential:$3]
4
+ </meta>
5
+
6
+ # 実装タスクジェネレーター
7
+
8
+ <background_information>
9
+ - **ミッション**: 技術設計を実行可能な作業項目に変換する、詳細で実行可能な実装タスクを生成
10
+ - **成功基準**:
11
+ - すべての要件が特定のタスクにマッピング
12
+ - タスクが適切なサイズ(各1-3時間)
13
+ - 適切な階層で明確なタスク進行
14
+ - 機能に焦点を当てた自然言語の説明
15
+ </background_information>
16
+
17
+ <instructions>
18
+ ## コアタスク
19
+ 承認済み要件と設計に基づいて、機能 **$1** の実装タスクを生成する。
20
+
21
+ ## 実行ステップ
22
+
23
+ ### ステップ1: コンテキストの読み込み
24
+
25
+ **必要なすべてのコンテキストを読み込み**:
26
+ - `.cursor/$1/spec.json`、`requirements.md`、`design.md`
27
+ - `.cursor/$1/tasks.md`(存在する場合、マージモード用)
28
+ - `.cursor/rules/frontend.md`(フロントエンド実装制約)
29
+
30
+ **承認の検証**:
31
+ - `-y` フラグが提供された場合($2 == "-y"): spec.json で要件と設計を自動承認
32
+ - それ以外: 両方が承認されていることを確認(されていない場合は停止、安全性とフォールバック参照)
33
+ - シーケンシャルモードの判定: `sequential = ($3 == "--sequential")`
34
+
35
+ 機能: $1
36
+ 機能ディレクトリ: .cursor/$1/
37
+ 自動承認: {$2 == "-y" なら true、それ以外 false}
38
+ シーケンシャルモード: {sequential なら true、それ以外 false}
39
+
40
+ 読み込むファイルパターン:
41
+ - .cursor/$1/*.{json,md}
42
+ - .cursor/rules/tasks-generation.md
43
+ - .cursor/rules/tasks-parallel-analysis.md(シーケンシャルモードが false の場合のみ含める)
44
+ - .cursor/templates/specs/tasks.md
45
+
46
+ モード: {tasks.md の存在に基づいて generate または merge}
47
+ 命令ハイライト:
48
+ - すべての要件をタスクにマップし、要件IDのみをリスト(カンマ区切り)、追加の説明なし
49
+ - 単一の実行可能なサブタスクはメジャータスクに昇格させ、コンテナのサマリーは簡潔に
50
+ - 並列基準を満たす場合のみ `(P)` マーカーを適用(シーケンシャルモードでは省略)
51
+ - 延期可能なMVP後の受け入れ基準フォーカスのテストカバレッジサブタスクには `- [ ]*` でマーク
52
+
53
+ ### ステップ2: 実装タスクの生成
54
+
55
+ **生成ルールとテンプレートの読み込み**:
56
+ - `.cursor/rules/tasks-generation.md` から原則を読み込み
57
+ - `sequential == false` の場合: `.cursor/rules/tasks-parallel-analysis.md` から並列判定基準を読み込み
58
+ - `.cursor/templates/specs/tasks.md` からフォーマットを読み込み(`(P)` マーカーをサポート)
59
+
60
+ **すべてのルールに従ってタスクリストを生成**:
61
+ - spec.json で指定された言語を使用
62
+ - すべての要件をタスクにマップ
63
+ - 要件カバレッジを文書化する際は、数値の要件IDのみをリスト(カンマ区切り)、説明的な接尾辞、括弧、翻訳、自由形式のラベルなし
64
+ - すべての設計コンポーネントが含まれていることを確認
65
+ - タスク進行が論理的で段階的であることを検証
66
+ - 単一サブタスク構造はメジャータスクに昇格させて折りたたみ、コンテナのみのメジャータスクで詳細を重複させない(テンプレートパターンに従う)
67
+ - 並列基準を満たすタスクに `(P)` マーカーを適用(`sequential == true` の場合はマーカーをスキップ)
68
+ - 延期可能なMVP後の受け入れ基準フォーカスのテストカバレッジサブタスクには `- [ ]*` でマーク
69
+ - 既存の tasks.md が見つかった場合、新しいコンテンツとマージ
70
+
71
+ ### ステップ3: 最終化
72
+
73
+ **書き込みと更新**:
74
+ - `.cursor/$1/tasks.md` を作成/更新
75
+ - spec.json メタデータを更新:
76
+ - `phase: "tasks-generated"` を設定
77
+ - `approvals.tasks.generated: true, approved: false` を設定
78
+ - `approvals.requirements.approved: true` を設定
79
+ - `approvals.design.approved: true` を設定
80
+ - `updated_at` タイムスタンプを更新
81
+
82
+ ## 重要な制約
83
+ - **ルールを厳密に遵守**: tasks-generation.md のすべての原則は必須
84
+ - **自然言語**: コード構造の詳細ではなく、何をするかを説明
85
+ - **完全なカバレッジ**: すべての要件がタスクにマップされなければならない
86
+ - **最大2レベル**: メジャータスクとサブタスクのみ(より深いネストなし)
87
+ - **連番**: メジャータスクは増分(1, 2, 3...)、重複なし
88
+ - **タスク統合**: すべてのタスクがシステムに接続(孤立した作業なし)
89
+ </instructions>
90
+
91
+ ## ツールガイダンス
92
+ - **最初に読み込み**: 生成前にすべてのコンテキスト、ルール、テンプレートを読み込み
93
+ - **最後に書き込み**: 完全な分析と検証後にのみ tasks.md を生成
94
+
95
+ ## 出力説明
96
+
97
+ spec.json で指定された言語で簡潔なサマリーを提供:
98
+
99
+ 1. **ステータス**: `.cursor/$1/tasks.md` にタスク生成完了を確認
100
+ 2. **タスクサマリー**:
101
+ - 合計: メジャータスク X 個、サブタスク Y 個
102
+ - Z 個のすべての要件をカバー
103
+ - 平均タスクサイズ: サブタスクあたり1-3時間
104
+ 3. **品質検証**:
105
+ - ✅ すべての要件がタスクにマップ
106
+ - ✅ タスク依存関係を検証済み
107
+ - ✅ テストタスクを含む
108
+ 4. **次のアクション**: タスクをレビューし、準備ができたら進行
109
+
110
+ **フォーマット**: 簡潔(200語以内)
111
+
112
+ ## 安全性とフォールバック
113
+
114
+ ### エラーシナリオ
115
+
116
+ **要件または設計が未承認**:
117
+ - **実行停止**: 承認済みの要件と設計なしでは続行不可
118
+ - **ユーザーメッセージ**: "タスク生成前に要件と設計の承認が必要です"
119
+ - **提案アクション**: "`/spec-tasks $1 -y` を実行して両方を自動承認して進行"
120
+
121
+ **要件または設計が見つからない**:
122
+ - **実行停止**: 両方のドキュメントが存在しなければならない
123
+ - **ユーザーメッセージ**: "`.cursor/$1/` に requirements.md または design.md がありません"
124
+ - **提案アクション**: "要件と設計フェーズを先に完了してください"
125
+
126
+ **不完全な要件カバレッジ**:
127
+ - **警告**: "すべての要件がタスクにマップされていません。カバレッジを確認してください。"
128
+ - **ユーザーアクション必要**: 意図的なギャップを確認するか、タスクを再生成
129
+
130
+ **テンプレート/ルールが見つからない**:
131
+ - **ユーザーメッセージ**: "`.cursor/rules/` または `.cursor/templates/` にテンプレートまたはルールファイルがありません"
132
+ - **フォールバック**: 警告付きでインライン基本構造を使用
133
+ - **提案アクション**: "リポジトリのセットアップを確認するか、テンプレートファイルを復元"
134
+ - **数値要件IDが見つからない**:
135
+ - **実行停止**: requirements.md のすべての要件には数値IDが必要。いずれかの要件に数値IDがない場合、停止してタスク生成前に requirements.md の修正を要求。
136
+
137
+ ### 次のフェーズ: 実装
138
+
139
+ **実装開始前**:
140
+ - **重要**: `/spec-impl` 実行前に会話履歴をクリアしてコンテキストを解放
141
+ - これは最初のタスク開始時またはタスク切り替え時に適用
142
+ - 新鮮なコンテキストでクリーンな状態と適切なタスクフォーカスを確保
143
+
144
+ **タスク承認後**:
145
+ - 特定のタスクを実行: `/spec-impl $1 1.1`(推奨: 各タスク間でコンテキストをクリア)
146
+ - 複数タスクを実行: `/spec-impl $1 1.1,1.2`(注意して使用、タスク間でコンテキストをクリア)
147
+ - 引数なし: `/spec-impl $1`(すべての保留タスクを実行 - コンテキスト膨張のため非推奨)
148
+
149
+ **修正が必要な場合**:
150
+ - フィードバックを提供し `/spec-tasks $1` を再実行
151
+ - 既存タスクは参照として使用(マージモード)
152
+
153
+ **注記**: 実装フェーズでは、適切なコンテキストと検証でタスク実行をガイド。
154
+
155
+ </output>
@@ -0,0 +1,93 @@
1
+ # 技術設計向けフルディスカバリープロセス
2
+
3
+ ## 目的
4
+ 技術設計が完全で正確かつ最新の情報に基づいていることを確保するため、包括的な調査と分析を実施する。
5
+
6
+ ## ディスカバリーステップ
7
+
8
+ ### 1. 要件分析
9
+ **要件を技術的ニーズにマッピング**
10
+ - EARSフォーマットからすべての機能要件を抽出
11
+ - 非機能要件を特定(パフォーマンス、セキュリティ、スケーラビリティ)
12
+ - 技術的制約と依存関係を決定
13
+ - コア技術課題をリスト
14
+
15
+ ### 2. 既存実装分析
16
+ **現在のシステムを理解**(修正/拡張する場合):
17
+ - コードベース構造とアーキテクチャパターンを分析
18
+ - 再利用可能なコンポーネント、サービス、ユーティリティをマッピング
19
+ - ドメイン境界とデータフローを特定
20
+ - 統合ポイントと依存関係を文書化
21
+ - アプローチを決定: 拡張 vs リファクタ vs ラップ
22
+
23
+ ### 3. 技術調査
24
+ **ベストプラクティスとソリューションを調査**:
25
+ - **WebSearchを使用**して以下を検索:
26
+ - 類似問題に対する最新のアーキテクチャパターン
27
+ - 技術スタックに対する業界のベストプラクティス
28
+ - 関連技術の最近の更新や変更
29
+ - よくある落とし穴と解決策
30
+
31
+ - **WebFetchを使用**して以下を分析:
32
+ - フレームワーク/ライブラリの公式ドキュメント
33
+ - APIリファレンスと使用例
34
+ - 移行ガイドと破壊的変更
35
+ - パフォーマンスベンチマークと比較
36
+
37
+ ### 4. 外部依存関係調査
38
+ **各外部サービス/ライブラリについて**:
39
+ - 公式ドキュメントとGitHubリポジトリを検索
40
+ - APIシグネチャと認証方法を検証
41
+ - 既存スタックとのバージョン互換性を確認
42
+ - レート制限と使用制限を調査
43
+ - コミュニティリソースと既知の問題を検索
44
+ - セキュリティの考慮事項を文書化
45
+ - 実装調査が必要なギャップを記録
46
+
47
+ ### 5. アーキテクチャパターンと境界分析
48
+ **アーキテクチャオプションを評価**:
49
+ - 関連パターンを比較(MVC、Clean、Hexagonal、Event-driven)
50
+ - 既存アーキテクチャとステアリング原則との適合性を評価
51
+ - チーム間の競合を回避するために必要なドメイン境界と所有権の継ぎ目を特定
52
+ - スケーラビリティへの影響と運用上の懸念を考慮
53
+ - 保守性とチームの専門知識を評価
54
+ - 推奨パターンと却下した代替案を `research.md` に文書化
55
+
56
+ ### 6. リスク評価
57
+ **技術的リスクを特定**:
58
+ - パフォーマンスボトルネックとスケーリング限界
59
+ - セキュリティ脆弱性と攻撃ベクトル
60
+ - 統合の複雑さと結合
61
+ - 技術的負債の生成 vs 解消
62
+ - 知識ギャップとトレーニングニーズ
63
+
64
+ ## 調査ガイドライン
65
+
66
+ ### 検索するタイミング
67
+ **常に検索するもの**:
68
+ - 外部APIドキュメントと更新
69
+ - 認証/認可のセキュリティベストプラクティス
70
+ - 特定されたボトルネックに対するパフォーマンス最適化テクニック
71
+ - 依存関係の最新バージョンと移行パス
72
+
73
+ **不確かな場合に検索するもの**:
74
+ - 特定のユースケースに対するアーキテクチャパターン
75
+ - データフォーマット/プロトコルの業界標準
76
+ - コンプライアンス要件(GDPR、HIPAAなど)
77
+ - 予想負荷に対するスケーラビリティアプローチ
78
+
79
+ ### 検索戦略
80
+ 1. 公式ソース(ドキュメント、GitHub)から開始
81
+ 2. 最近のブログ記事や記事をチェック(過去6ヶ月)
82
+ 3. 一般的な問題についてStack Overflowを確認
83
+ 4. 類似のオープンソース実装を調査
84
+
85
+ ## 出力要件
86
+ 設計決定に影響するすべての発見を共有テンプレートを使用して `research.md` にキャプチャ:
87
+ - アーキテクチャ、技術整合、コントラクトに影響する主要なインサイト
88
+ - 調査中に発見された制約
89
+ - 推奨アプローチと選択したアーキテクチャパターン(根拠付き)
90
+ - 却下した代替案とトレードオフ(設計決定セクションに文書化)
91
+ - コンポーネント & インターフェースコントラクトに情報を提供する更新されたドメイン境界
92
+ - リスクと軽減戦略
93
+ - 実装中にさらなる調査が必要なギャップ
@@ -0,0 +1,49 @@
1
+ # 拡張向け軽量ディスカバリープロセス
2
+
3
+ ## 目的
4
+ 機能拡張のための既存システムと統合要件を迅速に分析する。
5
+
6
+ ## 焦点を絞ったディスカバリーステップ
7
+
8
+ ### 1. 拡張ポイント分析
9
+ **統合アプローチを特定**:
10
+ - 既存の拡張ポイントまたはインターフェースを特定
11
+ - 変更スコープを決定(ファイル、コンポーネント)
12
+ - 従うべき既存パターンを確認
13
+ - 後方互換性の要件を特定
14
+
15
+ ### 2. 依存関係チェック
16
+ **互換性を検証**:
17
+ - 新しい依存関係のバージョン互換性を確認
18
+ - APIコントラクトが変更されていないことを検証
19
+ - パイプラインに破壊的変更がないことを確認
20
+
21
+ ### 3. クイック技術検証
22
+ **新しいライブラリの場合のみ**:
23
+ - WebSearchで公式ドキュメントを使用
24
+ - 基本的な使用パターンを検証
25
+ - 既知の互換性問題を確認
26
+ - ライセンス互換性を確認
27
+ - 主要な発見を `research.md` に記録(技術整合セクション)
28
+
29
+ ### 4. 統合リスク評価
30
+ **クイックリスクチェック**:
31
+ - 既存機能への影響
32
+ - パフォーマンスへの影響
33
+ - セキュリティの考慮事項
34
+ - テスト要件
35
+
36
+ ## フルディスカバリーにエスカレーションするタイミング
37
+ 以下を発見した場合、フルディスカバリーに切り替える:
38
+ - 重大なアーキテクチャ変更が必要
39
+ - 複雑な外部サービス統合
40
+ - セキュリティ上センシティブな実装
41
+ - パフォーマンスクリティカルなコンポーネント
42
+ - 未知またはドキュメントが不十分な依存関係
43
+
44
+ ## 出力要件
45
+ - 明確な統合アプローチ(境界への影響を `research.md` に記録)
46
+ - 変更するファイル/コンポーネントのリスト
47
+ - バージョン付きの新しい依存関係
48
+ - 統合リスクと軽減策
49
+ - テストの焦点領域
@@ -0,0 +1,182 @@
1
+ # 技術設計ルールと原則
2
+
3
+ ## コア設計原則
4
+
5
+ ### 1. 型安全は必須
6
+ - TypeScriptインターフェースで `any` 型を**絶対に使わない**
7
+ - すべてのパラメータと戻り値に明示的な型を定義
8
+ - エラーハンドリングにはDiscriminated Unionを使用
9
+ - ジェネリック制約を明確に指定
10
+
11
+ ### 2. 設計 vs 実装
12
+ - **HOWではなくWHATに焦点**
13
+ - コードではなく、インターフェースとコントラクトを定義
14
+ - 事前/事後条件で振る舞いを指定
15
+ - アルゴリズムではなく、アーキテクチャ決定を文書化
16
+
17
+ ### 3. ビジュアルコミュニケーション
18
+ - **シンプルな機能**: 基本的なコンポーネント図またはなし
19
+ - **中程度の複雑さ**: アーキテクチャ + データフロー
20
+ - **高い複雑さ**: 複数の図(アーキテクチャ、シーケンス、状態)
21
+ - **常に純粋なMermaid**: スタイリングなし、構造のみ
22
+
23
+ ### 4. コンポーネント設計ルール
24
+ - **単一責任**: コンポーネントごとに1つの明確な目的
25
+ - **明確な境界**: 明示的なドメイン所有権
26
+ - **依存方向**: アーキテクチャレイヤーに従う
27
+ - **インターフェース分離**: 最小限で焦点を絞ったインターフェース
28
+ - **チーム安全なインターフェース**: マージ競合なしに並列実装を可能にする境界設計
29
+ - **調査トレーサビリティ**: 境界決定とその根拠を `research.md` に記録
30
+
31
+ ### 5. データモデリング標準
32
+ - **ドメインファースト**: ビジネス概念から開始
33
+ - **整合性境界**: 明確な集約ルート
34
+ - **正規化**: パフォーマンスと整合性のバランス
35
+ - **進化**: スキーマ変更を計画
36
+
37
+ ### 6. エラーハンドリング哲学
38
+ - **フェイルファスト**: 早期に明確に検証
39
+ - **グレースフルデグラデーション**: 完全な失敗より部分的な機能
40
+ - **ユーザーコンテキスト**: アクション可能なエラーメッセージ
41
+ - **オブザーバビリティ**: 包括的なロギングとモニタリング
42
+
43
+ ### 7. 統合パターン
44
+ - **疎結合**: 依存を最小化
45
+ - **コントラクトファースト**: 実装前にインターフェースを定義
46
+ - **バージョニング**: API進化を計画
47
+ - **べき等性**: リトライ安全に設計
48
+ - **コントラクト可視性**: APIとイベントコントラクトを design.md に表示し、`research.md` からの詳細にリンク
49
+
50
+ ## ドキュメント標準
51
+
52
+ ### 言語とトーン
53
+ - **宣言的**: 「システムはユーザーを認証する」であり「システムはユーザーを認証すべき」ではない
54
+ - **正確**: 曖昧な説明より具体的な技術用語
55
+ - **簡潔**: 本質的な情報のみ
56
+ - **フォーマル**: プロフェッショナルな技術文書
57
+
58
+ ### 構造要件
59
+ - **階層的**: 明確なセクション構成
60
+ - **トレーサブル**: 要件からコンポーネントへのマッピング
61
+ - **完全**: 実装に必要なすべての側面をカバー
62
+ - **一貫性**: 全体で統一された用語
63
+ - **焦点を絞る**: design.md はアーキテクチャとコントラクトに集中。調査ログや長い比較は `research.md` に移動
64
+
65
+ ## セクション作成ガイダンス
66
+
67
+ ### 全体の順序
68
+ - デフォルトフロー: 概要 → 目標/非目標 → 要件トレーサビリティ → アーキテクチャ → 技術スタック → システムフロー → コンポーネント & インターフェース → データモデル → オプションセクション
69
+ - チームはトレーサビリティを前に移動したり、データモデルをアーキテクチャの近くに配置したりして明確さを改善できるが、セクション見出しは維持する
70
+ - 各セクション内で **サマリー → スコープ → 決定 → 影響/リスク** の順序に従い、レビュアーが一貫してスキャンできるようにする
71
+
72
+ ### 要件ID
73
+ - 要件は `2.1, 2.3` のようにプレフィックスなしで参照(「Requirement 2.1」ではない)
74
+ - すべての要件には数値IDが必要。要件に数値IDがない場合、続行前に `requirements.md` を修正する
75
+ - `N.M` 形式の数値IDを使用。`N` は requirements.md のトップレベル要件番号(例: Requirement 1 → 1.1, 1.2; Requirement 2 → 2.1, 2.2)
76
+ - すべてのコンポーネント、タスク、トレーサビリティ行で同じ正規の数値IDを参照
77
+
78
+ ### 技術スタック
79
+ - この機能に影響を受けるレイヤーのみを含める(フロントエンド、バックエンド、データ、メッセージング、インフラ)
80
+ - 各レイヤーでツール/ライブラリ + バージョン + 役割を指定。詳細な根拠、比較、ベンチマークは `research.md` に
81
+ - 既存システムを拡張する場合、現在のスタックからの逸脱を強調し、新しい依存関係をリスト
82
+
83
+ ### システムフロー
84
+ - 振る舞いを明確にする場合のみ図を追加:
85
+ - **シーケンス**: マルチステップのインタラクション
86
+ - **プロセス/状態**: 分岐ルールまたはライフサイクル
87
+ - **データ/イベント**: パイプラインまたは非同期パターン
88
+ - 常に純粋なMermaidを使用。複雑なフローがない場合、セクション全体を省略
89
+
90
+ ### 要件トレーサビリティ
91
+ - 標準テーブル(`Requirement | Summary | Components | Interfaces | Flows`)を使用してカバレッジを証明
92
+ - 単一の要件が1:1でコンポーネントにマップされる場合のみ、箇条書き形式に簡略化
93
+ - シンプルなマッピングにはコンポーネントサマリーテーブルを優先。複雑またはコンプライアンス重視の要件には完全なトレーサビリティテーブルを使用
94
+ - 要件やコンポーネントが変更されるたびにこのマッピングを再実行してドリフトを防ぐ
95
+
96
+ ### コンポーネント & インターフェース作成
97
+ - コンポーネントをドメイン/レイヤーでグループ化し、コンポーネントごとに1ブロックを提供
98
+ - コンポーネント、ドメイン、意図、要件カバレッジ、主要な依存関係、選択されたコントラクトをリストするサマリーテーブルから始める
99
+ - テーブルフィールド: Intent(1行)、Requirements(`2.1, 2.3`)、Owner/Reviewers(オプション)
100
+ - 依存関係テーブルは各エントリを Inbound/Outbound/External としてマークし、Criticality(`P0` ブロッキング、`P1` 高リスク、`P2` 情報提供)を割り当てる
101
+ - 外部依存関係調査のサマリーはここに。詳細な調査(APIシグネチャ、レート制限、移行ノート)は `research.md` に
102
+ - design.md は自己完結したレビュアー向け成果物でなければならない。`research.md` は背景としてのみ参照し、結論や決定はここに記載
103
+ - コントラクト: 関連するタイプのみをチェック(Service/API/Event/Batch/State)。チェックされていないタイプは後のコンポーネントセクションに表示しない
104
+ - サービスインターフェースはメソッドシグネチャ、入出力、エラーエンベロープを宣言。API/Event/Batchコントラクトはトリガー、ペイロード、配信、べき等性をカバーするスキーマテーブルまたは箇条書きが必要
105
+ - **統合 & 移行ノート**、**バリデーションフック**、**オープンクエスチョン / リスク** を使用してロールアウト戦略、オブザーバビリティ、未解決の決定を文書化
106
+ - 詳細密度ルール:
107
+ - **フルブロック**: 新しい境界を導入するコンポーネント(ロジックフック、共有サービス、外部統合、データレイヤー)
108
+ - **サマリーのみ**: 新しい境界のないプレゼンテーショナル/UIコンポーネント(必要に応じて短い実装ノート付き)
109
+ - 実装ノートは統合 / バリデーション / リスクを単一の箇条書きサブセクションに統合して重複を減らす
110
+ - 短いデータ(依存関係、コントラクト選択)にはリストまたはインライン記述子を優先。テーブルは複数項目を比較する場合のみ使用
111
+
112
+ ### 共有インターフェース & Props
113
+ - 繰り返しのUIコンポーネント用にベースインターフェース(例: `BaseUIPanelProps`)を定義し、差分のみをキャプチャするためにコンポーネントごとに拡張
114
+ - 新しいコントラクトを導入するフック、ユーティリティ、統合アダプターには完全なTypeScriptシグネチャを含める
115
+ - ベースコントラクトを再利用する場合、コードブロックを複製する代わりに明示的に参照(例: 「`BaseUIPanelProps` を `onSubmitAnswer` コールバックで拡張」)
116
+
117
+ ### データモデル
118
+ - ドメインモデルは集約、エンティティ、値オブジェクト、ドメインイベント、不変条件をカバー。関係が非自明な場合のみMermaid図を追加
119
+ - 論理データモデルは構造、インデックス、シャーディング、変更に関連するストレージ固有の考慮事項(イベントストア、KV/ワイドカラム)を明確にする
120
+ - データコントラクト & 統合セクションは、機能が境界を越える場合のAPIペイロード、イベントスキーマ、クロスサービス同期パターンを文書化
121
+ - 長い型定義やベンダー固有のオプションオブジェクトは design.md 内の補足参照セクションに配置し、関連セクションからリンク。調査ノートは `research.md` に
122
+ - 補足参照の使用はオプション。メインボディにコンテンツを残すと可読性が低下する場合のみ作成。すべての決定はメインセクションに表示し、design.md が単独で成立するようにする
123
+
124
+ ### エラー/テスト/セキュリティ/パフォーマンスセクション
125
+ - 機能固有の決定や逸脱のみを記録。ベースラインプラクティスについては組織全体の標準(ステアリング)にリンクまたは参照
126
+
127
+ ### 図とテキストの重複排除
128
+ - 図の内容を文章で逐語的に繰り返さない。テキストは、ビジュアルから明らかでない主要な決定、トレードオフ、影響を強調するために使用
129
+ - 決定が図の注釈で完全にキャプチャされている場合、短い「主要な決定」箇条書きで十分
130
+
131
+ ### 一般的な重複排除
132
+ - 概要、アーキテクチャ、コンポーネント間で同じ情報を繰り返さない。コンテキストが同じ場合は以前のセクションを参照
133
+ - 要件/コンポーネントの関係がサマリーテーブルでキャプチャされている場合、追加のニュアンスがない限り他で書き直さない
134
+
135
+ ## 図ガイドライン
136
+
137
+ ### 図を含めるタイミング
138
+ - **アーキテクチャ**: 3つ以上のコンポーネントまたは外部システムが相互作用する場合に構造図を使用
139
+ - **シーケンス**: コール/ハンドシェイクが複数ステップにまたがる場合にシーケンス図を描く
140
+ - **状態 / フロー**: 複雑な状態マシンまたはビジネスフローを専用の図でキャプチャ
141
+ - **ER**: 非自明なデータモデルにエンティティ関係図を提供
142
+ - **スキップ**: 軽微な単一コンポーネントの変更には通常図は不要
143
+
144
+ ### Mermaid要件
145
+ ```mermaid
146
+ graph TB
147
+ Client --> ApiGateway
148
+ ApiGateway --> ServiceA
149
+ ApiGateway --> ServiceB
150
+ ServiceA --> Database
151
+ ```
152
+
153
+ - **純粋なMermaidのみ** – カスタムスタイリングやサポートされていない構文を避ける
154
+ - **ノードID** – 英数字とアンダースコアのみ(例: `Client`, `ServiceA`)。`@`, `/`, または先頭の `-` は使用しない
155
+ - **ラベル** – シンプルな単語。括弧 `()`, 角括弧 `[]`, 引用符 `"`, スラッシュ `/` を埋め込まない
156
+ - ❌ `DnD[@dnd-kit/core]` → 無効なID(`@`)
157
+ - ❌ `UI[KanbanBoard(React)]` → 無効なラベル(`()`)
158
+ - ✅ `DndKit[dnd-kit core]` → ラベルにはプレーンテキストを使用し、技術詳細は付随する説明に記載
159
+ - ℹ️ Mermaid strict-mode は `Expecting 'SQE' ... got 'PS'` のようなエラーで失敗する。レンダリング前にラベルから句読点を削除
160
+ - **エッジ** – データまたは制御フローの方向を示す
161
+ - **グループ** – Mermaid subgraph を使用して関連コンポーネントをクラスタリングすることは許可。明確さのために控えめに使用
162
+
163
+ ## 品質メトリクス
164
+ ### 設計完全性チェックリスト
165
+ - すべての要件に対応
166
+ - 実装詳細の漏れなし
167
+ - 明確なコンポーネント境界
168
+ - 明示的なエラーハンドリング
169
+ - 包括的なテスト戦略
170
+ - セキュリティを考慮
171
+ - パフォーマンス目標を定義
172
+ - 移行パスが明確(該当する場合)
173
+
174
+ ### 避けるべき一般的なアンチパターン
175
+ ❌ 設計と実装の混在
176
+ ❌ 曖昧なインターフェース定義
177
+ ❌ 欠落したエラーシナリオ
178
+ ❌ 無視された非機能要件
179
+ ❌ 過度に複雑なアーキテクチャ
180
+ ❌ コンポーネント間の密結合
181
+ ❌ データ整合性戦略の欠如
182
+ ❌ 不完全な依存関係分析