yodogawa 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/.windsurf/workflows/a-002-InitializeProject.md +66 -25
- package/README.md +54 -51
- package/bin/cli.js +45 -25
- package/package.json +1 -1
|
@@ -23,6 +23,7 @@ auto_execution_mode: 1
|
|
|
23
23
|
### 1. ドキュメントディレクトリの確認
|
|
24
24
|
|
|
25
25
|
- `docs/project/requirements/` ディレクトリの存在を確認:
|
|
26
|
+
|
|
26
27
|
```bash
|
|
27
28
|
ls -la docs/project/requirements/ 2>/dev/null || echo "ディレクトリが存在しません"
|
|
28
29
|
```
|
|
@@ -30,9 +31,30 @@ auto_execution_mode: 1
|
|
|
30
31
|
- ディレクトリが存在しない場合:
|
|
31
32
|
- ユーザーに通知:「`docs/project/requirements/` ディレクトリが見つかりません。先に `SetupDocStructure` (a-001) を実行してディレクトリ構造を作成してください。」
|
|
32
33
|
|
|
33
|
-
### 2.
|
|
34
|
+
### 2. コードベースの自動分析と提案
|
|
35
|
+
|
|
36
|
+
1. **コードベースの全体調査**:
|
|
37
|
+
|
|
38
|
+
- プロジェクトのルートにある `README.md`, `package.json`, および主要なソースコードを読み込む。
|
|
39
|
+
- 以下のコマンド等を使用して現状を把握する:
|
|
40
|
+
```bash
|
|
41
|
+
ls -F
|
|
42
|
+
cat package.json 2>/dev/null
|
|
43
|
+
cat README.md 2>/dev/null
|
|
44
|
+
find src app lib -maxdepth 2 2>/dev/null
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
2. **AI による分析と提案**:
|
|
48
|
+
- 読み込んだ情報を基に、以下の内容を分析・推測し、ユーザーに提示する。
|
|
49
|
+
- **システム概要**: プロジェクトの目的、主要な技術スタック。
|
|
50
|
+
- **実装済み機能**: ファイル構造やコードから推測される機能。
|
|
51
|
+
- **ユーザーストーリー**: 想定されるユーザー像と利用シーン。
|
|
52
|
+
- この分析結果は、後続のステップ(システム概要の作成、機能一覧の作成など)の基礎情報として活用する。
|
|
53
|
+
|
|
54
|
+
### 3. システム概要の作成
|
|
34
55
|
|
|
35
56
|
1. **テンプレートの準備**:
|
|
57
|
+
|
|
36
58
|
```bash
|
|
37
59
|
cp ".windsurf/templates/project/01-requirements/01-system-overview.md" "docs/project/requirements/01-system-overview.md"
|
|
38
60
|
```
|
|
@@ -41,24 +63,28 @@ auto_execution_mode: 1
|
|
|
41
63
|
以下の質問を行い、その回答で `docs/project/requirements/01-system-overview.md` を更新する。
|
|
42
64
|
|
|
43
65
|
#### 背景
|
|
66
|
+
|
|
44
67
|
- 「このシステムで解決しようとしている**具体的な問題や課題**は何ですか?」
|
|
45
68
|
- 「その問題はなぜ重要ですか?放置した場合のリスクは?」
|
|
46
69
|
- 「問題の影響を受けるステークホルダー(ユーザー、組織、チームなど)は誰ですか?」
|
|
47
70
|
- 「具体的な数値やデータ(例:作業時間、コスト、離脱率など)があれば教えてください。」
|
|
48
71
|
|
|
49
72
|
#### 目的
|
|
73
|
+
|
|
50
74
|
- 「このシステムが提供する**具体的な価値や解決策**は何ですか?」
|
|
51
|
-
- 「期待される成果や変化を、測定可能な形で表現できますか?(例:作業時間50%削減)」
|
|
75
|
+
- 「期待される成果や変化を、測定可能な形で表現できますか?(例:作業時間 50%削減)」
|
|
52
76
|
- 「どのように問題を解決するか、具体的なメカニズムや仕組みを教えてください。」
|
|
53
77
|
|
|
54
|
-
###
|
|
78
|
+
### 4. 実装済み機能一覧の作成
|
|
55
79
|
|
|
56
80
|
1. **テンプレートの準備**:
|
|
81
|
+
|
|
57
82
|
```bash
|
|
58
83
|
cp ".windsurf/templates/project/01-requirements/02-features-implemented.md" "docs/project/requirements/02-features-implemented.md"
|
|
59
84
|
```
|
|
60
85
|
|
|
61
86
|
2. **コードベースの調査と提案**:
|
|
87
|
+
|
|
62
88
|
- プロジェクト内のソースコードを簡易検索し、実装済みの兆候を探す。
|
|
63
89
|
```bash
|
|
64
90
|
# 主要なソースディレクトリの構造を確認(例)
|
|
@@ -78,78 +104,91 @@ auto_execution_mode: 1
|
|
|
78
104
|
- **Category 2**(中分類:認証、プロフィールなど)
|
|
79
105
|
- **機能名**(ユーザー視点の名称)
|
|
80
106
|
- **説明**(何ができるか)
|
|
81
|
-
- **機能ID**(FN-XXX形式、連番)
|
|
107
|
+
- **機能 ID**(FN-XXX 形式、連番)
|
|
82
108
|
|
|
83
|
-
###
|
|
109
|
+
### 5. 予定機能一覧の作成
|
|
84
110
|
|
|
85
111
|
1. **テンプレートの準備**:
|
|
112
|
+
|
|
86
113
|
```bash
|
|
87
114
|
cp ".windsurf/templates/project/01-requirements/03-features-planned.md" "docs/project/requirements/03-features-planned.md"
|
|
88
115
|
```
|
|
89
116
|
|
|
90
117
|
2. **要件ギャップ分析と提案**:
|
|
118
|
+
|
|
91
119
|
- 「システム概要」で確認した目的・スコープと、「実装済み機能」の差分を分析する。
|
|
92
120
|
- 未実装と思われる主要機能をリストアップし、ユーザーに提案する。
|
|
93
121
|
- 「システム概要で『〇〇機能』への言及がありましたが、まだ実装されていないようです。これを予定機能に追加しますか?」
|
|
94
|
-
-
|
|
122
|
+
- 「現在の実装には『××』が含まれていますが、これに関連する『△△ 機能』は将来的に必要になりますか?」
|
|
95
123
|
|
|
96
124
|
3. **ヒアリングと記入**:
|
|
97
125
|
提案内容へのフィードバックを含め、以下の質問を行う。回答をテーブル形式で `docs/project/requirements/03-features-planned.md` に記入する。
|
|
98
126
|
|
|
99
127
|
- 「今後実装予定の機能をリストアップしてください(提案した機能含む)。各機能について以下を明確にします:」
|
|
128
|
+
|
|
100
129
|
- **Category 1**(大分類)
|
|
101
130
|
- **Category 2**(中分類)
|
|
102
131
|
- **機能名**(アイデア段階でも可)
|
|
103
132
|
- **説明**(目的や価値を中心に)
|
|
104
|
-
|
|
105
|
-
※テンプレートの方針に従い、**機能ID**や**優先度**はこの段階では確定させず、柔軟性を重視して記載しない。
|
|
106
133
|
|
|
107
|
-
|
|
134
|
+
※テンプレートの方針に従い、**機能 ID**や**優先度**はこの段階では確定させず、柔軟性を重視して記載しない。
|
|
135
|
+
|
|
136
|
+
### 6. 非機能要件一覧の作成
|
|
108
137
|
|
|
109
138
|
1. **テンプレートの準備**:
|
|
139
|
+
|
|
110
140
|
```bash
|
|
111
141
|
cp ".windsurf/templates/project/01-requirements/04-non-functional-requirements.md" "docs/project/requirements/04-non-functional-requirements.md"
|
|
112
142
|
```
|
|
113
143
|
|
|
114
144
|
2. **必要性の確認と標準提案**:
|
|
145
|
+
|
|
115
146
|
- ユーザーに定義の必要性を確認する:
|
|
147
|
+
|
|
116
148
|
- 「現段階で非機能要件(パフォーマンス、セキュリティなど)を詳細に定義する必要がありますか?『標準的な設定』で仮置きして後で調整することも可能です。」
|
|
117
|
-
|
|
149
|
+
|
|
118
150
|
- 必要または仮置きの場合、一般的なベストプラクティスを提案する:
|
|
119
|
-
- 「Webアプリケーションの標準的な目標値として、以下を提案します。これで問題ないか確認してください:」
|
|
120
|
-
- **パフォーマンス**: ページ読み込み3秒以内、API応答500ms以内
|
|
121
|
-
- **セキュリティ**: HTTPS必須、パスワードはハッシュ化、基本認証/OAuth
|
|
122
|
-
- **可用性**: 日次バックアップ、稼働率99.5%(平日日中)
|
|
151
|
+
- 「Web アプリケーションの標準的な目標値として、以下を提案します。これで問題ないか確認してください:」
|
|
152
|
+
- **パフォーマンス**: ページ読み込み 3 秒以内、API 応答 500ms 以内
|
|
153
|
+
- **セキュリティ**: HTTPS 必須、パスワードはハッシュ化、基本認証/OAuth
|
|
154
|
+
- **可用性**: 日次バックアップ、稼働率 99.5%(平日日中)
|
|
123
155
|
|
|
124
156
|
3. **ヒアリングと記入**:
|
|
125
157
|
提案内容への合意、または独自の要件がある場合、以下の観点で**定量的な目標**を確認し、回答で `docs/project/requirements/04-non-functional-requirements.md` の各テーブルを更新する。
|
|
126
158
|
|
|
127
159
|
#### パフォーマンス
|
|
160
|
+
|
|
128
161
|
- 「ページ読み込み時間の目標は?」
|
|
129
|
-
- 「APIレスポンス時間の目標は?」
|
|
162
|
+
- 「API レスポンス時間の目標は?」
|
|
130
163
|
- 「想定される同時接続ユーザー数、データ量は?」
|
|
131
164
|
|
|
132
165
|
#### セキュリティ
|
|
166
|
+
|
|
133
167
|
- 「認証方式、機密データの扱い、コンプライアンス要件は?」
|
|
134
168
|
|
|
135
169
|
#### 可用性・信頼性
|
|
170
|
+
|
|
136
171
|
- 「稼働率目標、許容ダウンタイム、バックアップ要件は?」
|
|
137
172
|
|
|
138
173
|
#### スケーラビリティ
|
|
174
|
+
|
|
139
175
|
- 「ユーザー数の成長予測、ピーク時のトラフィック想定は?」
|
|
140
176
|
|
|
141
177
|
#### ユーザビリティ・保守性
|
|
178
|
+
|
|
142
179
|
- 「アクセシビリティ、対応言語、デバイス、ブラウザは?」
|
|
143
180
|
- 「ログ・監視要件、デプロイ頻度は?」
|
|
144
181
|
|
|
145
|
-
###
|
|
182
|
+
### 7. ユーザーストーリーの作成
|
|
146
183
|
|
|
147
184
|
1. **テンプレートの準備**:
|
|
185
|
+
|
|
148
186
|
```bash
|
|
149
187
|
cp ".windsurf/templates/project/01-requirements/05-user-stories.md" "docs/project/requirements/05-user-stories.md"
|
|
150
188
|
```
|
|
151
189
|
|
|
152
190
|
2. **分析と提案**:
|
|
191
|
+
|
|
153
192
|
- ここまで作成した「システム概要」「機能一覧(実装済み/予定)」を分析し、主要なユーザージャーニーを抽出する。
|
|
154
193
|
- ユーザーに代表的なストーリーを提案する:
|
|
155
194
|
- 「『〇〇機能』に基づき、以下のストーリーが考えられますが、いかがでしょうか?」
|
|
@@ -161,33 +200,34 @@ auto_execution_mode: 1
|
|
|
161
200
|
- 「他に主要なユーザージャーニーがあれば教えてください([役割]として、[目的]がしたい、なぜなら[理由])。」
|
|
162
201
|
- 各ストーリーの優先度、受け入れ基準を確認する。
|
|
163
202
|
|
|
164
|
-
###
|
|
203
|
+
### 8. 全体レビュー
|
|
165
204
|
|
|
166
205
|
- 作成した全てのドキュメントをユーザーに提示し、内容の正確性を確認する。
|
|
167
206
|
- 「記載内容に誤りや漏れはありませんか?」
|
|
168
207
|
- 「抽象的すぎる記述や、後で解釈が分かれそうな表現はありますか?」
|
|
169
208
|
- 「テンプレートのコメントや不要な例示は適切に処理(残す/削除)されていますか?」
|
|
170
209
|
|
|
171
|
-
###
|
|
210
|
+
### 9. 完了条件と構造の確認
|
|
172
211
|
|
|
173
212
|
- 以下の完了条件を満たしていて、且つドキュメントの構造が適切であることを確認します。
|
|
174
|
-
|
|
213
|
+
|
|
175
214
|
1. **ファイルの存在と構造確認**:
|
|
176
215
|
各ファイルが存在し、テンプレートの主要な構造(見出しやテーブル)が維持されているか検証する。
|
|
216
|
+
|
|
177
217
|
```bash
|
|
178
218
|
# 01-system-overview.md: 主要セクションの確認
|
|
179
219
|
grep "## 背景" docs/project/requirements/01-system-overview.md && echo "OK" || echo "MISSING: 背景"
|
|
180
220
|
grep "## 目的" docs/project/requirements/01-system-overview.md && echo "OK" || echo "MISSING: 目的"
|
|
181
|
-
|
|
221
|
+
|
|
182
222
|
# 02-features-implemented.md: テーブルヘッダーの確認
|
|
183
223
|
grep "| 機能ID | Category 1 |" docs/project/requirements/02-features-implemented.md && echo "OK" || echo "MISSING: Table Header"
|
|
184
|
-
|
|
224
|
+
|
|
185
225
|
# 03-features-planned.md: テーブルヘッダーの確認
|
|
186
226
|
grep "| Category 1 | Category 2 |" docs/project/requirements/03-features-planned.md && echo "OK" || echo "MISSING: Table Header"
|
|
187
|
-
|
|
227
|
+
|
|
188
228
|
# 04-non-functional-requirements.md: テーブルヘッダーの確認
|
|
189
229
|
grep "| カテゴリ | 要件 |" docs/project/requirements/04-non-functional-requirements.md && echo "OK" || echo "MISSING: Table Header"
|
|
190
|
-
|
|
230
|
+
|
|
191
231
|
# 05-user-stories.md: テーブルヘッダーの確認
|
|
192
232
|
grep "| ストーリーID | ストーリー |" docs/project/requirements/05-user-stories.md && echo "OK" || echo "MISSING: Table Header"
|
|
193
233
|
```
|
|
@@ -197,7 +237,7 @@ auto_execution_mode: 1
|
|
|
197
237
|
- [ ] 各ファイルがテンプレートの基本構造を維持していて、主要なセクションやテーブルが適切に記載されている
|
|
198
238
|
- [ ] プレースホルダーが適切な内容に置き換わっていいる
|
|
199
239
|
|
|
200
|
-
###
|
|
240
|
+
### 10. Git への追加(オプション)
|
|
201
241
|
|
|
202
242
|
- ユーザーに確認:「作成した要件定義ドキュメントを Git に追加しますか?」
|
|
203
243
|
- 「はい」の場合、以下を実行:
|
|
@@ -206,6 +246,7 @@ auto_execution_mode: 1
|
|
|
206
246
|
git status
|
|
207
247
|
```
|
|
208
248
|
- Git status の結果を表示し、コミットメッセージの提案をする:
|
|
249
|
+
|
|
209
250
|
```
|
|
210
251
|
推奨コミットメッセージ:
|
|
211
252
|
docs: 要件定義ドキュメントの作成
|
|
@@ -226,4 +267,4 @@ auto_execution_mode: 1
|
|
|
226
267
|
- 競合する要件や矛盾が発見された場合:
|
|
227
268
|
- 「以下の要件が競合しています:[詳細]。優先順位や調整方針を確認させてください。」と報告する。
|
|
228
269
|
- 想定工数が非現実的に大きい場合:
|
|
229
|
-
- 「現在の計画では実現が困難です。スコープ縮小や優先度調整を検討しませんか?」と提案する。
|
|
270
|
+
- 「現在の計画では実現が困難です。スコープ縮小や優先度調整を検討しませんか?」と提案する。
|
package/README.md
CHANGED
|
@@ -2,71 +2,69 @@
|
|
|
2
2
|
|
|
3
3
|
## リポジトリ概要
|
|
4
4
|
|
|
5
|
-
Windsurfで活用するスラッシュコマンドとワークフローの保管庫。調査・要件定義から実装、テスト、デプロイ、Git運用までの開発プロセスを対象としたMarkdownドキュメントを蓄積し、他プロジェクトでも即座に呼び出せるナレッジベースを目指す。
|
|
5
|
+
Windsurf で活用するスラッシュコマンドとワークフローの保管庫。調査・要件定義から実装、テスト、デプロイ、Git 運用までの開発プロセスを対象とした Markdown ドキュメントを蓄積し、他プロジェクトでも即座に呼び出せるナレッジベースを目指す。
|
|
6
6
|
|
|
7
7
|
## 目的
|
|
8
8
|
|
|
9
9
|
- 反復的な開発タスクを標準化し、スラッシュコマンドとして再利用可能にする。
|
|
10
|
-
- 調査、仕様策定、実装支援、デバッグ、レビュー、リリース、Git管理など各フェーズのベストプラクティスを明文化する。
|
|
11
|
-
- 実行可能コードは置かず、Windsurfでのコマンド入力やドキュメント参照に最適化したMarkdown中心の構成を維持する。
|
|
10
|
+
- 調査、仕様策定、実装支援、デバッグ、レビュー、リリース、Git 管理など各フェーズのベストプラクティスを明文化する。
|
|
11
|
+
- 実行可能コードは置かず、Windsurf でのコマンド入力やドキュメント参照に最適化した Markdown 中心の構成を維持する。
|
|
12
12
|
|
|
13
13
|
## ディレクトリ構成
|
|
14
14
|
|
|
15
|
-
- `.windsurf/workflows/` — スラッシュコマンド定義(各種ワークフローMarkdown)
|
|
15
|
+
- `.windsurf/workflows/` — スラッシュコマンド定義(各種ワークフロー Markdown)
|
|
16
16
|
- `a-NNN-*.md` — プロジェクト設計ワークフロー(要件定義、設計、アーキテクチャ)
|
|
17
17
|
- `b-NNN-*.md` — タスク管理ワークフロー(タスク作成、リサーチ、実装計画)
|
|
18
18
|
- `c-NNN-*.md` — 実装実行ワークフロー(ステップバイステップ実装)
|
|
19
19
|
- `x-Object-Action.md` — 補助的なワークフロー(例: `x-Code-Refactor`, `x-CI-Setup`, `x-Repository-PushToGithub`)
|
|
20
20
|
- `z-*.md` — メタワークフロー(ワークフロー作成支援など)
|
|
21
|
-
- `.windsurf/templates/` — テンプレート定義(各種テンプレートMarkdown)
|
|
21
|
+
- `.windsurf/templates/` — テンプレート定義(各種テンプレート Markdown)
|
|
22
22
|
- `project/` — プロジェクトレベルのテンプレート
|
|
23
23
|
- `tasks/task-template/` — タスクレベルのテンプレート
|
|
24
24
|
- `a-definition.md` — タスク定義テンプレート
|
|
25
25
|
- `b-research.md` — リサーチテンプレート
|
|
26
26
|
- `c-implementation.md` — 実装タスクリストテンプレート
|
|
27
27
|
- `README.md` — リポジトリの使い方と方針
|
|
28
|
-
- `CLAUDE.md` — Claude Code向けプロジェクト説明
|
|
28
|
+
- `CLAUDE.md` — Claude Code 向けプロジェクト説明
|
|
29
29
|
- `slash-commands-best-practices.md` - スラッシュコマンドのベストプラクティス
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## インストール
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
1. Windsurfで必要なワークフローを参照したいタイミングで該当Markdownを開く。
|
|
33
|
+
1. Windsurf で必要なワークフローを参照したいタイミングで該当 Markdown を開く。
|
|
36
34
|
2. コマンド化したい手順はスラッシュコマンドとしてコピーし、自身のプロジェクトで呼び出して利用する。
|
|
37
|
-
3. 新規ワークフローを追加する際は`.windsurf/workflows/`配下にMarkdownを作成し、ファイル名は用途が想起できるスラッグ形式にする(例: `jira-ticket.md`)。
|
|
35
|
+
3. 新規ワークフローを追加する際は`.windsurf/workflows/`配下に Markdown を作成し、ファイル名は用途が想起できるスラッグ形式にする(例: `jira-ticket.md`)。
|
|
38
36
|
|
|
39
37
|
### ワークフロー体系
|
|
40
38
|
|
|
41
|
-
本リポジトリは開発ライフサイクル全体をカバーする4つのワークフロー系列を提供します:
|
|
39
|
+
本リポジトリは開発ライフサイクル全体をカバーする 4 つのワークフロー系列を提供します:
|
|
42
40
|
|
|
43
|
-
- **A系列**: プロジェクト設計ワークフロー(要件定義、ドメインモデル、設計)
|
|
44
|
-
- **B系列**: タスク管理ワークフロー(タスク作成、リサーチ、実装計画)
|
|
45
|
-
- **C系列**: 実装実行ワークフロー(ステップバイステップ実装、ドキュメント更新)
|
|
46
|
-
- **X系列**: 補助的なワークフロー(リファクタリング、CI/CD、コード生成など)
|
|
41
|
+
- **A 系列**: プロジェクト設計ワークフロー(要件定義、ドメインモデル、設計)
|
|
42
|
+
- **B 系列**: タスク管理ワークフロー(タスク作成、リサーチ、実装計画)
|
|
43
|
+
- **C 系列**: 実装実行ワークフロー(ステップバイステップ実装、ドキュメント更新)
|
|
44
|
+
- **X 系列**: 補助的なワークフロー(リファクタリング、CI/CD、コード生成など)
|
|
47
45
|
|
|
48
|
-
## プロジェクト設計ワークフロー(A系列)
|
|
46
|
+
## プロジェクト設計ワークフロー(A 系列)
|
|
49
47
|
|
|
50
48
|
プロジェクト開始時に一度実行し、要件定義からドメインモデル、設計までを体系的に作成します。
|
|
51
49
|
|
|
52
|
-
### 実行順序(A系列)
|
|
50
|
+
### 実行順序(A 系列)
|
|
53
51
|
|
|
54
52
|
**要件・ドメインフェーズ**(a-001 〜 a-006):
|
|
55
53
|
|
|
56
54
|
1. `/a-001-SetupDocStructure` — ドキュメント構造のセットアップ
|
|
57
55
|
2. `/a-002-InitializeProject` — プロジェクト初期化(課題、解決策、スコープ)
|
|
58
|
-
3. `/a-003-CreateScenarios` — BDD形式でのシナリオ定義(Gherkin)
|
|
56
|
+
3. `/a-003-CreateScenarios` — BDD 形式でのシナリオ定義(Gherkin)
|
|
59
57
|
4. `/a-004-DefineDomainModel` — ドメインモデル定義(Event Storming)
|
|
60
|
-
5. `/a-005-CreateDomainDiagram` — DDD設計(Bounded Context、Aggregate)
|
|
58
|
+
5. `/a-005-CreateDomainDiagram` — DDD 設計(Bounded Context、Aggregate)
|
|
61
59
|
6. **`/a-006-ReviewRequirementsDomain`** — 要件とドメインモデルのレビュー ⭐
|
|
62
60
|
|
|
63
61
|
**設計フェーズ**(a-007 〜 a-014):
|
|
64
62
|
|
|
65
63
|
1. `/a-007-DefineTechStack` — 技術スタック選定
|
|
66
64
|
2. `/a-008-DefineRepositoryStructure` — リポジトリ構造定義
|
|
67
|
-
3. `/a-009-DefineScreenDesign` — 画面設計(Empty State重視)
|
|
65
|
+
3. `/a-009-DefineScreenDesign` — 画面設計(Empty State 重視)
|
|
68
66
|
4. `/a-010-DefineDataModel` — データモデル設計(ERD)
|
|
69
|
-
5. `/a-011-DefineAPISpec` — API仕様定義
|
|
67
|
+
5. `/a-011-DefineAPISpec` — API 仕様定義
|
|
70
68
|
6. `/a-012-DefineArchitecture` — アーキテクチャ設計(ADR)
|
|
71
69
|
7. `/a-013-DefineInfrastructure` — インフラ設計(RPO/RTO)
|
|
72
70
|
8. **`/a-014-ReviewDesign`** — 設計ドキュメントの一貫性レビュー ⭐
|
|
@@ -78,30 +76,34 @@ Windsurfで活用するスラッシュコマンドとワークフローの保管
|
|
|
78
76
|
|
|
79
77
|
これらのレビューワークフローにより、実装前にドキュメント間の不整合を検出し、手戻りを防止します。
|
|
80
78
|
|
|
81
|
-
## タスク管理ワークフロー(B系列)
|
|
79
|
+
## タスク管理ワークフロー(B 系列)
|
|
82
80
|
|
|
83
81
|
タスクの計画から実装まで、以下のワークフローを順次実行します:
|
|
84
82
|
|
|
85
83
|
1. **タスクディレクトリ作成**: `/b-000-CreateTaskDirectory`
|
|
86
|
-
|
|
84
|
+
|
|
85
|
+
- タスク ID 自動採番(task000001, task000002, ...)
|
|
87
86
|
- ディレクトリ作成: `docs/tasks/task000001-{スラッグ}/`
|
|
88
87
|
- テンプレートファイル(a-definition.md, b-research.md, c-implementation.md)を自動コピー
|
|
89
88
|
|
|
90
89
|
2. **タスク定義**: `/b-001-CreateTaskDefinition`
|
|
90
|
+
|
|
91
91
|
- 目的の明確化(解決する問題、提供する価値)
|
|
92
92
|
- ユーザーストーリーの定義
|
|
93
93
|
- 変更内容の詳細化(画面、データモデル、API、ビジネスロジック)
|
|
94
94
|
- 受け入れ基準の定義(正常系、異常系、テスト、セキュリティ)
|
|
95
95
|
|
|
96
96
|
3. **リサーチ**: `/b-002-CreateTaskResearch`
|
|
97
|
+
|
|
97
98
|
- ベストプラクティスの調査
|
|
98
99
|
- 既存コードの調査と再利用可能性の確認
|
|
99
100
|
- 技術選定(ライブラリ、フレームワーク)
|
|
100
101
|
- 技術的リスクの洗い出しと軽減策
|
|
101
102
|
|
|
102
103
|
4. **実装計画**: `/b-003-CreateTaskImplementation`
|
|
103
|
-
|
|
104
|
-
-
|
|
104
|
+
|
|
105
|
+
- フェーズ分割(1-3 日粒度)
|
|
106
|
+
- ステップ定義(1-3 時間粒度)
|
|
105
107
|
- 成果物の明確化(具体的なファイル名)
|
|
106
108
|
- フェーズごとの受け入れ基準
|
|
107
109
|
|
|
@@ -114,25 +116,26 @@ Windsurfで活用するスラッシュコマンドとワークフローの保管
|
|
|
114
116
|
|
|
115
117
|
### タスクレビューの重要性
|
|
116
118
|
|
|
117
|
-
b-004は実装開始前の「最後の砦」として、以下を保証します:
|
|
119
|
+
b-004 は実装開始前の「最後の砦」として、以下を保証します:
|
|
118
120
|
|
|
119
121
|
- すべての変更内容に実装ステップが存在する(漏れ防止)
|
|
120
122
|
- すべてのユーザーストーリーが実装でカバーされている(要件充足)
|
|
121
123
|
- 技術的リスクの軽減策が計画されている(リスク管理)
|
|
122
124
|
- 既存コンポーネントが再利用されている(車輪の再発明防止)
|
|
123
125
|
|
|
124
|
-
## 実装実行ワークフロー(C系列)
|
|
126
|
+
## 実装実行ワークフロー(C 系列)
|
|
125
127
|
|
|
126
128
|
タスクレビュー(b-004)完了後、実装を実行し、完了後にドキュメントを更新します。
|
|
127
129
|
|
|
128
|
-
### 実行順序(C系列)
|
|
130
|
+
### 実行順序(C 系列)
|
|
129
131
|
|
|
130
132
|
1. **実装実行**: `/c-001-ImplementTask`
|
|
131
|
-
|
|
133
|
+
|
|
134
|
+
- 各ステップを順次実行(speckit.implement スタイル)
|
|
132
135
|
- 依存関係を尊重、並列実行を最適化(`[P]`マーク)
|
|
133
136
|
- ステップごとにテスト実行とチェックボックス更新
|
|
134
137
|
- フェーズごとに受け入れ基準を確認
|
|
135
|
-
- 最終テスト、コミット、PR作成
|
|
138
|
+
- 最終テスト、コミット、PR 作成
|
|
136
139
|
|
|
137
140
|
2. **ドキュメント更新**: `/c-002-UpdateDocumentation`
|
|
138
141
|
- 実装完了後にドキュメントを実装内容に合わせて更新
|
|
@@ -144,17 +147,17 @@ b-004は実装開始前の「最後の砦」として、以下を保証します
|
|
|
144
147
|
|
|
145
148
|
### 実装
|
|
146
149
|
|
|
147
|
-
c-001は以下の原則に従います:
|
|
150
|
+
c-001 は以下の原則に従います:
|
|
148
151
|
|
|
149
152
|
- **仕様駆動開発**: タスク定義とリサーチが実行可能な仕様として機能
|
|
150
|
-
- **段階的な実装**: ステップごとに進める(1ステップ = 1-3時間)
|
|
153
|
+
- **段階的な実装**: ステップごとに進める(1 ステップ = 1-3 時間)
|
|
151
154
|
- **依存関係の尊重**: 順序を守り、前ステップ完了を確認
|
|
152
155
|
- **並列実行の最適化**: `[P]`マークで独立ステップを並列実行
|
|
153
156
|
- **継続的な検証**: 各ステップでテスト実行、受け入れ基準を確認
|
|
154
157
|
|
|
155
|
-
## 補助的なワークフロー(X系列)
|
|
158
|
+
## 補助的なワークフロー(X 系列)
|
|
156
159
|
|
|
157
|
-
実装中に必要となる補助的なタスクを実行するワークフローです。Object-Action命名規則に従います。
|
|
160
|
+
実装中に必要となる補助的なタスクを実行するワークフローです。Object-Action 命名規則に従います。
|
|
158
161
|
|
|
159
162
|
### 主要なワークフロー
|
|
160
163
|
|
|
@@ -172,30 +175,30 @@ c-001は以下の原則に従います:
|
|
|
172
175
|
**開発環境・CI/CD**:
|
|
173
176
|
|
|
174
177
|
- `/x-DevEnvironment-Setup` — 開発環境セットアップ
|
|
175
|
-
- `/x-CI-Setup` — CI/CDセットアップ
|
|
176
|
-
- `/x-CI-FixFailure` — CI失敗修正
|
|
178
|
+
- `/x-CI-Setup` — CI/CD セットアップ
|
|
179
|
+
- `/x-CI-FixFailure` — CI 失敗修正
|
|
177
180
|
- `/x-Logging-Add` — ログ実装
|
|
178
181
|
|
|
179
182
|
**コード生成・最適化**:
|
|
180
183
|
|
|
181
|
-
- `/x-Component-Create` — UIコンポーネント生成
|
|
184
|
+
- `/x-Component-Create` — UI コンポーネント生成
|
|
182
185
|
- `/x-Migration-Create` — マイグレーション作成
|
|
183
186
|
- `/x-Database-Seed` — データベースシード
|
|
184
187
|
- `/x-Bundle-Optimize` — バンドル最適化
|
|
185
188
|
|
|
186
189
|
**Git・リポジトリ管理**:
|
|
187
190
|
|
|
188
|
-
- `/x-Repository-Push` — GitHub/GitLabへのプッシュ(汎用)
|
|
189
|
-
- `/x-Repository-PushToGithub` — GitHubへのプッシュ
|
|
191
|
+
- `/x-Repository-Push` — GitHub/GitLab へのプッシュ(汎用)
|
|
192
|
+
- `/x-Repository-PushToGithub` — GitHub へのプッシュ
|
|
190
193
|
|
|
191
194
|
**その他**:
|
|
192
195
|
|
|
193
196
|
- `/x-Dependencies-Update` — 依存関係更新
|
|
194
197
|
- `/x-Accessibility-Check` — アクセシビリティ監査
|
|
195
198
|
|
|
196
|
-
### X系列の特徴
|
|
199
|
+
### X 系列の特徴
|
|
197
200
|
|
|
198
|
-
- **フレームワーク非依存**: React/Vue/Svelte、Prisma/TypeORM、Webpack/Viteなど複数の技術に対応
|
|
201
|
+
- **フレームワーク非依存**: React/Vue/Svelte、Prisma/TypeORM、Webpack/Vite など複数の技術に対応
|
|
199
202
|
- **再利用可能**: どのプロジェクトでも即座に利用可能
|
|
200
203
|
- **チェックリスト形式**: 実行漏れを防止
|
|
201
204
|
- **ベストプラクティス統合**: 公式ドキュメントや業界標準を反映
|
|
@@ -244,13 +247,13 @@ c-001は以下の原則に従います:
|
|
|
244
247
|
|
|
245
248
|
### レビューワークフローの位置づけ
|
|
246
249
|
|
|
247
|
-
3
|
|
250
|
+
3 つのレビューワークフロー(⭐ マーク)が品質を保証します:
|
|
248
251
|
|
|
249
|
-
| レビュー
|
|
250
|
-
|
|
251
|
-
| **a-006** | 要件・ドメイン完成時 | 要件 ↔ シナリオ ↔ ドメインモデル
|
|
252
|
-
| **a-014** | 設計完成時
|
|
253
|
-
| **b-004** | 各タスク実装前
|
|
252
|
+
| レビュー | タイミング | 対象 | 効果 |
|
|
253
|
+
| --------- | -------------------- | ------------------------------------------ | ------------------------ |
|
|
254
|
+
| **a-006** | 要件・ドメイン完成時 | 要件 ↔ シナリオ ↔ ドメインモデル | ドメイン設計の妥当性検証 |
|
|
255
|
+
| **a-014** | 設計完成時 | データモデル ↔ API ↔ 画面 ↔ アーキテクチャ | 設計の一貫性検証 |
|
|
256
|
+
| **b-004** | 各タスク実装前 | タスク定義 ↔ リサーチ ↔ 実装計画 | 実装漏れ防止 |
|
|
254
257
|
|
|
255
258
|
### タスクディレクトリ構造の例
|
|
256
259
|
|
|
@@ -271,10 +274,10 @@ docs/
|
|
|
271
274
|
└── c-implementation.md
|
|
272
275
|
```
|
|
273
276
|
|
|
274
|
-
各タスクディレクトリには3つのドキュメントが含まれ、タスクの計画から実装まで一貫して管理できます。
|
|
277
|
+
各タスクディレクトリには 3 つのドキュメントが含まれ、タスクの計画から実装まで一貫して管理できます。
|
|
275
278
|
|
|
276
279
|
## 更新ポリシー
|
|
277
280
|
|
|
278
281
|
- 各ドキュメントは最新の開発手法に合わせて継続的に改善する。
|
|
279
|
-
- 重複や冗長な情報は統合し、DRY原則を徹底する。
|
|
280
|
-
- 追加の開発フェーズや管理領域が生じた場合は、該当するスラッシュコマンドを新設してREADMEにも追記する。
|
|
282
|
+
- 重複や冗長な情報は統合し、DRY 原則を徹底する。
|
|
283
|
+
- 追加の開発フェーズや管理領域が生じた場合は、該当するスラッシュコマンドを新設して README にも追記する。
|
package/bin/cli.js
CHANGED
|
@@ -1,35 +1,45 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
const fs = require(
|
|
4
|
-
const path = require(
|
|
5
|
-
const prompts = require(
|
|
6
|
-
const { bold, green, cyan, red } = require(
|
|
3
|
+
const fs = require('fs-extra');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const prompts = require('prompts');
|
|
6
|
+
const { bold, green, cyan, red } = require('kleur');
|
|
7
7
|
|
|
8
8
|
async function main() {
|
|
9
|
-
console.log(
|
|
10
|
-
bold().cyan("\n🚀 Welcome to Yodogawa Slash Commands Installer!\n")
|
|
11
|
-
);
|
|
9
|
+
console.log(bold().cyan('\n🚀 Welcome to Yodogawa Slash Commands Installer!\n'));
|
|
12
10
|
|
|
13
11
|
const response = await prompts({
|
|
14
|
-
type:
|
|
15
|
-
name:
|
|
16
|
-
message:
|
|
12
|
+
type: 'select',
|
|
13
|
+
name: 'type',
|
|
14
|
+
message: 'Which configuration would you like to install?',
|
|
17
15
|
choices: [
|
|
18
|
-
{ title:
|
|
19
|
-
{ title:
|
|
20
|
-
|
|
16
|
+
{ title: 'Windsurf (.windsurf)', value: 'windsurf' },
|
|
17
|
+
{ title: 'Antigravity (.agent)', value: 'antigravity' },
|
|
18
|
+
{ title: 'Cursor (.cursor)', value: 'cursor' },
|
|
19
|
+
{ title: 'Claude Code (.claude)', value: 'claude' }
|
|
20
|
+
]
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
if (!response.type) {
|
|
24
|
-
console.log(red(
|
|
24
|
+
console.log(red('✖ Operation cancelled.'));
|
|
25
25
|
process.exit(0);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
// Determine source directory (where the package is installed)
|
|
29
|
-
const sourceDir = path.join(__dirname,
|
|
30
|
-
|
|
29
|
+
const sourceDir = path.join(__dirname, '..', '.windsurf');
|
|
30
|
+
|
|
31
31
|
// Determine target directory (current working directory of the user)
|
|
32
|
-
|
|
32
|
+
let targetDirName;
|
|
33
|
+
if (response.type === 'windsurf') {
|
|
34
|
+
targetDirName = '.windsurf';
|
|
35
|
+
} else if (response.type === 'antigravity') {
|
|
36
|
+
targetDirName = '.agent';
|
|
37
|
+
} else if (response.type === 'cursor') {
|
|
38
|
+
targetDirName = '.cursor';
|
|
39
|
+
} else {
|
|
40
|
+
targetDirName = '.claude';
|
|
41
|
+
}
|
|
42
|
+
|
|
33
43
|
const targetDir = path.join(process.cwd(), targetDirName);
|
|
34
44
|
|
|
35
45
|
if (!fs.existsSync(sourceDir)) {
|
|
@@ -41,14 +51,14 @@ async function main() {
|
|
|
41
51
|
try {
|
|
42
52
|
if (fs.existsSync(targetDir)) {
|
|
43
53
|
const confirm = await prompts({
|
|
44
|
-
type:
|
|
45
|
-
name:
|
|
54
|
+
type: 'confirm',
|
|
55
|
+
name: 'overwrite',
|
|
46
56
|
message: `Directory ${targetDirName} already exists. Overwrite?`,
|
|
47
|
-
initial: false
|
|
57
|
+
initial: false
|
|
48
58
|
});
|
|
49
59
|
|
|
50
60
|
if (!confirm.overwrite) {
|
|
51
|
-
console.log(red(
|
|
61
|
+
console.log(red('✖ Operation cancelled.'));
|
|
52
62
|
process.exit(0);
|
|
53
63
|
}
|
|
54
64
|
}
|
|
@@ -56,19 +66,29 @@ async function main() {
|
|
|
56
66
|
console.log(`\nCopying workflows to ${bold(targetDirName)}...`);
|
|
57
67
|
await fs.copy(sourceDir, targetDir);
|
|
58
68
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
69
|
+
// Special handling for Cursor and Claude Code: rename workflows to commands
|
|
70
|
+
if (response.type === 'cursor' || response.type === 'claude') {
|
|
71
|
+
const workflowsDir = path.join(targetDir, 'workflows');
|
|
72
|
+
const commandsDir = path.join(targetDir, 'commands');
|
|
73
|
+
|
|
74
|
+
if (fs.existsSync(workflowsDir)) {
|
|
75
|
+
console.log(`Renaming workflows to commands for ${response.type}...`);
|
|
76
|
+
await fs.move(workflowsDir, commandsDir, { overwrite: true });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
console.log(green(`\n✔ Successfully installed ${response.type} workflows!`));
|
|
62
81
|
console.log(`\nNext steps:`);
|
|
63
82
|
console.log(`1. Open ${bold(targetDirName)} to explore the workflows.`);
|
|
64
83
|
console.log(`2. Start using them in your project!\n`);
|
|
84
|
+
|
|
65
85
|
} catch (err) {
|
|
66
86
|
console.error(red(`\n✖ Error copying files: ${err.message}`));
|
|
67
87
|
process.exit(1);
|
|
68
88
|
}
|
|
69
89
|
}
|
|
70
90
|
|
|
71
|
-
main().catch(
|
|
91
|
+
main().catch(err => {
|
|
72
92
|
console.error(red(err));
|
|
73
93
|
process.exit(1);
|
|
74
94
|
});
|