cursor-sdd 1.0.0 → 1.0.1
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 +1 -0
- package/commands/design.md +19 -4
- package/commands/impl.md +1 -0
- package/package.json +1 -1
- package/rules/frontend.md +96 -0
package/README.md
CHANGED
package/commands/design.md
CHANGED
|
@@ -27,6 +27,8 @@ argument-hint: <feature-name:$1> [-y:$2]
|
|
|
27
27
|
- `.cursor/templates/specs/design.md` からドキュメント構造
|
|
28
28
|
- `.cursor/rules/design-principles.md` から設計原則
|
|
29
29
|
- `.cursor/templates/specs/research.md` から発見ログ構造
|
|
30
|
+
- **`package.json`(プロジェクトルートに存在する場合)**: 既存の依存関係とバージョンを把握
|
|
31
|
+
- `.cursor/rules/frontend.md`(存在する場合)からフロントエンド設計原則
|
|
30
32
|
|
|
31
33
|
**要件承認の検証**:
|
|
32
34
|
- `-y` フラグが提供された場合($2 == "-y"): spec.json で要件を自動承認
|
|
@@ -42,7 +44,13 @@ argument-hint: <feature-name:$1> [-y:$2]
|
|
|
42
44
|
- **シンプルな追加**(CRUD/UI)→ 最小限または発見なし
|
|
43
45
|
- **複雑な統合** → 包括的な分析が必要
|
|
44
46
|
|
|
45
|
-
2.
|
|
47
|
+
2. **既存パッケージの優先確認**(package.json が存在する場合):
|
|
48
|
+
- **優先原則**: 既にインストール済みのパッケージで要件を満たせる場合は、新規追加より既存を活用
|
|
49
|
+
- dependencies / devDependencies を確認し、使用可能なライブラリをリストアップ
|
|
50
|
+
- 既存パッケージのバージョンと互換性を検証
|
|
51
|
+
- 不足している機能がある場合のみ、追加パッケージを検討
|
|
52
|
+
|
|
53
|
+
3. **適切な発見プロセスの実行**:
|
|
46
54
|
|
|
47
55
|
**複雑/新機能の場合**:
|
|
48
56
|
- `.cursor/rules/design-discovery-full.md` を読み込んで実行
|
|
@@ -60,7 +68,7 @@ argument-hint: <feature-name:$1> [-y:$2]
|
|
|
60
68
|
**シンプルな追加の場合**:
|
|
61
69
|
- 正式な発見をスキップ、クイックパターンチェックのみ
|
|
62
70
|
|
|
63
|
-
|
|
71
|
+
4. **発見結果をステップ3用に保持**:
|
|
64
72
|
- 外部APIの契約と制約
|
|
65
73
|
- 根拠を伴う技術的決定
|
|
66
74
|
- 従うまたは拡張する既存パターン
|
|
@@ -68,8 +76,12 @@ argument-hint: <feature-name:$1> [-y:$2]
|
|
|
68
76
|
- 特定されたリスクと緩和戦略
|
|
69
77
|
- 潜在的なアーキテクチャパターンと境界オプション(詳細を `research.md` に記録)
|
|
70
78
|
- 将来のタスク用の並列化考慮事項(依存関係を `research.md` にキャプチャ)
|
|
79
|
+
- **パッケージ選定結果**:
|
|
80
|
+
- 既存パッケージの活用リスト(package.json から)
|
|
81
|
+
- 追加推奨パッケージ(理由・用途を明記)
|
|
82
|
+
- 不要または代替可能な既存パッケージ(あれば)
|
|
71
83
|
|
|
72
|
-
|
|
84
|
+
5. **発見結果をリサーチログに永続化**:
|
|
73
85
|
- 共有テンプレートを使用して `.cursor/$1/research.md` を作成または更新
|
|
74
86
|
- 発見スコープと主要な発見をサマリーセクションに記録
|
|
75
87
|
- リサーチログトピックに調査、ソース、影響を記録
|
|
@@ -127,7 +139,10 @@ spec.json で指定された言語で簡潔なサマリーを提供:
|
|
|
127
139
|
1. **ステータス**: `.cursor/$1/design.md` に設計ドキュメント生成完了を確認
|
|
128
140
|
2. **発見タイプ**: どの発見プロセスが実行されたか(full/light/minimal)
|
|
129
141
|
3. **主要な発見**: 設計を形作った2-3の重要な洞察
|
|
130
|
-
4.
|
|
142
|
+
4. **パッケージ選定サマリー**:
|
|
143
|
+
- 既存パッケージで活用するもの
|
|
144
|
+
- 追加推奨パッケージ(あれば理由と共に)
|
|
145
|
+
5. **次のアクション**: 承認ワークフローのガイダンス(安全性とフォールバック参照)
|
|
131
146
|
|
|
132
147
|
**フォーマット**: 簡潔なMarkdown(200語以内)- これはコマンド出力であり、設計ドキュメント自体ではない
|
|
133
148
|
|
package/commands/impl.md
CHANGED
|
@@ -24,6 +24,7 @@ argument-hint: <feature-name:$1> [task-numbers:$2]
|
|
|
24
24
|
|
|
25
25
|
**必要なすべてのコンテキストを読み込み**:
|
|
26
26
|
- `.cursor/$1/spec.json`、`requirements.md`、`design.md`、`tasks.md`
|
|
27
|
+
- `.cursor/rules/frontend.md`(存在する場合)からフロントエンド実装ルール
|
|
27
28
|
|
|
28
29
|
**承認の検証**:
|
|
29
30
|
- spec.json でタスクが承認されていることを確認(されていない場合は停止、安全性とフォールバック参照)
|
package/package.json
CHANGED
|
@@ -0,0 +1,96 @@
|
|
|
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
|
+
|