cursor-sdd 1.1.1 → 1.1.3
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 +6 -8
- package/now/commands/design.md +4 -6
- package/now/rules/frontend.md +2 -90
- package/now/templates/specs/design.md +3 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# cursor-sdd
|
|
1
|
+
# cursor-sdd-package
|
|
2
2
|
|
|
3
3
|
Cursor IDE 向けの Spec-Driven Development (SDD) テンプレート、ルール、コマンド集。
|
|
4
4
|
|
|
@@ -30,6 +30,11 @@ npx cursor-sdd
|
|
|
30
30
|
npx cursor-sdd --force
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
## セットアップ
|
|
34
|
+
rules/frontend.mdには現在ルールは記載されていません。
|
|
35
|
+
みなさんが普段使用しているルールを記載してください。
|
|
36
|
+
ファイルの名称はみなさんで変更していただいてもOKですが、各ルールではfrontend.mdで読み込んでいるので、frontend.mdで検索して、徐々にファイル名を変更 or ファイル追加した方が良いと思います。
|
|
37
|
+
|
|
33
38
|
## 使い方
|
|
34
39
|
|
|
35
40
|
Cursor IDE で以下のコマンドが使えるようになります:
|
|
@@ -101,10 +106,3 @@ Cursor IDE で以下のコマンドが使えるようになります:
|
|
|
101
106
|
↑ ↓
|
|
102
107
|
/status ←←←←←←←←←←←←←←←←
|
|
103
108
|
```
|
|
104
|
-
|
|
105
|
-
1. `/init` - プロジェクトの基本情報を設定
|
|
106
|
-
2. `/requirements` - ユーザーストーリーと要件を定義
|
|
107
|
-
3. `/design` - 技術設計書を作成
|
|
108
|
-
4. `/tasks` - 実装タスクを生成
|
|
109
|
-
5. `/impl` - タスクを実装
|
|
110
|
-
6. `/status` - 進捗を確認
|
package/now/commands/design.md
CHANGED
|
@@ -113,12 +113,10 @@ argument-hint: <feature-name:$1> [-y:$2]
|
|
|
113
113
|
- `updated_at` タイムスタンプを更新
|
|
114
114
|
|
|
115
115
|
## 重要な制約
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- 動的型付け言語では、利用可能な型ヒント/アノテーション(例: Python型ヒント)を提供し、境界で入力を検証。
|
|
121
|
-
- 公開インターフェースと契約を明確に文書化し、コンポーネント間の型安全性を確保。
|
|
116
|
+
- **型定義は設計ドキュメントに含めない**:
|
|
117
|
+
- 設計ドキュメントでは責任・振る舞い・制約を自然言語で記述
|
|
118
|
+
- 型定義は実装時にコードで定義(Prisma等のORMを使用する場合は自動生成される型を活用)
|
|
119
|
+
- TypeScriptのインターフェースやコードブロックは設計ドキュメントに含めない
|
|
122
120
|
- **最新情報**: 外部依存関係とベストプラクティスには WebSearch/WebFetch を使用
|
|
123
121
|
- **テンプレート準拠**: specs/design.md テンプレート構造と生成指示に厳密に従う
|
|
124
122
|
- **設計フォーカス**: アーキテクチャとインターフェースのみ、実装コードなし
|
package/now/rules/frontend.md
CHANGED
|
@@ -1,90 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
## Code Generation
|
|
5
|
-
- コードを生成する前に、必ず関連するドキュメントを確認する
|
|
6
|
-
- フレームワークやライブラリの使用方法については、必ず公式ドキュメントを参照する
|
|
7
|
-
- ドキュメントをもとにベストプラクティスを検証する
|
|
8
|
-
- CSSはTailwindCSSを使用すること
|
|
9
|
-
|
|
10
|
-
## Required Documentation
|
|
11
|
-
- Next.js: https://nextjs.org/docs
|
|
12
|
-
- React 19: https://react.dev
|
|
13
|
-
- TypeScript: https://www.typescriptlang.org/docs/
|
|
14
|
-
- tailwindcss:https://tailwindcss.com/docs/
|
|
15
|
-
|
|
16
|
-
## 1. プロジェクト基本方針
|
|
17
|
-
- App Router を前提とし、Server Components を既定とする。
|
|
18
|
-
- データ取得はサーバー優先(`fetch` と Next.js のキャッシュ戦略を活用)。
|
|
19
|
-
- UI層(表示)とロジック層(データ取得・処理)を明確に分離し、コンポーネントをシンプルに保つ。
|
|
20
|
-
- UI はクライアント側でインタラクションが必要な箇所のみ `'use client'` を付ける。
|
|
21
|
-
- ディレクトリ名は機能や役割が明確に分かる命名(例:`NewFeatureListItemPage`, `Header`)
|
|
22
|
-
- ファイル名はケバブケースかつ処理や役割が分かる命名にしてください。 (button.tsx, use-theme-color.ts)
|
|
23
|
-
- コンポーネント名はパスカルケースを使用します。(例: `HeaderBreadcrumb`, `NewFeatureDropdown`)
|
|
24
|
-
|
|
25
|
-
## 2. ディレクトリ構成
|
|
26
|
-
- ヘッダー関連のコンポーネント(例: `Header.tsx`, `HeaderBreadcrumb.tsx`
|
|
27
|
-
- モーダル関連のコンポーネント(例: `ArchiveNewFeatureModal.tsx`)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
## 3. ルーティングとメタデータ
|
|
31
|
-
- Next.js App Router を使用する。React Router は使用しない。
|
|
32
|
-
- 動的セグメント `[id]`, キャッチオール `[...slug]` を使用。
|
|
33
|
-
- SSG が必要な場合は `generateStaticParams` を実装。
|
|
34
|
-
- `Link` を優先。クライアント側で制御が必要な場合のみ `'use client'` + `useRouter()` を使用(`push`, `replace`, `prefetch`)。
|
|
35
|
-
- メタは `generateMetadata`(動的)または `layout.tsx` の `export const metadata`(静的)。
|
|
36
|
-
- サーバーサイドの遷移は必要に応じて`redirect()`・`notFound()` を使用する。
|
|
37
|
-
|
|
38
|
-
## 4. データ取得・キャッシュ
|
|
39
|
-
- 既定はサーバーで `fetch`。頻度に応じて以下を設定:
|
|
40
|
-
- リアルタイム/常に最新: `cache: 'no-store'`
|
|
41
|
-
- ISR: `next: { revalidate: 秒 }` または `export const revalidate = 秒`
|
|
42
|
-
- タグ付き再検証: `revalidateTag` と `cacheTag` を活用(必要時)。
|
|
43
|
-
|
|
44
|
-
## 5. クライアントコンポーネントの指針
|
|
45
|
-
- フォーム、イベント、アニメーションなどのみ `'use client'` を付与。
|
|
46
|
-
- ルーター操作は `useRouter()`、リンクは `Link` を優先。
|
|
47
|
-
- クライアント側の遷移/分岐は `useRouter().push/replace`・`Link`・条件描画で扱う(`redirect()` / `notFound()` はサーバー側のみ)。
|
|
48
|
-
|
|
49
|
-
## 6. 状態管理
|
|
50
|
-
- ローカル: `useState`, `useReducer`。
|
|
51
|
-
- グローバル: Context で十分な場合は Context。外部状態管理は必要性を精査して導入。
|
|
52
|
-
|
|
53
|
-
## 7. フォームとアクション
|
|
54
|
-
- サーバーアクション(`'use server'`)の利用を検討。副作用はサーバーへ寄せる。
|
|
55
|
-
- 従来の API ルートは `app/api/**/route.ts` で実装(`GET/POST` エクスポート)。
|
|
56
|
-
|
|
57
|
-
## 8. エラーハンドリング
|
|
58
|
-
- `error.tsx` と `not-found.tsx` をルート直下に配置し、グローバル扱いする。
|
|
59
|
-
- 例外はサーバー側で投げ、UI で適切にフォールバック(`loading.tsx` も活用)。
|
|
60
|
-
|
|
61
|
-
## 9. パフォーマンス
|
|
62
|
-
- 画像は `next/image`。フォントは `next/font`。
|
|
63
|
-
- クライアントバンドルを最小化(不要な `'use client'` を避ける)。
|
|
64
|
-
|
|
65
|
-
## 10. 命名・可読性
|
|
66
|
-
- ディレクトリ: 機能名で明確に。
|
|
67
|
-
- ファイル,コンポーネント: パスカルケース(例: `UserTable.tsx`, `UseSelectedIds.ts`)。
|
|
68
|
-
|
|
69
|
-
## 11. TypeScript
|
|
70
|
-
- すべて型定義。公開 API/props は明示的な型注釈。
|
|
71
|
-
- `any` は禁止。ユーティリティ型を積極活用。
|
|
72
|
-
- 型の集約: プロジェクト共通の型は `types/index.ts` に集約し、各所からは同ファイル経由でインポートする。
|
|
73
|
-
- 機能固有の型: `features/<feature>/domain` に配置可。共有が必要になった時点で `types/index.ts` へ移し、参照を置換する。
|
|
74
|
-
- API 型: リクエスト/レスポンスの型も `types/index.ts` に定義して一元管理する。
|
|
75
|
-
|
|
76
|
-
## 12. CSS
|
|
77
|
-
- Tailwind CSS を使用し、ユーティリティクラスで構成。
|
|
78
|
-
- コンポーネント外観は既存デザイン指針に従い、独自変更は承認必須。
|
|
79
|
-
- `className` の合成は既定で `clsx` を使用する。
|
|
80
|
-
|
|
81
|
-
## 13. ドキュメント(JSDoc)
|
|
82
|
-
- 公開コンポーネント/関数/型には JSDoc を付与する。
|
|
83
|
-
- 最低限含める項目: 概要、`@param`、`@returns`、必要に応じて `@remarks`、`@example`、`@throws`。
|
|
84
|
-
- API ルートやサーバーアクションは副作用・例外・認可要件を明記する。
|
|
85
|
-
- 複雑なドメインロジックでは「なぜこの設計か」を簡潔に説明する。
|
|
86
|
-
- ファイル先頭に、そのファイルの目的が一目で分かるコメントを日本語で記載
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
出典: Next.js Docs(App Router, Data Fetching, Route Handlers, Metadata 等) / React Docs(Components, Hooks, State 等)
|
|
90
|
-
|
|
1
|
+
ここにみなさまがお使いのルールを記載してください
|
|
2
|
+
複数のルールを追加する場合、検索で「frontend.md」と検索し、読み込まれているファイルに、追記してください。
|
|
@@ -126,14 +126,9 @@
|
|
|
126
126
|
**契約**: Service [ ] / API [ ] / Event [ ] / Batch [ ] / State [ ] ← 該当するもののみチェック。
|
|
127
127
|
|
|
128
128
|
##### サービスインターフェース
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
- 事前条件:
|
|
135
|
-
- 事後条件:
|
|
136
|
-
- 不変条件:
|
|
129
|
+
- 提供するメソッドと責任を自然言語で記述
|
|
130
|
+
- 事前条件 / 事後条件 / 不変条件を箇条書きで明記
|
|
131
|
+
- 型定義はコードで実装時に定義(Prisma等のORMを使用する場合は自動生成される型を活用)
|
|
137
132
|
|
|
138
133
|
##### API契約
|
|
139
134
|
| メソッド | エンドポイント | リクエスト | レスポンス | エラー |
|