cursor-sdd 1.0.11 → 1.0.14
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.
- package/README.md +24 -12
- package/assign/README.md +8 -1
- package/bin/setup.ts +45 -3
- package/new/commands/check-design.md +87 -0
- package/new/commands/design.md +188 -0
- package/new/commands/difference-check.md +83 -0
- package/new/commands/impl.md +109 -0
- package/new/commands/init.md +65 -0
- package/new/commands/requirements.md +91 -0
- package/new/commands/status.md +86 -0
- package/new/commands/tasks.md +155 -0
- package/new/rules/design-discovery-full.md +93 -0
- package/new/rules/design-discovery-light.md +49 -0
- package/new/rules/design-principles.md +182 -0
- package/new/rules/design-review.md +110 -0
- package/new/rules/ears-format.md +49 -0
- package/new/rules/frontend.md +90 -0
- package/new/rules/gap-analysis.md +145 -0
- package/new/rules/tasks-generation.md +131 -0
- package/new/rules/tasks-parallel-analysis.md +34 -0
- package/new/templates/specs/design.md +275 -0
- package/new/templates/specs/init.json +29 -0
- package/new/templates/specs/requirements-init.md +8 -0
- package/new/templates/specs/requirements.md +26 -0
- package/new/templates/specs/research.md +61 -0
- package/new/templates/specs/tasks.md +21 -0
- package/package.json +4 -6
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# タスク生成ルール
|
|
2
|
+
|
|
3
|
+
## コア原則
|
|
4
|
+
|
|
5
|
+
### 1. 自然言語による記述
|
|
6
|
+
コード構造ではなく、機能と成果に焦点を当てる。
|
|
7
|
+
|
|
8
|
+
**記述すべき内容**:
|
|
9
|
+
- 達成すべき機能
|
|
10
|
+
- ビジネスロジックと振る舞い
|
|
11
|
+
- 機能とケイパビリティ
|
|
12
|
+
- ドメイン言語と概念
|
|
13
|
+
- データの関係性とワークフロー
|
|
14
|
+
|
|
15
|
+
**避けるべき内容**:
|
|
16
|
+
- ファイルパスとディレクトリ構造
|
|
17
|
+
- 関数/メソッド名とシグネチャ
|
|
18
|
+
- 型定義とインターフェース
|
|
19
|
+
- クラス名とAPIコントラクト
|
|
20
|
+
- 具体的なデータ構造
|
|
21
|
+
|
|
22
|
+
**理由**: 実装詳細(ファイル、メソッド、型)は design.md で定義する。タスクは実行すべき機能的な作業を記述する。
|
|
23
|
+
|
|
24
|
+
### 2. タスクの統合と進行
|
|
25
|
+
|
|
26
|
+
**すべてのタスクは必ず**:
|
|
27
|
+
- 前のタスクの出力を基にする(孤立したコードを作らない)
|
|
28
|
+
- システム全体に接続する(宙ぶらりんの機能を作らない)
|
|
29
|
+
- 段階的に進行する(複雑さの大きな飛躍を避ける)
|
|
30
|
+
- シーケンスの早い段階でコア機能を検証する
|
|
31
|
+
- design.md で定義されたアーキテクチャ境界を尊重する(アーキテクチャパターン & 境界マップ)
|
|
32
|
+
- design.md に記載されたインターフェースコントラクトを遵守する
|
|
33
|
+
- メジャータスクのサマリーは控えめに使用し、作業が子タスクで完全にカバーされている場合は詳細項目を省略する
|
|
34
|
+
|
|
35
|
+
**最後に統合タスク**を配置し、すべてを接続する。
|
|
36
|
+
|
|
37
|
+
### 3. 柔軟なタスクサイズ
|
|
38
|
+
|
|
39
|
+
**ガイドライン**:
|
|
40
|
+
- **メジャータスク**: 論理的に必要な数のサブタスク(凝集性でグループ化)
|
|
41
|
+
- **サブタスク**: 各1〜3時間、サブタスクごとに3〜10の詳細
|
|
42
|
+
- 細かすぎず、広すぎないバランス
|
|
43
|
+
|
|
44
|
+
**任意の数字に合わせない** - 論理的なグループ化で構造を決定する。
|
|
45
|
+
|
|
46
|
+
### 4. 要件マッピング
|
|
47
|
+
|
|
48
|
+
**各タスク詳細セクションの末尾に**:
|
|
49
|
+
- `_Requirements: X.X, Y.Y_` として**数値の要件IDのみ**をリスト(カンマ区切り)。説明文、括弧、翻訳、自由形式のラベルは付けない。
|
|
50
|
+
- 横断的な要件については、関連するすべての要件IDをリストする。すべての要件には requirements.md に数値IDが必要。IDがない場合は、タスク生成前に requirements.md を修正する。
|
|
51
|
+
- 必要に応じて design.md のコンポーネント/インターフェースを参照(例: `_Contracts: AuthService API`)
|
|
52
|
+
|
|
53
|
+
### 5. コードのみにフォーカス
|
|
54
|
+
|
|
55
|
+
**含めるもの**:
|
|
56
|
+
- コーディングタスク(実装)
|
|
57
|
+
- テストタスク(ユニット、統合、E2E)
|
|
58
|
+
- 技術セットアップタスク(インフラ、設定)
|
|
59
|
+
|
|
60
|
+
**除外するもの**:
|
|
61
|
+
- デプロイタスク
|
|
62
|
+
- ドキュメントタスク
|
|
63
|
+
- ユーザーテスト
|
|
64
|
+
- マーケティング/ビジネス活動
|
|
65
|
+
|
|
66
|
+
### オプションのテストカバレッジタスク
|
|
67
|
+
|
|
68
|
+
- 設計が既に機能カバレッジを保証しており、迅速なMVPデリバリーが優先される場合、純粋なテスト指向のフォローアップ作業(例: ベースラインレンダリング/ユニットテスト)は `- [ ]*` チェックボックス形式を使用して**オプション**としてマークする。
|
|
69
|
+
- オプションマーカーは、サブタスクが詳細項目で requirements.md の受け入れ基準を直接参照している場合のみ適用する。
|
|
70
|
+
- 実装作業や統合上重要な検証をオプションとしてマークしない - `*` はMVP後に再検討できる補助的/延期可能なテストカバレッジに限定する。
|
|
71
|
+
|
|
72
|
+
## タスク階層ルール
|
|
73
|
+
|
|
74
|
+
### 最大2レベル
|
|
75
|
+
- **レベル1**: メジャータスク(1, 2, 3, 4...)
|
|
76
|
+
- **レベル2**: サブタスク(1.1, 1.2, 2.1, 2.2...)
|
|
77
|
+
- **より深いネストは不可**(1.1.1 は不可)
|
|
78
|
+
- メジャータスクに実行可能な項目が1つしか含まれない場合、構造を折りたたんでサブタスクをメジャーレベルに昇格させる(例: `1.1` を `1.` に置き換える)
|
|
79
|
+
- メジャータスクが純粋にコンテナとして存在する場合、チェックボックスの説明を簡潔に保ち、詳細項目の重複を避ける - 詳細はサブタスクに記載する。
|
|
80
|
+
|
|
81
|
+
### 連番
|
|
82
|
+
- メジャータスクは必ず増分: 1, 2, 3, 4, 5...
|
|
83
|
+
- サブタスクはメジャータスクごとにリセット: 1.1, 1.2, 次に 2.1, 2.2...
|
|
84
|
+
- メジャータスク番号を繰り返さない
|
|
85
|
+
|
|
86
|
+
### 並列分析(デフォルト)
|
|
87
|
+
- 明示的に無効化されない限り(例: `--sequential` フラグ)、並列分析は有効と想定する。
|
|
88
|
+
- **すべて**の条件が満たされた場合に並行実行可能なタスクを特定する:
|
|
89
|
+
- 他の未完了タスクへのデータ依存がない
|
|
90
|
+
- ファイルやリソースの競合がない
|
|
91
|
+
- 他タスクからの事前レビュー/承認が不要
|
|
92
|
+
- 特定された並列タスクがアーキテクチャパターン & 境界マップで定義された別々の境界内で動作することを検証する。
|
|
93
|
+
- design.md のAPI/イベントコントラクトが競合を引き起こす形で重複していないことを確認する。
|
|
94
|
+
- 並列実行可能な各タスクのタスク番号の直後に `(P)` を付ける:
|
|
95
|
+
- 例: `- [ ] 2.1 (P) バックグラウンドワーカーを構築`
|
|
96
|
+
- 適切な場合、メジャータスクとサブタスクの両方に適用する。
|
|
97
|
+
- シーケンシャルモードが要求された場合、`(P)` マーカーは完全に省略する。
|
|
98
|
+
- 並列タスクを論理的にグループ化し(可能な限り同じ親の下)、順序に関する注意事項を詳細項目で強調する。
|
|
99
|
+
- タスクが似ているように見えても `(P)` を妨げる依存関係を明示的に記載する。
|
|
100
|
+
|
|
101
|
+
### チェックボックス形式
|
|
102
|
+
```markdown
|
|
103
|
+
- [ ] 1. メジャータスクの説明
|
|
104
|
+
- [ ] 1.1 サブタスクの説明
|
|
105
|
+
- 詳細項目1
|
|
106
|
+
- 詳細項目2
|
|
107
|
+
- _Requirements: X.X_
|
|
108
|
+
|
|
109
|
+
- [ ] 1.2 サブタスクの説明
|
|
110
|
+
- 詳細項目...
|
|
111
|
+
- _Requirements: Y.Y_
|
|
112
|
+
|
|
113
|
+
- [ ] 1.3 サブタスクの説明
|
|
114
|
+
- 詳細項目...
|
|
115
|
+
- _Requirements: Z.Z, W.W_
|
|
116
|
+
|
|
117
|
+
- [ ] 2. 次のメジャータスク(1ではない!)
|
|
118
|
+
- [ ] 2.1 サブタスク...
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 要件カバレッジ
|
|
122
|
+
|
|
123
|
+
**必須チェック**:
|
|
124
|
+
- requirements.md のすべての要件がカバーされている必要がある
|
|
125
|
+
- すべての要件IDとタスクマッピングを相互参照
|
|
126
|
+
- ギャップが見つかった場合: 要件または設計フェーズに戻る
|
|
127
|
+
- 対応するタスクがない要件があってはならない
|
|
128
|
+
|
|
129
|
+
`N.M` 形式の数値要件IDを使用する。`N` は requirements.md のトップレベル要件番号(例: Requirement 1 → 1.1, 1.2; Requirement 2 → 2.1, 2.2)、`M` はその要件グループ内のローカルインデックス。
|
|
130
|
+
|
|
131
|
+
意図的に延期した要件は根拠とともに文書化する。
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 並列タスク分析ルール
|
|
2
|
+
|
|
3
|
+
## 目的
|
|
4
|
+
`tasks.md` 生成時に、安全に並列実行できる実装タスクを特定するための一貫した方法を提供する。
|
|
5
|
+
|
|
6
|
+
## タスクを並列実行可能と判断する条件
|
|
7
|
+
以下の**すべて**が真の場合のみ、タスクを並列実行可能とマークする:
|
|
8
|
+
|
|
9
|
+
1. **データ依存関係がない**: 未完了タスクへの依存がない
|
|
10
|
+
2. **ファイル・リソース競合がない**: 共有される可変リソースに触れない
|
|
11
|
+
3. **事前レビュー/承認が不要**: 他タスクからのレビューや承認を事前に必要としない
|
|
12
|
+
4. **環境/セットアップ完了済み**: タスクに必要な環境・セットアップが既に満たされているか、タスク自体に含まれている
|
|
13
|
+
|
|
14
|
+
## マーキング規則
|
|
15
|
+
- 該当するタスクには、数字識別子の直後に `(P)` を付ける
|
|
16
|
+
- 例: `- [ ] 2.1 (P) メール用バックグラウンドワーカーを構築`
|
|
17
|
+
- 適切な場合、メジャータスクとサブタスクの両方に `(P)` を適用する
|
|
18
|
+
- 逐次実行が要求された場合(例: `--sequential` フラグ)、`(P)` マーカーは完全に省略する
|
|
19
|
+
- チェックボックスの括弧の**外側**に `(P)` を置き、完了状態との混同を避ける
|
|
20
|
+
|
|
21
|
+
## グループ化と順序のガイドライン
|
|
22
|
+
- 同じテーマの作業に属する場合、並列タスクを同じ親の下にグループ化する
|
|
23
|
+
- 明らかな前提条件や注意事項は詳細項目に記載する(例: 「1.2のスキーママイグレーションが必要」)
|
|
24
|
+
- 2つのタスクが似ているが並列安全でない場合、ブロッキング依存関係を明示的に記載する
|
|
25
|
+
- コンテナのみのメジャータスク(自身の実行可能な詳細項目を持たないもの)に `(P)` をマークするのは避け、サブタスクレベルで並列実行を評価する
|
|
26
|
+
|
|
27
|
+
## 品質チェックリスト
|
|
28
|
+
タスクに `(P)` をマークする前に、以下を確認する:
|
|
29
|
+
|
|
30
|
+
- このタスクを同時実行してもマージやデプロイの競合が発生しないことを確認
|
|
31
|
+
- 共有状態の期待値を詳細項目に記載
|
|
32
|
+
- 実装が独立してテスト可能であることを確認
|
|
33
|
+
|
|
34
|
+
いずれかのチェックが失敗した場合、タスクに `(P)` を**マークせず**、タスク詳細で依存関係を説明する。
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
# 設計ドキュメントテンプレート
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
**目的**: 実装者が異なる場合でも一貫した実装を保証するために、十分な詳細を提供し、解釈のズレを防ぐ。
|
|
5
|
+
|
|
6
|
+
**アプローチ**:
|
|
7
|
+
- 実装の判断に直接影響する必須セクションを含める
|
|
8
|
+
- 実装エラーの防止に重要でない限り、オプションセクションは省略
|
|
9
|
+
- 機能の複雑さに応じた詳細レベル
|
|
10
|
+
- 長い文章よりも図表やテーブルを使用
|
|
11
|
+
|
|
12
|
+
**警告**: 1000行に近づくと機能の複雑さが過度であり、設計の簡素化が必要な可能性がある。
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
セクションの順序は、明確さが向上する場合に変更可能(例:要件トレーサビリティを前方に配置、データモデルをアーキテクチャの近くに移動)。各セクション内では **概要 → スコープ → 決定事項 → 影響/リスク** の流れを維持し、レビュアーが一貫してスキャンできるようにする。
|
|
16
|
+
|
|
17
|
+
## 概要
|
|
18
|
+
2-3段落以内
|
|
19
|
+
**目的**: この機能は[対象ユーザー]に[具体的な価値]を提供する。
|
|
20
|
+
**ユーザー**: [対象ユーザーグループ]が[特定のワークフロー]でこれを利用する。
|
|
21
|
+
**影響**(該当する場合): 現在の[システム状態]を[具体的な変更]によって変更する。
|
|
22
|
+
|
|
23
|
+
### ゴール
|
|
24
|
+
- 主要目標1
|
|
25
|
+
- 主要目標2
|
|
26
|
+
- 成功基準
|
|
27
|
+
|
|
28
|
+
### 非ゴール
|
|
29
|
+
- 明示的に除外する機能
|
|
30
|
+
- 現在のスコープ外の将来の検討事項
|
|
31
|
+
- 延期する連携ポイント
|
|
32
|
+
|
|
33
|
+
## アーキテクチャ
|
|
34
|
+
|
|
35
|
+
> 詳細な調査ノートは`research.md`を参照(背景情報のみ)。レビュアーのために設計ドキュメントを自己完結型に保ち、すべての決定事項と契約をここに記載する。
|
|
36
|
+
> 重要な決定事項はテキストで記述し、図で構造の詳細を伝える—同じ情報を文章で繰り返さない。
|
|
37
|
+
|
|
38
|
+
### 既存アーキテクチャ分析(該当する場合)
|
|
39
|
+
既存システムを変更する場合:
|
|
40
|
+
- 現在のアーキテクチャパターンと制約
|
|
41
|
+
- 尊重すべき既存のドメイン境界
|
|
42
|
+
- 維持すべき連携ポイント
|
|
43
|
+
- 対処または回避する技術的負債
|
|
44
|
+
|
|
45
|
+
### アーキテクチャパターン&境界マップ
|
|
46
|
+
**推奨**: 選択したアーキテクチャパターンとシステム境界を示すMermaid図を含める(複雑な機能では必須、単純な追加ではオプション)
|
|
47
|
+
|
|
48
|
+
**アーキテクチャ統合**:
|
|
49
|
+
- 選択パターン: [名前と簡潔な理由]
|
|
50
|
+
- ドメイン/機能境界: [競合を避けるための責任分離方法]
|
|
51
|
+
- 維持する既存パターン: [主要パターンのリスト]
|
|
52
|
+
- 新コンポーネントの理由: [各コンポーネントが必要な理由]
|
|
53
|
+
- ステアリング準拠: [維持する原則]
|
|
54
|
+
|
|
55
|
+
### 技術スタック
|
|
56
|
+
|
|
57
|
+
| レイヤー | 選択 / バージョン | 機能での役割 | 備考 |
|
|
58
|
+
|---------|-----------------|-------------|------|
|
|
59
|
+
| フロントエンド / CLI | | | |
|
|
60
|
+
| バックエンド / サービス | | | |
|
|
61
|
+
| データ / ストレージ | | | |
|
|
62
|
+
| メッセージング / イベント | | | |
|
|
63
|
+
| インフラ / ランタイム | | | |
|
|
64
|
+
|
|
65
|
+
> 理由は簡潔に。より深い内容(トレードオフ、ベンチマーク)が必要な場合は、短い要約と参照セクションおよび`research.md`の調査ノートへのポインタを追加。
|
|
66
|
+
|
|
67
|
+
## システムフロー
|
|
68
|
+
|
|
69
|
+
非自明なフローを説明するために必要な図のみを提供。純粋なMermaid構文を使用。一般的なパターン:
|
|
70
|
+
- シーケンス(複数パーティのインタラクション)
|
|
71
|
+
- プロセス/状態(分岐ロジックまたはライフサイクル)
|
|
72
|
+
- データ/イベントフロー(パイプライン、非同期メッセージング)
|
|
73
|
+
|
|
74
|
+
単純なCRUD変更ではこのセクション全体をスキップ。
|
|
75
|
+
> フローレベルの決定(例:ゲート条件、リトライ)は図の後に簡潔に記述し、各ステップを繰り返さない。
|
|
76
|
+
|
|
77
|
+
## 要件トレーサビリティ
|
|
78
|
+
|
|
79
|
+
要件が複数のドメインにまたがる複雑な機能やコンプライアンス重視の機能に使用。単純な1:1マッピングはコンポーネント概要テーブルに依存可能。
|
|
80
|
+
|
|
81
|
+
各要件ID(例:`2.1`)を実現する設計要素にマッピング。
|
|
82
|
+
|
|
83
|
+
| 要件 | 概要 | コンポーネント | インターフェース | フロー |
|
|
84
|
+
|------|------|--------------|----------------|--------|
|
|
85
|
+
| 1.1 | | | | |
|
|
86
|
+
| 1.2 | | | | |
|
|
87
|
+
|
|
88
|
+
> 単一のコンポーネントが横断的な関心事なしに単一の要件を満たす場合のみ、このセクションを省略。
|
|
89
|
+
|
|
90
|
+
## コンポーネントとインターフェース
|
|
91
|
+
|
|
92
|
+
コンポーネント別の詳細に入る前のクイックリファレンス。
|
|
93
|
+
|
|
94
|
+
- 概要はテーブルまたはコンパクトなリスト形式。テーブル例:
|
|
95
|
+
| コンポーネント | ドメイン/レイヤー | 意図 | 要件カバレッジ | 主要な依存関係 (P0/P1) | 契約 |
|
|
96
|
+
|-|-|-|-|-|-|
|
|
97
|
+
| ExampleComponent | UI | XYZを表示 | 1, 2 | GameProvider (P0), MapPanel (P1) | Service, State |
|
|
98
|
+
- 新しい境界を導入するコンポーネント(例:ロジックフック、外部連携、永続化)のみが完全な詳細ブロックを必要とする。単純なプレゼンテーションコンポーネントは概要行と短い実装ノートで十分。
|
|
99
|
+
|
|
100
|
+
ドメインまたはアーキテクチャレイヤーごとに詳細ブロックをグループ化。各詳細コンポーネントについて、要件IDを`2.1, 2.3`としてリスト(「要件」は省略)。複数のUIコンポーネントが同じ契約を共有する場合、コードブロックを重複させずに基本インターフェース/props定義を参照。
|
|
101
|
+
|
|
102
|
+
### [ドメイン / レイヤー]
|
|
103
|
+
|
|
104
|
+
#### [コンポーネント名]
|
|
105
|
+
|
|
106
|
+
| フィールド | 詳細 |
|
|
107
|
+
|----------|------|
|
|
108
|
+
| 意図 | 責任の1行説明 |
|
|
109
|
+
| 要件 | 2.1, 2.3 |
|
|
110
|
+
| オーナー / レビュアー | (オプション) |
|
|
111
|
+
|
|
112
|
+
**責任と制約**
|
|
113
|
+
- 主な責任
|
|
114
|
+
- ドメイン境界とトランザクションスコープ
|
|
115
|
+
- データ所有権 / 不変条件
|
|
116
|
+
|
|
117
|
+
**依存関係**
|
|
118
|
+
- インバウンド: コンポーネント/サービス名 — 目的 (重要度)
|
|
119
|
+
- アウトバウンド: コンポーネント/サービス名 — 目的 (重要度)
|
|
120
|
+
- 外部: サービス/ライブラリ — 目的 (重要度)
|
|
121
|
+
|
|
122
|
+
外部依存関係の調査結果をここに要約。より深い調査(APIシグネチャ、レート制限、移行ノート)は`research.md`に記載。
|
|
123
|
+
|
|
124
|
+
**契約**: Service [ ] / API [ ] / Event [ ] / Batch [ ] / State [ ] ← 該当するもののみチェック。
|
|
125
|
+
|
|
126
|
+
##### サービスインターフェース
|
|
127
|
+
```typescript
|
|
128
|
+
interface [ComponentName]Service {
|
|
129
|
+
methodName(input: InputType): Result<OutputType, ErrorType>;
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
- 事前条件:
|
|
133
|
+
- 事後条件:
|
|
134
|
+
- 不変条件:
|
|
135
|
+
|
|
136
|
+
##### API契約
|
|
137
|
+
| メソッド | エンドポイント | リクエスト | レスポンス | エラー |
|
|
138
|
+
|---------|--------------|-----------|----------|--------|
|
|
139
|
+
| POST | /api/resource | CreateRequest | Resource | 400, 409, 500 |
|
|
140
|
+
|
|
141
|
+
##### イベント契約
|
|
142
|
+
- 発行イベント:
|
|
143
|
+
- 購読イベント:
|
|
144
|
+
- 順序 / 配信保証:
|
|
145
|
+
|
|
146
|
+
##### バッチ / ジョブ契約
|
|
147
|
+
- トリガー:
|
|
148
|
+
- 入力 / 検証:
|
|
149
|
+
- 出力 / 宛先:
|
|
150
|
+
- 冪等性 & 復旧:
|
|
151
|
+
|
|
152
|
+
##### 状態管理
|
|
153
|
+
- 状態モデル:
|
|
154
|
+
- 永続化 & 一貫性:
|
|
155
|
+
- 並行性戦略:
|
|
156
|
+
|
|
157
|
+
**実装ノート**
|
|
158
|
+
- 統合:
|
|
159
|
+
- 検証:
|
|
160
|
+
- リスク:
|
|
161
|
+
|
|
162
|
+
## データモデル
|
|
163
|
+
|
|
164
|
+
この機能で変更されるデータ環境の部分に焦点を当てる。
|
|
165
|
+
|
|
166
|
+
### ドメインモデル
|
|
167
|
+
- 集約とトランザクション境界
|
|
168
|
+
- エンティティ、値オブジェクト、ドメインイベント
|
|
169
|
+
- ビジネスルール & 不変条件
|
|
170
|
+
- 複雑な関係のオプションMermaid図
|
|
171
|
+
|
|
172
|
+
### 論理データモデル
|
|
173
|
+
|
|
174
|
+
**構造定義**:
|
|
175
|
+
- エンティティ関係とカーディナリティ
|
|
176
|
+
- 属性とその型
|
|
177
|
+
- 自然キーと識別子
|
|
178
|
+
- 参照整合性ルール
|
|
179
|
+
|
|
180
|
+
**一貫性 & 整合性**:
|
|
181
|
+
- トランザクション境界
|
|
182
|
+
- カスケードルール
|
|
183
|
+
- 時間的側面(バージョニング、監査)
|
|
184
|
+
|
|
185
|
+
### 物理データモデル
|
|
186
|
+
**含める場合**: 実装で特定のストレージ設計決定が必要な場合
|
|
187
|
+
|
|
188
|
+
**リレーショナルデータベースの場合**:
|
|
189
|
+
- データ型を含むテーブル定義
|
|
190
|
+
- 主キー/外部キーと制約
|
|
191
|
+
- インデックスとパフォーマンス最適化
|
|
192
|
+
- スケールのためのパーティショニング戦略
|
|
193
|
+
|
|
194
|
+
**ドキュメントストアの場合**:
|
|
195
|
+
- コレクション構造
|
|
196
|
+
- 埋め込み vs 参照の決定
|
|
197
|
+
- シャーディングキー設計
|
|
198
|
+
- インデックス定義
|
|
199
|
+
|
|
200
|
+
**イベントストアの場合**:
|
|
201
|
+
- イベントスキーマ定義
|
|
202
|
+
- ストリーム集約戦略
|
|
203
|
+
- スナップショットポリシー
|
|
204
|
+
- プロジェクション定義
|
|
205
|
+
|
|
206
|
+
**Key-Value/ワイドカラムストアの場合**:
|
|
207
|
+
- キー設計パターン
|
|
208
|
+
- カラムファミリーまたは値構造
|
|
209
|
+
- TTLとコンパクション戦略
|
|
210
|
+
|
|
211
|
+
### データ契約 & 連携
|
|
212
|
+
|
|
213
|
+
**APIデータ転送**
|
|
214
|
+
- リクエスト/レスポンススキーマ
|
|
215
|
+
- バリデーションルール
|
|
216
|
+
- シリアライゼーション形式(JSON、Protobufなど)
|
|
217
|
+
|
|
218
|
+
**イベントスキーマ**
|
|
219
|
+
- 発行イベント構造
|
|
220
|
+
- スキーマバージョニング戦略
|
|
221
|
+
- 後方/前方互換性ルール
|
|
222
|
+
|
|
223
|
+
**クロスサービスデータ管理**
|
|
224
|
+
- 分散トランザクションパターン(Saga、2PC)
|
|
225
|
+
- データ同期戦略
|
|
226
|
+
- 結果整合性の処理
|
|
227
|
+
|
|
228
|
+
この機能に関連しないサブセクションはスキップ。
|
|
229
|
+
|
|
230
|
+
## エラーハンドリング
|
|
231
|
+
|
|
232
|
+
### エラー戦略
|
|
233
|
+
各エラータイプの具体的なエラーハンドリングパターンと復旧メカニズム。
|
|
234
|
+
|
|
235
|
+
### エラーカテゴリとレスポンス
|
|
236
|
+
**ユーザーエラー** (4xx): 無効な入力 → フィールドレベル検証; 未認証 → 認証ガイダンス; 未検出 → ナビゲーションヘルプ
|
|
237
|
+
**システムエラー** (5xx): インフラ障害 → グレースフルデグラデーション; タイムアウト → サーキットブレーカー; 枯渇 → レート制限
|
|
238
|
+
**ビジネスロジックエラー** (422): ルール違反 → 条件説明; 状態競合 → 遷移ガイダンス
|
|
239
|
+
|
|
240
|
+
**プロセスフロー可視化**(複雑なビジネスロジックが存在する場合):
|
|
241
|
+
複雑なビジネスワークフローを伴うエラーシナリオのみMermaidフローチャートを含める。
|
|
242
|
+
|
|
243
|
+
### モニタリング
|
|
244
|
+
エラー追跡、ロギング、ヘルスモニタリングの実装。
|
|
245
|
+
|
|
246
|
+
## テスト戦略
|
|
247
|
+
|
|
248
|
+
### デフォルトセクション(ドメインに合わせて名前/セクションを調整)
|
|
249
|
+
- ユニットテスト: コア機能/モジュールから3〜5項目(例:認証メソッド、サブスクリプションロジック)
|
|
250
|
+
- 統合テスト: 3〜5のクロスコンポーネントフロー(例:Webhookハンドリング、通知)
|
|
251
|
+
- E2E/UIテスト(該当する場合): 3〜5の重要なユーザーパス(例:フォーム、ダッシュボード)
|
|
252
|
+
- パフォーマンス/負荷テスト(該当する場合): 3〜4項目(例:並行性、大量操作)
|
|
253
|
+
|
|
254
|
+
## オプションセクション(関連する場合に含める)
|
|
255
|
+
|
|
256
|
+
### セキュリティ考慮事項
|
|
257
|
+
_認証、機密データ、外部連携、またはユーザー権限を扱う機能に使用。この機能に固有の決定のみを記載。ベースラインコントロールはステアリングドキュメントに委ねる。_
|
|
258
|
+
- 脅威モデリング、セキュリティコントロール、コンプライアンス要件
|
|
259
|
+
- 認証・認可パターン
|
|
260
|
+
- データ保護とプライバシーの考慮事項
|
|
261
|
+
|
|
262
|
+
### パフォーマンス & スケーラビリティ
|
|
263
|
+
_パフォーマンス目標、高負荷、またはスケーリングの懸念がある場合に使用。機能固有の目標やトレードオフのみを記録し、一般的なプラクティスはステアリングドキュメントに依存。_
|
|
264
|
+
- 目標メトリクスと測定戦略
|
|
265
|
+
- スケーリングアプローチ(水平/垂直)
|
|
266
|
+
- キャッシュ戦略と最適化技術
|
|
267
|
+
|
|
268
|
+
### 移行戦略
|
|
269
|
+
スキーマ/データ移動が必要な場合、移行フェーズを示すMermaidフローチャートを含める。
|
|
270
|
+
- フェーズ分割、ロールバックトリガー、検証チェックポイント
|
|
271
|
+
|
|
272
|
+
## 参考資料(オプション)
|
|
273
|
+
- メイン本文に情報を残すと可読性が損なわれる場合のみこのセクションを作成(例:非常に長いTypeScript定義、ベンダーオプションマトリックス、網羅的なスキーマテーブル)。意思決定のコンテキストはメインセクションに残し、設計を自己完結型に保つ。
|
|
274
|
+
- 大きなスニペットをインラインで含めず、メインテキストから参考資料へのリンクを張る。
|
|
275
|
+
- 背景調査ノートと比較は引き続き`research.md`に記載するが、その結論はメイン設計に要約する必要がある。
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"project_name": "{{PROJECT_NAME}}",
|
|
3
|
+
"feature_name": "{{FEATURE_NAME}}",
|
|
4
|
+
"feature_key": "{{FEATURE_KEY}}",
|
|
5
|
+
"feature_path": "{{FEATURE_PATH}}",
|
|
6
|
+
"mode": "{{INIT_MODE}}",
|
|
7
|
+
"project_summary": "{{PROJECT_DESCRIPTION}}",
|
|
8
|
+
"created_at": "{{TIMESTAMP}}",
|
|
9
|
+
"updated_at": "{{TIMESTAMP}}",
|
|
10
|
+
"language": "ja",
|
|
11
|
+
"phase": "initialized",
|
|
12
|
+
"approvals": {
|
|
13
|
+
"requirements": {
|
|
14
|
+
"generated": false,
|
|
15
|
+
"approved": false
|
|
16
|
+
},
|
|
17
|
+
"design": {
|
|
18
|
+
"generated": false,
|
|
19
|
+
"approved": false
|
|
20
|
+
},
|
|
21
|
+
"tasks": {
|
|
22
|
+
"generated": false,
|
|
23
|
+
"approved": false
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"ready_for_implementation": false
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# 要件ドキュメント
|
|
2
|
+
|
|
3
|
+
## はじめに
|
|
4
|
+
{{INTRODUCTION}}
|
|
5
|
+
|
|
6
|
+
## 要件
|
|
7
|
+
|
|
8
|
+
### 要件 1: {{REQUIREMENT_AREA_1}}
|
|
9
|
+
<!-- 要件の見出しには必ず数字のIDを先頭に付ける(例:「要件 1: ...」、「1. 概要」、「2 機能: ...」)。「要件 A」のようなアルファベットIDは許可されていない。 -->
|
|
10
|
+
**目的:** {{ROLE}}として、{{CAPABILITY}}したい。それにより{{BENEFIT}}を得られる。
|
|
11
|
+
|
|
12
|
+
#### 受け入れ基準
|
|
13
|
+
1. [イベント]が発生した場合、[システム]は[レスポンス/アクション]を行う
|
|
14
|
+
2. [トリガー]の場合、[システム]は[レスポンス/アクション]を行う
|
|
15
|
+
3. [前提条件]の間、[システム]は[レスポンス/アクション]を行う
|
|
16
|
+
4. [機能が含まれる]場合、[システム]は[レスポンス/アクション]を行う
|
|
17
|
+
5. [システム]は[レスポンス/アクション]を行う
|
|
18
|
+
|
|
19
|
+
### 要件 2: {{REQUIREMENT_AREA_2}}
|
|
20
|
+
**目的:** {{ROLE}}として、{{CAPABILITY}}したい。それにより{{BENEFIT}}を得られる。
|
|
21
|
+
|
|
22
|
+
#### 受け入れ基準
|
|
23
|
+
1. [イベント]が発生した場合、[システム]は[レスポンス/アクション]を行う
|
|
24
|
+
2. [イベント]かつ[条件]の場合、[システム]は[レスポンス/アクション]を行う
|
|
25
|
+
|
|
26
|
+
<!-- 追加の要件は同じパターンに従う -->
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# 調査 & 設計決定テンプレート
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
**目的**: 技術設計に情報を提供する発見結果、アーキテクチャ調査、および根拠を記録する。
|
|
5
|
+
|
|
6
|
+
**使い方**:
|
|
7
|
+
- 発見フェーズ中に調査活動と結果を記録。
|
|
8
|
+
- `design.md`には詳細すぎる設計決定のトレードオフを文書化。
|
|
9
|
+
- 将来の監査や再利用のための参照と証拠を提供。
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 概要
|
|
13
|
+
- **機能**: `<feature-name>`
|
|
14
|
+
- **発見スコープ**: 新機能 / 拡張 / 単純な追加 / 複雑な連携
|
|
15
|
+
- **主な発見事項**:
|
|
16
|
+
- 発見1
|
|
17
|
+
- 発見2
|
|
18
|
+
- 発見3
|
|
19
|
+
|
|
20
|
+
## 調査ログ
|
|
21
|
+
注目すべき調査ステップとその結果を文書化。読みやすさのためにトピックごとにグループ化。
|
|
22
|
+
|
|
23
|
+
### [トピックまたは質問]
|
|
24
|
+
- **コンテキスト**: この調査のきっかけは何か?
|
|
25
|
+
- **参照したソース**: リンク、ドキュメント、APIリファレンス、ベンチマーク
|
|
26
|
+
- **発見事項**: 洞察を要約した簡潔な箇条書き
|
|
27
|
+
- **影響**: これがアーキテクチャ、契約、または実装にどう影響するか
|
|
28
|
+
|
|
29
|
+
_各主要トピックについてサブセクションを繰り返す。_
|
|
30
|
+
|
|
31
|
+
## アーキテクチャパターン評価
|
|
32
|
+
検討した候補パターンまたはアプローチをリスト。必要に応じてテーブル形式を使用。
|
|
33
|
+
|
|
34
|
+
| オプション | 説明 | 強み | リスク / 制限 | 備考 |
|
|
35
|
+
|----------|------|------|--------------|------|
|
|
36
|
+
| ヘキサゴナル | コアドメイン周りのポート & アダプター抽象化 | 明確な境界、テスト可能なコア | アダプターレイヤーの構築が必要 | 既存のステアリング原則Xに合致 |
|
|
37
|
+
|
|
38
|
+
## 設計決定
|
|
39
|
+
`design.md`に影響を与える主要な決定を記録。重要なトレードオフのある選択に焦点を当てる。
|
|
40
|
+
|
|
41
|
+
### 決定: `<タイトル>`
|
|
42
|
+
- **コンテキスト**: 決定を促した問題または要件
|
|
43
|
+
- **検討した代替案**:
|
|
44
|
+
1. オプションA — 短い説明
|
|
45
|
+
2. オプションB — 短い説明
|
|
46
|
+
- **選択したアプローチ**: 何を選択し、どう機能するか
|
|
47
|
+
- **根拠**: このアプローチが現在のプロジェクトコンテキストに適する理由
|
|
48
|
+
- **トレードオフ**: メリット vs 妥協点
|
|
49
|
+
- **フォローアップ**: 実装またはテスト中に確認すべき事項
|
|
50
|
+
|
|
51
|
+
_各決定についてサブセクションを繰り返す。_
|
|
52
|
+
|
|
53
|
+
## リスク & 軽減策
|
|
54
|
+
- リスク1 — 提案する軽減策
|
|
55
|
+
- リスク2 — 提案する軽減策
|
|
56
|
+
- リスク3 — 提案する軽減策
|
|
57
|
+
|
|
58
|
+
## 参考文献
|
|
59
|
+
正規のリンクと引用を提供(公式ドキュメント、標準、ADR、内部ガイドライン)。
|
|
60
|
+
- [タイトル](https://example.com) — 関連性の簡単なメモ
|
|
61
|
+
- ...
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 実装計画
|
|
2
|
+
|
|
3
|
+
## タスク形式テンプレート
|
|
4
|
+
|
|
5
|
+
作業分解に適したパターンを使用:
|
|
6
|
+
|
|
7
|
+
### メジャータスクのみ
|
|
8
|
+
- [ ] {{NUMBER}}. {{TASK_DESCRIPTION}}{{PARALLEL_MARK}}
|
|
9
|
+
- {{DETAIL_ITEM_1}} *(必要な場合のみ詳細を含める。タスクが単独で成立する場合は箇条書きを省略。)*
|
|
10
|
+
- _要件: {{REQUIREMENT_IDS}}_
|
|
11
|
+
|
|
12
|
+
### メジャー + サブタスク構造
|
|
13
|
+
- [ ] {{MAJOR_NUMBER}}. {{MAJOR_TASK_SUMMARY}}
|
|
14
|
+
- [ ] {{MAJOR_NUMBER}}.{{SUB_NUMBER}} {{SUB_TASK_DESCRIPTION}}{{SUB_PARALLEL_MARK}}
|
|
15
|
+
- {{DETAIL_ITEM_1}}
|
|
16
|
+
- {{DETAIL_ITEM_2}}
|
|
17
|
+
- _要件: {{REQUIREMENT_IDS}}_ *(IDのみ。説明や括弧を追加しない。)*
|
|
18
|
+
|
|
19
|
+
> **並列マーカー**: 並列実行可能なタスクにのみ` (P)`を付加。`--sequential`モードで実行する場合はマーカーを省略。
|
|
20
|
+
>
|
|
21
|
+
> **オプションのテストカバレッジ**: 受け入れ基準に関連する延期可能なテスト作業のサブタスクの場合、チェックボックスを`- [ ]*`としてマークし、詳細の箇条書きで参照要件を説明。
|
package/package.json
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cursor-sdd",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"description": "Cursor SDD (Spec-Driven Development) - AI-powered spec templates, rules and commands for Cursor IDE",
|
|
5
5
|
"bin": {
|
|
6
|
-
"cursor-sdd": "
|
|
6
|
+
"cursor-sdd": "bin/setup.ts"
|
|
7
7
|
},
|
|
8
8
|
"files": [
|
|
9
9
|
"bin",
|
|
10
|
-
"
|
|
11
|
-
"rules",
|
|
12
|
-
"commands",
|
|
10
|
+
"new",
|
|
13
11
|
"assign"
|
|
14
12
|
],
|
|
15
13
|
"scripts": {
|
|
16
|
-
"
|
|
14
|
+
"setup": "tsx bin/setup.ts"
|
|
17
15
|
},
|
|
18
16
|
"keywords": [
|
|
19
17
|
"cursor",
|