cursor-sdd 1.0.5 → 1.0.7
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 +3 -3
- package/bin/{setup.js → setup.ts} +30 -7
- package/package.json +1 -1
- package/commands/check-design.md +0 -87
- package/commands/design.md +0 -188
- package/commands/difference-check.md +0 -83
- package/commands/impl.md +0 -109
- package/commands/init.md +0 -65
- package/commands/requirements.md +0 -91
- package/commands/status.md +0 -86
- package/commands/tasks.md +0 -155
- package/rules/design-discovery-full.md +0 -93
- package/rules/design-discovery-light.md +0 -49
- package/rules/design-principles.md +0 -182
- package/rules/design-review.md +0 -110
- package/rules/ears-format.md +0 -49
- package/rules/frontend.md +0 -96
- package/rules/gap-analysis.md +0 -145
- package/rules/tasks-generation.md +0 -131
- package/rules/tasks-parallel-analysis.md +0 -34
- package/templates/specs/design.md +0 -275
- package/templates/specs/init.json +0 -29
- package/templates/specs/requirements-init.md +0 -8
- package/templates/specs/requirements.md +0 -26
- package/templates/specs/research.md +0 -61
- package/templates/specs/tasks.md +0 -21
package/rules/design-review.md
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
# 設計レビュープロセス
|
|
2
|
-
|
|
3
|
-
## 目的
|
|
4
|
-
技術設計ドキュメントのインタラクティブな品質レビューを実施し、許容可能なリスクで実装に進むのに十分堅牢であることを確認する。
|
|
5
|
-
|
|
6
|
-
## レビュー哲学
|
|
7
|
-
- **品質保証であり、完璧の追求ではない**
|
|
8
|
-
- **クリティカルフォーカス**: 最も重要な懸念事項を3つに限定
|
|
9
|
-
- **インタラクティブな対話**: 一方的な評価ではなく、設計者との対話
|
|
10
|
-
- **バランスの取れた評価**: 長所と短所の両方を認識
|
|
11
|
-
- **明確な決定**: 根拠付きの明確なGO/NO-GO
|
|
12
|
-
|
|
13
|
-
## スコープ & 非目標
|
|
14
|
-
|
|
15
|
-
- スコープ: プロジェクトコンテキストと標準に対して設計ドキュメントの品質を評価し、GO/NO-GOを決定
|
|
16
|
-
- 非目標: 実装レベルの設計、深い技術調査、技術選択の最終決定は行わない。そのような項目は設計フェーズのイテレーションに延期
|
|
17
|
-
|
|
18
|
-
## コアレビュー基準
|
|
19
|
-
|
|
20
|
-
### 1. 既存アーキテクチャとの整合(クリティカル)
|
|
21
|
-
- 既存システム境界とレイヤーとの統合
|
|
22
|
-
- 確立されたアーキテクチャパターンとの一貫性
|
|
23
|
-
- 適切な依存方向と結合管理
|
|
24
|
-
- 現在のモジュール構成との整合
|
|
25
|
-
|
|
26
|
-
### 2. 設計の一貫性と標準
|
|
27
|
-
- プロジェクトの命名規則とコード標準への準拠
|
|
28
|
-
- 一貫したエラーハンドリングとロギング戦略
|
|
29
|
-
- 統一された設定と依存関係管理
|
|
30
|
-
- 確立されたデータモデリングパターンとの整合
|
|
31
|
-
|
|
32
|
-
### 3. 拡張性と保守性
|
|
33
|
-
- 将来の要件に対する設計の柔軟性
|
|
34
|
-
- 関心の明確な分離と単一責任
|
|
35
|
-
- テスタビリティとデバッグの考慮
|
|
36
|
-
- 要件に対する適切な複雑さ
|
|
37
|
-
|
|
38
|
-
### 4. 型安全とインターフェース設計
|
|
39
|
-
- 適切な型定義とインターフェースコントラクト
|
|
40
|
-
- 安全でないパターンの回避(例: TypeScriptでの `any`)
|
|
41
|
-
- 明確なAPI境界とデータ構造
|
|
42
|
-
- 入力バリデーションとエラーハンドリングのカバレッジ
|
|
43
|
-
|
|
44
|
-
## レビュープロセス
|
|
45
|
-
|
|
46
|
-
### ステップ1: 分析
|
|
47
|
-
すべてのレビュー基準に対して設計を分析し、統合、保守性、複雑さ、要件充足に影響するクリティカルな問題に焦点を当てる。
|
|
48
|
-
|
|
49
|
-
### ステップ2: クリティカルな問題を特定(≤3)
|
|
50
|
-
各問題について:
|
|
51
|
-
```
|
|
52
|
-
🔴 **クリティカルな問題 [1-3]**: [簡潔なタイトル]
|
|
53
|
-
**懸念**: [具体的な問題]
|
|
54
|
-
**影響**: [なぜ重要か]
|
|
55
|
-
**提案**: [具体的な改善案]
|
|
56
|
-
**トレーサビリティ**: [requirements.mdの要件ID/セクション]
|
|
57
|
-
**根拠**: [設計ドキュメントのセクション/見出し]
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### ステップ3: 長所を認識
|
|
61
|
-
バランスの取れたフィードバックを維持するため、1〜2つの強い側面を認める。
|
|
62
|
-
|
|
63
|
-
### ステップ4: GO/NO-GOの決定
|
|
64
|
-
- **GO**: クリティカルなアーキテクチャ不整合なし、要件対応済み、明確な実装パス、許容可能なリスク
|
|
65
|
-
- **NO-GO**: 根本的な競合、クリティカルなギャップ、高い失敗リスク、不釣り合いな複雑さ
|
|
66
|
-
|
|
67
|
-
## トレーサビリティと根拠
|
|
68
|
-
|
|
69
|
-
- 各クリティカルな問題を `requirements.md` の関連要件(IDまたはセクション)にリンク
|
|
70
|
-
- 評価を裏付ける設計ドキュメント内の根拠箇所(セクション/見出し、図、成果物)を引用
|
|
71
|
-
- 該当する場合、問題を正当化するためにステアリングコンテキストからの制約を参照
|
|
72
|
-
|
|
73
|
-
## 出力フォーマット
|
|
74
|
-
|
|
75
|
-
### 設計レビューサマリー
|
|
76
|
-
全体的な品質と準備状況について2〜3文。
|
|
77
|
-
|
|
78
|
-
### クリティカルな問題(≤3)
|
|
79
|
-
各項目: 問題、影響、推奨事項、トレーサビリティ(例: 1.1, 1.2)、根拠(design.mdセクション)。
|
|
80
|
-
|
|
81
|
-
### 設計の長所
|
|
82
|
-
1〜2つのポジティブな側面。
|
|
83
|
-
|
|
84
|
-
### 最終評価
|
|
85
|
-
決定(GO/NO-GO)、根拠(1〜2文)、次のステップ。
|
|
86
|
-
|
|
87
|
-
### インタラクティブディスカッション
|
|
88
|
-
設計者の視点、代替案、明確化、必要な変更について対話。
|
|
89
|
-
|
|
90
|
-
## 長さとフォーカス
|
|
91
|
-
|
|
92
|
-
- サマリー: 2〜3文
|
|
93
|
-
- 各クリティカルな問題: 合計5〜7行(問題/影響/推奨事項/トレーサビリティ/根拠を含む)
|
|
94
|
-
- 全体のレビュー: 簡潔に(目安約400語)
|
|
95
|
-
|
|
96
|
-
## レビューガイドライン
|
|
97
|
-
|
|
98
|
-
1. **クリティカルフォーカス**: 成功に大きく影響する問題のみをフラグ
|
|
99
|
-
2. **建設的なトーン**: 批判だけでなく解決策を提供
|
|
100
|
-
3. **インタラクティブなアプローチ**: 一方的な評価ではなく対話を行う
|
|
101
|
-
4. **バランスの取れた評価**: 長所と短所の両方を認識
|
|
102
|
-
5. **明確な決定**: 明確なGO/NO-GO推奨を行う
|
|
103
|
-
6. **アクション可能なフィードバック**: すべての提案が実装可能であることを確認
|
|
104
|
-
|
|
105
|
-
## 最終チェックリスト
|
|
106
|
-
|
|
107
|
-
- **クリティカルな問題 ≤ 3** かつ各問題に影響と推奨事項を含む
|
|
108
|
-
- **トレーサビリティ**: 各問題が要件ID/セクションを参照
|
|
109
|
-
- **根拠**: 各問題が設計ドキュメントの場所を引用
|
|
110
|
-
- **決定**: 明確な根拠と次のステップを伴うGO/NO-GO
|
package/rules/ears-format.md
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# EARSフォーマットガイドライン
|
|
2
|
-
|
|
3
|
-
## 概要
|
|
4
|
-
EARS(Easy Approach to Requirements Syntax)は、仕様駆動開発における受け入れ基準の標準フォーマット。
|
|
5
|
-
|
|
6
|
-
EARSパターンは要件の論理構造(条件 + 主体 + 応答)を記述し、特定の自然言語に縛られない。
|
|
7
|
-
すべての受け入れ基準は、仕様で設定されたターゲット言語(例: `spec.json.language` / `ja`)で記述すること。
|
|
8
|
-
EARSのトリガーキーワードと固定フレーズは英語のまま(`When`, `If`, `While`, `Where`, `The system shall`, `The [system] shall`)とし、可変部分(`[event]`, `[precondition]`, `[trigger]`, `[feature is included]`, `[response/action]`)のみターゲット言語にローカライズする。トリガーや固定英語フレーズの中にターゲット言語のテキストを混ぜないこと。
|
|
9
|
-
|
|
10
|
-
## 主要なEARSパターン
|
|
11
|
-
|
|
12
|
-
### 1. イベント駆動型要件
|
|
13
|
-
- **パターン**: When [event], the [system] shall [response/action]
|
|
14
|
-
- **ユースケース**: 特定のイベントやトリガーへの応答
|
|
15
|
-
- **例**: When ユーザーがチェックアウトボタンをクリック, the Checkout Service shall カート内容を検証
|
|
16
|
-
|
|
17
|
-
### 2. 状態駆動型要件
|
|
18
|
-
- **パターン**: While [precondition], the [system] shall [response/action]
|
|
19
|
-
- **ユースケース**: システム状態や前提条件に依存する振る舞い
|
|
20
|
-
- **例**: While 支払い処理中, the Checkout Service shall ローディングインジケーターを表示
|
|
21
|
-
|
|
22
|
-
### 3. 望ましくない振る舞いへの要件
|
|
23
|
-
- **パターン**: If [trigger], the [system] shall [response/action]
|
|
24
|
-
- **ユースケース**: エラー、障害、望ましくない状況へのシステム応答
|
|
25
|
-
- **例**: If 無効なクレジットカード番号が入力された, then the website shall エラーメッセージを表示
|
|
26
|
-
|
|
27
|
-
### 4. オプション機能要件
|
|
28
|
-
- **パターン**: Where [feature is included], the [system] shall [response/action]
|
|
29
|
-
- **ユースケース**: オプションまたは条件付き機能の要件
|
|
30
|
-
- **例**: Where 車にサンルーフが搭載されている, the car shall サンルーフコントロールパネルを持つ
|
|
31
|
-
|
|
32
|
-
### 5. ユビキタス要件
|
|
33
|
-
- **パターン**: The [system] shall [response/action]
|
|
34
|
-
- **ユースケース**: 常時有効な要件と基本的なシステム特性
|
|
35
|
-
- **例**: The モバイルフォン shall 重量100グラム未満とする
|
|
36
|
-
|
|
37
|
-
## 複合パターン
|
|
38
|
-
- While [precondition], when [event], the [system] shall [response/action]
|
|
39
|
-
- When [event] and [additional condition], the [system] shall [response/action]
|
|
40
|
-
|
|
41
|
-
## 主体選択ガイドライン
|
|
42
|
-
- **ソフトウェアプロジェクト**: 具体的なシステム/サービス名を使用(例: 「Checkout Service」、「User Auth Module」)
|
|
43
|
-
- **プロセス/ワークフロー**: 責任チーム/役割を使用(例: 「サポートチーム」、「レビュープロセス」)
|
|
44
|
-
- **ソフトウェア以外**: 適切な主体を使用(例: 「マーケティングキャンペーン」、「ドキュメント」)
|
|
45
|
-
|
|
46
|
-
## 品質基準
|
|
47
|
-
- 要件はテスト可能、検証可能であり、単一の振る舞いを記述すること。
|
|
48
|
-
- 客観的な言語を使用: 必須の振る舞いには「shall」、推奨には「should」。曖昧な用語は避ける。
|
|
49
|
-
- EARS構文に従う: [condition], the [system] shall [response/action]。
|
package/rules/frontend.md
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Next.js(App Router) / React 19 準拠フロントエンド実装ガイド
|
|
3
|
-
globs:
|
|
4
|
-
alwaysApply: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
以下は、Next.js(App Router) 15系および React 19 系の公式ドキュメントに準拠した実装ガイドです。
|
|
8
|
-
このルールを使用する際に「フロントエンドのルールを確認しました」と表示してください。
|
|
9
|
-
|
|
10
|
-
## Code Generation
|
|
11
|
-
- コードを生成する前に、必ず関連するドキュメントを確認する
|
|
12
|
-
- フレームワークやライブラリの使用方法については、必ず公式ドキュメントを参照する
|
|
13
|
-
- ドキュメントをもとにベストプラクティスを検証する
|
|
14
|
-
- CSSはTailwindCSSを使用すること
|
|
15
|
-
|
|
16
|
-
## Required Documentation
|
|
17
|
-
- Next.js: https://nextjs.org/docs
|
|
18
|
-
- React 19: https://react.dev
|
|
19
|
-
- TypeScript: https://www.typescriptlang.org/docs/
|
|
20
|
-
- tailwindcss:https://tailwindcss.com/docs/
|
|
21
|
-
|
|
22
|
-
## 1. プロジェクト基本方針
|
|
23
|
-
- App Router を前提とし、Server Components を既定とする。
|
|
24
|
-
- データ取得はサーバー優先(`fetch` と Next.js のキャッシュ戦略を活用)。
|
|
25
|
-
- UI層(表示)とロジック層(データ取得・処理)を明確に分離し、コンポーネントをシンプルに保つ。
|
|
26
|
-
- UI はクライアント側でインタラクションが必要な箇所のみ `'use client'` を付ける。
|
|
27
|
-
- ディレクトリ名は機能や役割が明確に分かる命名(例:`NewFeatureListItemPage`, `Header`)
|
|
28
|
-
- ファイル名はケバブケースかつ処理や役割が分かる命名にしてください。 (button.tsx, use-theme-color.ts)
|
|
29
|
-
- コンポーネント名はパスカルケースを使用します。(例: `HeaderBreadcrumb`, `NewFeatureDropdown`)
|
|
30
|
-
|
|
31
|
-
## 2. ディレクトリ構成
|
|
32
|
-
- ヘッダー関連のコンポーネント(例: `Header.tsx`, `HeaderBreadcrumb.tsx`
|
|
33
|
-
- モーダル関連のコンポーネント(例: `ArchiveNewFeatureModal.tsx`)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
## 3. ルーティングとメタデータ
|
|
37
|
-
- Next.js App Router を使用する。React Router は使用しない。
|
|
38
|
-
- 動的セグメント `[id]`, キャッチオール `[...slug]` を使用。
|
|
39
|
-
- SSG が必要な場合は `generateStaticParams` を実装。
|
|
40
|
-
- `Link` を優先。クライアント側で制御が必要な場合のみ `'use client'` + `useRouter()` を使用(`push`, `replace`, `prefetch`)。
|
|
41
|
-
- メタは `generateMetadata`(動的)または `layout.tsx` の `export const metadata`(静的)。
|
|
42
|
-
- サーバーサイドの遷移は必要に応じて`redirect()`・`notFound()` を使用する。
|
|
43
|
-
|
|
44
|
-
## 4. データ取得・キャッシュ
|
|
45
|
-
- 既定はサーバーで `fetch`。頻度に応じて以下を設定:
|
|
46
|
-
- リアルタイム/常に最新: `cache: 'no-store'`
|
|
47
|
-
- ISR: `next: { revalidate: 秒 }` または `export const revalidate = 秒`
|
|
48
|
-
- タグ付き再検証: `revalidateTag` と `cacheTag` を活用(必要時)。
|
|
49
|
-
|
|
50
|
-
## 5. クライアントコンポーネントの指針
|
|
51
|
-
- フォーム、イベント、アニメーションなどのみ `'use client'` を付与。
|
|
52
|
-
- ルーター操作は `useRouter()`、リンクは `Link` を優先。
|
|
53
|
-
- 例外遷移/404: `redirect()` / `notFound()` を使用(`next/navigation`)。
|
|
54
|
-
|
|
55
|
-
## 6. 状態管理
|
|
56
|
-
- ローカル: `useState`, `useReducer`。
|
|
57
|
-
- グローバル: Context で十分な場合は Context。外部状態管理は必要性を精査して導入。
|
|
58
|
-
|
|
59
|
-
## 7. フォームとアクション
|
|
60
|
-
- サーバーアクション(`'use server'`)の利用を検討。副作用はサーバーへ寄せる。
|
|
61
|
-
- 従来の API ルートは `app/api/**/route.ts` で実装(`GET/POST` エクスポート)。
|
|
62
|
-
|
|
63
|
-
## 8. エラーハンドリング
|
|
64
|
-
- `error.tsx` と `not-found.tsx` をルート直下に配置し、グローバル扱いする。
|
|
65
|
-
- 例外はサーバー側で投げ、UI で適切にフォールバック(`loading.tsx` も活用)。
|
|
66
|
-
|
|
67
|
-
## 9. パフォーマンス
|
|
68
|
-
- 画像は `next/image`。フォントは `next/font`。
|
|
69
|
-
- クライアントバンドルを最小化(不要な `'use client'` を避ける)。
|
|
70
|
-
|
|
71
|
-
## 10. 命名・可読性
|
|
72
|
-
- ディレクトリ: 機能名で明確に。
|
|
73
|
-
- ファイル,コンポーネント: パスカルケース(例: `UserTable.tsx`, `UseSelectedIds.ts`)。
|
|
74
|
-
|
|
75
|
-
## 11. TypeScript
|
|
76
|
-
- すべて型定義。公開 API/props は明示的な型注釈。
|
|
77
|
-
- `any` は禁止。ユーティリティ型を積極活用。
|
|
78
|
-
- 型の集約: プロジェクト共通の型は `types/index.ts` に集約し、各所からは同ファイル経由でインポートする。
|
|
79
|
-
- 機能固有の型: `features/<feature>/domain` に配置可。共有が必要になった時点で `types/index.ts` へ移し、参照を置換する。
|
|
80
|
-
- API 型: リクエスト/レスポンスの型も `types/index.ts` に定義して一元管理する。
|
|
81
|
-
|
|
82
|
-
## 12. CSS
|
|
83
|
-
- Tailwind CSS を使用し、ユーティリティクラスで構成。
|
|
84
|
-
- コンポーネント外観は既存デザイン指針に従い、独自変更は承認必須。
|
|
85
|
-
- `className` の合成は既定で `clsx` を使用する。
|
|
86
|
-
|
|
87
|
-
## 13. ドキュメント(JSDoc)
|
|
88
|
-
- 公開コンポーネント/関数/型には JSDoc を付与する。
|
|
89
|
-
- 最低限含める項目: 概要、`@param`、`@returns`、必要に応じて `@remarks`、`@example`、`@throws`。
|
|
90
|
-
- API ルートやサーバーアクションは副作用・例外・認可要件を明記する。
|
|
91
|
-
- 複雑なドメインロジックでは「なぜこの設計か」を簡潔に説明する。
|
|
92
|
-
- ファイル先頭に、そのファイルの目的が一目で分かるコメントを日本語で記載
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
出典: Next.js Docs(App Router, Data Fetching, Route Handlers, Metadata 等) / React Docs(Components, Hooks, State 等)
|
|
96
|
-
|
package/rules/gap-analysis.md
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# ギャップ分析プロセス
|
|
2
|
-
|
|
3
|
-
## 目的
|
|
4
|
-
要件と既存コードベースのギャップを分析し、実装戦略の決定に情報を提供する。
|
|
5
|
-
|
|
6
|
-
## 分析フレームワーク
|
|
7
|
-
|
|
8
|
-
### 1. 現状調査
|
|
9
|
-
|
|
10
|
-
- ドメイン関連アセットをスキャン:
|
|
11
|
-
- 主要ファイル/モジュールとディレクトリレイアウト
|
|
12
|
-
- 再利用可能なコンポーネント/サービス/ユーティリティ
|
|
13
|
-
- 支配的なアーキテクチャパターンと制約
|
|
14
|
-
|
|
15
|
-
- 規約を抽出:
|
|
16
|
-
- 命名、レイヤリング、依存方向
|
|
17
|
-
- インポート/エクスポートパターンと依存ホットスポット
|
|
18
|
-
- テストの配置とアプローチ
|
|
19
|
-
|
|
20
|
-
- 統合サーフェスを記録:
|
|
21
|
-
- データモデル/スキーマ、APIクライアント、認証メカニズム
|
|
22
|
-
|
|
23
|
-
### 2. 要件実現可能性分析
|
|
24
|
-
|
|
25
|
-
- EARS要件から技術的ニーズをリストアップ:
|
|
26
|
-
- データモデル、API/サービス、UI/コンポーネント
|
|
27
|
-
- ビジネスルール/バリデーション
|
|
28
|
-
- 非機能要件: セキュリティ、パフォーマンス、スケーラビリティ、信頼性
|
|
29
|
-
|
|
30
|
-
- ギャップと制約を特定:
|
|
31
|
-
- 現在のコードベースに欠けている機能
|
|
32
|
-
- 後で調査が必要な未知項目(「要調査」としてマーク)
|
|
33
|
-
- 既存アーキテクチャとパターンからの制約
|
|
34
|
-
|
|
35
|
-
- 複雑さのシグナルを記録:
|
|
36
|
-
- シンプルなCRUD / アルゴリズムロジック / ワークフロー / 外部統合
|
|
37
|
-
|
|
38
|
-
### 3. 実装アプローチオプション
|
|
39
|
-
|
|
40
|
-
#### オプションA: 既存コンポーネントの拡張
|
|
41
|
-
**検討する場合**: 機能が既存構造に自然にフィットする
|
|
42
|
-
|
|
43
|
-
- **拡張するファイル/モジュール**:
|
|
44
|
-
- 変更が必要な具体的ファイルを特定
|
|
45
|
-
- 既存機能への影響を評価
|
|
46
|
-
- 後方互換性の懸念を評価
|
|
47
|
-
|
|
48
|
-
- **互換性評価**:
|
|
49
|
-
- 拡張が既存インターフェースを尊重しているか確認
|
|
50
|
-
- 消費者への破壊的変更がないか検証
|
|
51
|
-
- テストカバレッジへの影響を評価
|
|
52
|
-
|
|
53
|
-
- **複雑さと保守性**:
|
|
54
|
-
- 追加機能の認知負荷を評価
|
|
55
|
-
- 単一責任原則が維持されているか確認
|
|
56
|
-
- ファイルサイズが管理可能な範囲か評価
|
|
57
|
-
|
|
58
|
-
**トレードオフ**:
|
|
59
|
-
- ✅ 新規ファイル最小、初期開発が速い
|
|
60
|
-
- ✅ 既存パターンとインフラを活用
|
|
61
|
-
- ❌ 既存コンポーネントの肥大化リスク
|
|
62
|
-
- ❌ 既存ロジックが複雑化する可能性
|
|
63
|
-
|
|
64
|
-
#### オプションB: 新規コンポーネントの作成
|
|
65
|
-
**検討する場合**: 機能が明確な責任を持つ、または既存コンポーネントが既に複雑
|
|
66
|
-
|
|
67
|
-
- **新規作成の根拠**:
|
|
68
|
-
- 関心の明確な分離が新規ファイルを正当化
|
|
69
|
-
- 既存コンポーネントが既に複雑
|
|
70
|
-
- 機能が異なるライフサイクルや依存関係を持つ
|
|
71
|
-
|
|
72
|
-
- **統合ポイント**:
|
|
73
|
-
- 新コンポーネントが既存システムにどう接続するか
|
|
74
|
-
- 公開するAPIまたはインターフェース
|
|
75
|
-
- 既存コンポーネントへの依存
|
|
76
|
-
|
|
77
|
-
- **責任境界**:
|
|
78
|
-
- 新コンポーネントが所有するものの明確な定義
|
|
79
|
-
- 既存コンポーネントとのインターフェース
|
|
80
|
-
- データフローと制御フロー
|
|
81
|
-
|
|
82
|
-
**トレードオフ**:
|
|
83
|
-
- ✅ 関心のクリーンな分離
|
|
84
|
-
- ✅ 分離したテストが容易
|
|
85
|
-
- ✅ 既存コンポーネントの複雑さを軽減
|
|
86
|
-
- ❌ ナビゲートするファイルが増加
|
|
87
|
-
- ❌ 慎重なインターフェース設計が必要
|
|
88
|
-
|
|
89
|
-
#### オプションC: ハイブリッドアプローチ
|
|
90
|
-
**検討する場合**: 拡張と新規作成の両方が必要な複雑な機能
|
|
91
|
-
|
|
92
|
-
- **組み合わせ戦略**:
|
|
93
|
-
- どの部分が既存コンポーネントを拡張するか
|
|
94
|
-
- どの部分が新規コンポーネントを必要とするか
|
|
95
|
-
- 相互作用の方法
|
|
96
|
-
|
|
97
|
-
- **段階的実装**:
|
|
98
|
-
- 初期フェーズ: 最小限の実行可能な変更
|
|
99
|
-
- 後続フェーズ: リファクタリングまたは新規コンポーネント
|
|
100
|
-
- 必要に応じた移行戦略
|
|
101
|
-
|
|
102
|
-
- **リスク軽減**:
|
|
103
|
-
- 段階的ロールアウトアプローチ
|
|
104
|
-
- フィーチャーフラグまたは設定
|
|
105
|
-
- ロールバック戦略
|
|
106
|
-
|
|
107
|
-
**トレードオフ**:
|
|
108
|
-
- ✅ 複雑な機能に対するバランスの取れたアプローチ
|
|
109
|
-
- ✅ 反復的な改善が可能
|
|
110
|
-
- ❌ より複雑な計画が必要
|
|
111
|
-
- ❌ 適切に調整されないと不整合の可能性
|
|
112
|
-
|
|
113
|
-
### 4. ギャップ分析のスコープ外
|
|
114
|
-
|
|
115
|
-
- 深い調査活動は設計フェーズに延期する
|
|
116
|
-
- 未知項目は簡潔な「要調査」項目としてのみ記録
|
|
117
|
-
|
|
118
|
-
### 5. 実装の複雑さとリスク
|
|
119
|
-
|
|
120
|
-
- 工数:
|
|
121
|
-
- S(1〜3日): 既存パターン、最小限の依存、簡単な統合
|
|
122
|
-
- M(3〜7日): いくつかの新パターン/統合、中程度の複雑さ
|
|
123
|
-
- L(1〜2週間): 重要な機能、複数の統合またはワークフロー
|
|
124
|
-
- XL(2週間以上): アーキテクチャ変更、未知の技術、広範な影響
|
|
125
|
-
- リスク:
|
|
126
|
-
- 高: 未知の技術、複雑な統合、アーキテクチャシフト、不明確なパフォーマンス/セキュリティパス
|
|
127
|
-
- 中: ガイダンス付きの新パターン、管理可能な統合、既知のパフォーマンスソリューション
|
|
128
|
-
- 低: 確立されたパターンの拡張、馴染みのある技術、明確なスコープ、最小限の統合
|
|
129
|
-
|
|
130
|
-
### 出力チェックリスト
|
|
131
|
-
|
|
132
|
-
- ギャップがタグ付けされた要件-アセットマップ(欠落 / 未知 / 制約)
|
|
133
|
-
- 短い根拠とトレードオフ付きのオプションA/B/C
|
|
134
|
-
- 工数(S/M/L/XL)とリスク(高/中/低)、各1行の正当化
|
|
135
|
-
- 設計フェーズへの推奨事項:
|
|
136
|
-
- 推奨アプローチと主要な決定事項
|
|
137
|
-
- 引き継ぐ調査項目
|
|
138
|
-
|
|
139
|
-
## 原則
|
|
140
|
-
|
|
141
|
-
- **決定より情報**: 分析とオプションを提供し、最終決定はしない
|
|
142
|
-
- **複数の実行可能オプション**: 該当する場合、信頼できる代替案を提示
|
|
143
|
-
- **明示的なギャップと仮定**: 未知項目と制約を明確にフラグ
|
|
144
|
-
- **コンテキスト認識**: 既存パターンとアーキテクチャ制限に合わせる
|
|
145
|
-
- **透明な工数とリスク**: ラベルを簡潔に正当化
|
|
@@ -1,131 +0,0 @@
|
|
|
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
|
-
意図的に延期した要件は根拠とともに文書化する。
|
|
@@ -1,34 +0,0 @@
|
|
|
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)` を**マークせず**、タスク詳細で依存関係を説明する。
|