yodogawa 1.0.0

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.
Files changed (61) hide show
  1. package/.windsurf/templates/documentation-rules.md +143 -0
  2. package/.windsurf/templates/project/01-requirements/01-system-overview.md +49 -0
  3. package/.windsurf/templates/project/01-requirements/02-features-implemented.md +73 -0
  4. package/.windsurf/templates/project/01-requirements/03-features-planned.md +75 -0
  5. package/.windsurf/templates/project/01-requirements/04-non-functional-requirements.md +115 -0
  6. package/.windsurf/templates/project/01-requirements/05-user-stories.md +124 -0
  7. package/.windsurf/templates/project/02-behavior/01-scenarios.md +406 -0
  8. package/.windsurf/templates/project/03-domain/01-domain-model.md +338 -0
  9. package/.windsurf/templates/project/03-domain/02-ubiquitous-language.md +153 -0
  10. package/.windsurf/templates/project/04-design/01-tech-stack.md +360 -0
  11. package/.windsurf/templates/project/04-design/02-repository-structure.md +390 -0
  12. package/.windsurf/templates/project/04-design/03-screen-design.md +586 -0
  13. package/.windsurf/templates/project/04-design/04-data-model.md +211 -0
  14. package/.windsurf/templates/project/04-design/05-api-spec.md +221 -0
  15. package/.windsurf/templates/project/04-design/06-architecture.md +183 -0
  16. package/.windsurf/templates/project/04-design/07-infrastructure.md +180 -0
  17. package/.windsurf/templates/tasks/task-template/a-definition.md +143 -0
  18. package/.windsurf/templates/tasks/task-template/b-research.md +185 -0
  19. package/.windsurf/templates/tasks/task-template/c-implementation.md +197 -0
  20. package/.windsurf/workflows/a-001-SetupDocStructure.md +165 -0
  21. package/.windsurf/workflows/a-002-InitializeProject.md +229 -0
  22. package/.windsurf/workflows/a-003-CreateScenarios.md +130 -0
  23. package/.windsurf/workflows/a-004-DefineDomainModel.md +133 -0
  24. package/.windsurf/workflows/a-005-CreateDomainDiagram.md +114 -0
  25. package/.windsurf/workflows/a-006-ReviewRequirementsDomain.md +132 -0
  26. package/.windsurf/workflows/a-007-DefineTechStack.md +121 -0
  27. package/.windsurf/workflows/a-008-DefineRepositoryStructure.md +118 -0
  28. package/.windsurf/workflows/a-009-DefineScreenDesign.md +121 -0
  29. package/.windsurf/workflows/a-010-DefineDataModel.md +125 -0
  30. package/.windsurf/workflows/a-011-DefineAPISpec.md +123 -0
  31. package/.windsurf/workflows/a-012-DefineArchitecture.md +119 -0
  32. package/.windsurf/workflows/a-013-DefineInfrastructure.md +120 -0
  33. package/.windsurf/workflows/a-014-ReviewDesign.md +122 -0
  34. package/.windsurf/workflows/b-001-CreateTaskDirectory.md +71 -0
  35. package/.windsurf/workflows/b-002-CreateTaskDefinition.md +165 -0
  36. package/.windsurf/workflows/b-003-CreateTaskResearch.md +412 -0
  37. package/.windsurf/workflows/b-004-CreateTaskImplementation.md +97 -0
  38. package/.windsurf/workflows/b-005-ReviewTask.md +312 -0
  39. package/.windsurf/workflows/c-001-ImplementTask.md +493 -0
  40. package/.windsurf/workflows/c-002-UpdateDocumentation.md +797 -0
  41. package/.windsurf/workflows/x-Accessibility-Check.md +469 -0
  42. package/.windsurf/workflows/x-Bundle-Optimize.md +386 -0
  43. package/.windsurf/workflows/x-CI-FixFailure.md +636 -0
  44. package/.windsurf/workflows/x-CI-Setup.md +641 -0
  45. package/.windsurf/workflows/x-Code-Refactor.md +71 -0
  46. package/.windsurf/workflows/x-Code-ResearchAndReview.md +78 -0
  47. package/.windsurf/workflows/x-Component-Create.md +359 -0
  48. package/.windsurf/workflows/x-Context-CatchUp.md +63 -0
  49. package/.windsurf/workflows/x-Database-Seed.md +300 -0
  50. package/.windsurf/workflows/x-Dependencies-Update.md +315 -0
  51. package/.windsurf/workflows/x-DevEnvironment-Setup.md +437 -0
  52. package/.windsurf/workflows/x-Logging-Add.md +682 -0
  53. package/.windsurf/workflows/x-Migration-Create.md +354 -0
  54. package/.windsurf/workflows/x-Problem-RootCauseAnalysis.md +65 -0
  55. package/.windsurf/workflows/x-Repository-Push.md +375 -0
  56. package/.windsurf/workflows/x-Repository-PushToGithub.md +72 -0
  57. package/.windsurf/workflows/x-Requirements-Clarify.md +61 -0
  58. package/.windsurf/workflows/z-CreateWorkflow.md +77 -0
  59. package/README.md +280 -0
  60. package/bin/cli.js +74 -0
  61. package/package.json +28 -0
@@ -0,0 +1,406 @@
1
+ # Gherkinシナリオ一覧
2
+
3
+ <!--
4
+ 何を書くか: Gherkin形式で記述した振る舞いシナリオ(BDD)
5
+
6
+ 目的:
7
+ - ユーザー視点での具体的な動作例を記述
8
+ - 開発者、QA、ステークホルダーの共通理解を構築
9
+ - 自動テストの基礎として活用(Cucumber、SpecFlow等)
10
+ - ドメインイベントやコマンドの発見(Event Stormingの入力)
11
+
12
+ BDD(Behavior-Driven Development)とは:
13
+ - Example First: 具体例から始める開発手法
14
+ - Given-When-Then形式で振る舞いを記述
15
+ - 実行可能なドキュメント(テストとして自動化可能)
16
+ - 非技術者も理解できる平易な言葉で記述
17
+
18
+ Gherkinとは:
19
+ - BDDのためのドメイン特化言語(DSL)
20
+ - Feature, Scenario, Given, When, Thenなどのキーワードで構成
21
+ - 人間が読みやすく、機械も解析可能
22
+ - Cucumber、SpecFlow、Behatなどのツールで実行可能
23
+
24
+ ドキュメント構成:
25
+ 1. シナリオ一覧テーブル: 全シナリオの概要(検索性、トラッキング)
26
+ 2. シナリオ詳細: Feature単位でGherkin形式で記述
27
+
28
+ 記載のポイント:
29
+ - ユーザーストーリーから具体的なシナリオを抽出
30
+ - 1シナリオ = 1つの具体的な例
31
+ - ハッピーパス(正常系)から開始し、徐々にエッジケースを追加
32
+ - 宣言的スタイル(What)で記述、実装詳細(How)は避ける
33
+
34
+ 更新頻度:
35
+ - ユーザーストーリー作成後に作成
36
+ - スプリント計画時に詳細化
37
+ - 実装完了後も Living Documentation として維持
38
+ -->
39
+
40
+ ---
41
+
42
+ ## シナリオ一覧
43
+
44
+ <!--
45
+ すべてのシナリオの概要リスト
46
+
47
+ 目的:
48
+ - シナリオの全体像を把握
49
+ - 機能別のシナリオ数を確認
50
+ - 優先度の管理
51
+ - 実装状況の追跡(オプション)
52
+
53
+ 【シナリオID】
54
+ - 形式: SC-XXX(Scenario)
55
+ - 採番ルール: 連番、一意の識別子
56
+ - 用途: テスト自動化ツールとの紐付け、トレーサビリティ
57
+ - Gherkin内では @SC-XXX タグで参照
58
+
59
+ 【機能】
60
+ - Featureに対応する機能名
61
+ - 同じFeature内のシナリオをグループ化
62
+ - 例: 「ユーザー登録」「注文処理」「検索機能」
63
+
64
+ 【シナリオ名】
65
+ - シナリオの内容を簡潔に表現(5-10単語程度)
66
+ - ユーザーの視点で記述
67
+ - 例: 「有効なメールアドレスで登録成功」「在庫切れ商品の購入エラー」
68
+
69
+ 【優先度】
70
+ - High: 必須シナリオ、リリース前に実装・テスト必須
71
+ - Medium: 重要だが緊急ではない
72
+ - Low: エッジケース、将来的に追加
73
+
74
+ 【ステータス】(オプション - 追加する場合)
75
+ - Todo: 未実装
76
+ - In Progress: 実装中
77
+ - Done: 完了(テストパス)
78
+ - カラムを追加することで実装状況を追跡可能
79
+ -->
80
+
81
+ | シナリオID | 機能 | シナリオ名 | 優先度 |
82
+ |-----------|------|-----------|--------|
83
+ | <!-- 例: SC-001 --> | <!-- 例: ユーザー登録 --> | <!-- 例: 有効なメールアドレスでの登録成功 --> | <!-- 例: High --> |
84
+ | <!-- 例: SC-002 --> | <!-- 例: ユーザー登録 --> | <!-- 例: 無効なメールアドレスでの登録エラー --> | <!-- 例: High --> |
85
+ | <!-- 例: SC-003 --> | <!-- 例: ユーザー登録 --> | <!-- 例: 既存メールアドレスでの登録エラー --> | <!-- 例: Medium --> |
86
+ | <!-- 例: SC-004 --> | <!-- 例: 注文処理 --> | <!-- 例: 商品をカートに追加 --> | <!-- 例: High --> |
87
+
88
+ ---
89
+
90
+ ## シナリオ詳細
91
+
92
+ <!--
93
+ 各FeatureをGherkin形式で記述
94
+
95
+ 構成:
96
+ - Feature単位でセクション化(### Feature: 機能名)
97
+ - 各Feature内に複数のScenarioを含める
98
+ - @SC-XXXタグでシナリオIDを紐付ける
99
+
100
+ Gherkinの主要キーワード:
101
+ - Feature: 機能の説明
102
+ - Background: すべてのシナリオ共通の前提条件
103
+ - Scenario: 個別のシナリオ
104
+ - Scenario Outline: パラメータ化されたシナリオ(複数の例を実行)
105
+ - Given: 前提条件(システムの初期状態)
106
+ - When: アクション(ユーザーの操作やイベント)
107
+ - Then: 期待される結果(検証可能な結果)
108
+ - And/But: Given、When、Thenの追加ステップ
109
+ - Examples: Scenario Outlineで使用するデータテーブル
110
+
111
+ タグの活用:
112
+ - @SC-XXX: シナリオIDとの紐付け
113
+ - @smoke, @regression: テストカテゴリ
114
+ - @wip: 作業中(Work In Progress)
115
+ - @slow: 実行時間が長いテスト
116
+ - 複数タグを同時に使用可能
117
+ -->
118
+
119
+ ---
120
+
121
+ ### Feature: [機能名 1]
122
+
123
+ <!--
124
+ Feature(フィーチャー)の記述
125
+
126
+ 【構成】
127
+ Feature: [機能名]
128
+ [機能の説明 - 自由形式のテキスト]
129
+
130
+ As a [役割]
131
+ I want [機能]
132
+ So that [価値]
133
+
134
+ 【記載内容】
135
+ - 機能の目的と価値を1-3文で説明
136
+ - ユーザーストーリー形式で記述(As a, I want, So that)
137
+ - 技術的詳細ではなく、ビジネス価値を記述
138
+
139
+ 【Background(オプション)】
140
+ - すべてのシナリオで共通する前提条件
141
+ - 通常はGivenステップのみ
142
+ - 重複を排除し、シナリオを簡潔にする(DRY原則)
143
+
144
+ 【Scenario】
145
+ - Given-When-Then構造で記述
146
+ - @SC-XXXタグでシナリオIDを紐付ける
147
+ - 1 Feature内に複数のScenarioを含める
148
+
149
+ 【ベストプラクティス】
150
+ 1. **宣言的スタイル**: UIの操作詳細ではなく、ユーザーの意図を記述
151
+ ❌ When "登録"ボタンをクリックし、"OK"ボタンをクリックする
152
+ ✅ When 登録を完了する
153
+
154
+ 2. **1シナリオ1例**: 複数のケースは別シナリオまたはScenario Outlineで
155
+
156
+ 3. **具体的な値**: 抽象的ではなく、具体的なデータを使用
157
+ ❌ Then エラーが表示される
158
+ ✅ Then "無効なメールアドレスです"というエラーが表示される
159
+
160
+ 4. **実装から独立**: UIや技術が変わってもシナリオは変わらない
161
+
162
+ 5. **ユーザー視点**: 開発者用語ではなく、ユーザーが理解できる言葉
163
+
164
+ 【例】
165
+ Feature: ユーザー登録
166
+ 新しいユーザーがアカウントを作成できる機能
167
+
168
+ As a 新規ユーザー
169
+ I want メールアドレスとパスワードでアカウントを登録したい
170
+ So that システムを利用できるようになる
171
+
172
+ Background:
173
+ Given システムが起動している
174
+
175
+ @SC-001 @smoke @happy-path
176
+ Scenario: 有効なメールアドレスでの登録成功
177
+ Given ユーザーが登録ページにいる
178
+ When 有効なメールアドレス "user@example.com" とパスワードで登録する
179
+ Then アカウントが作成される
180
+ And ウェルカムメールが送信される
181
+ And ダッシュボードにリダイレクトされる
182
+
183
+ @SC-002 @validation @error-handling
184
+ Scenario: 無効なメールアドレスでの登録エラー
185
+ Given ユーザーが登録ページにいる
186
+ When 無効なメールアドレス "invalid-email" で登録する
187
+ Then "無効なメールアドレスです"というエラーが表示される
188
+ And アカウントは作成されない
189
+ -->
190
+
191
+ ```gherkin
192
+ @smoke @regression
193
+ Feature: [機能名]
194
+ [機能の説明]
195
+
196
+ As a [役割]
197
+ I want [機能]
198
+ So that [価値]
199
+
200
+ Background:
201
+ Given [すべてのシナリオ共通の前提条件]
202
+ And [追加の前提条件]
203
+
204
+ @SC-001 @happy-path
205
+ Scenario: [シナリオ名 1]
206
+ Given [前提条件]
207
+ When [ユーザーのアクション]
208
+ Then [期待される結果]
209
+ And [追加の検証]
210
+
211
+ @SC-002 @error-handling
212
+ Scenario: [シナリオ名 2]
213
+ Given [前提条件]
214
+ When [ユーザーのアクション]
215
+ Then [期待される結果]
216
+
217
+ @SC-003
218
+ Scenario Outline: [パラメータ化されたシナリオ名]
219
+ Given [前提条件 with <parameter>]
220
+ When [アクション with <parameter>]
221
+ Then [期待される結果 with <expected>]
222
+
223
+ Examples:
224
+ | parameter | expected |
225
+ | value1 | result1 |
226
+ | value2 | result2 |
227
+ ```
228
+
229
+ ---
230
+
231
+ ### Feature: [機能名 2]
232
+
233
+ <!--
234
+ 2つ目のFeature
235
+
236
+ 【Scenario Outline(シナリオアウトライン)の使い方】
237
+
238
+ 目的:
239
+ - 同じシナリオ構造で異なるデータを複数回実行
240
+ - データ駆動テストの実装
241
+ - 境界値テストやエッジケースの網羅
242
+
243
+ 構成:
244
+ Scenario Outline: [シナリオテンプレート]
245
+ Given [前提条件 with <パラメータ>]
246
+ When [アクション with <パラメータ>]
247
+ Then [結果 with <パラメータ>]
248
+
249
+ Examples:
250
+ | パラメータ1 | パラメータ2 | 期待結果 |
251
+ | 値1 | 値2 | 結果1 |
252
+ | 値3 | 値4 | 結果2 |
253
+
254
+ 使用タイミング:
255
+ - 入力バリデーションのテスト
256
+ - 複数の類似ケースの検証
257
+ - 正常値と異常値の組み合わせテスト
258
+
259
+ Examplesテーブル:
260
+ - 1行目: ヘッダー(パラメータ名)
261
+ - 2行目以降: 各行が1回の実行
262
+ - シナリオは行数分実行される
263
+ - <パラメータ名>でシナリオ内から参照
264
+
265
+ ベストプラクティス:
266
+ - パラメータ名は明確に(<input>より<email>)
267
+ - テーブルは読みやすく整列
268
+ - 複雑になりすぎる場合は別シナリオに分割
269
+ - 各行の意図をコメントで補足(オプション)
270
+ - 複数のExamplesブロックで意味的にグループ化
271
+
272
+ 例:
273
+ @SC-005
274
+ Scenario Outline: メールアドレスのバリデーション
275
+ Given ユーザーが登録ページにいる
276
+ When メールアドレス "<email>" で登録する
277
+ Then "<result>" が表示される
278
+
279
+ Examples: 有効なメールアドレス
280
+ | email | result |
281
+ | user@example.com | 成功 |
282
+ | test+tag@domain.jp | 成功 |
283
+
284
+ Examples: 無効なメールアドレス
285
+ | email | result |
286
+ | invalid | メールアドレスが無効です |
287
+ | @example.com | メールアドレスが無効です |
288
+ | user@ | メールアドレスが無効です |
289
+ -->
290
+
291
+ ```gherkin
292
+ Feature: [機能名 2]
293
+ [機能の説明]
294
+
295
+ As a [役割]
296
+ I want [機能]
297
+ So that [価値]
298
+
299
+ @SC-004
300
+ Scenario: [シナリオ名]
301
+ Given [前提条件]
302
+ And [追加の前提条件]
303
+ When [メインアクション]
304
+ Then [期待結果1]
305
+ And [期待結果2]
306
+ And [期待結果3]
307
+ But [対照的な結果]
308
+
309
+ @SC-005 @validation
310
+ Scenario Outline: [パラメータ化されたシナリオ名]
311
+ Given [前提条件 with <param>]
312
+ When [アクション with <param>]
313
+ Then [結果 with <expected>]
314
+
315
+ Examples: [正常系のケース]
316
+ | param | expected |
317
+ | value1 | result1 |
318
+ | value2 | result2 |
319
+
320
+ Examples: [異常系のケース]
321
+ | param | expected |
322
+ | value3 | error1 |
323
+ | value4 | error2 |
324
+ ```
325
+
326
+ ---
327
+
328
+ ## タグの活用
329
+
330
+ <!--
331
+ タグ(@tag)を使用したシナリオの分類と実行制御
332
+
333
+ 【目的】
334
+ - シナリオのグループ化
335
+ - 選択的なテスト実行
336
+ - テストスイートの管理
337
+ - CI/CDでの柔軟な実行制御
338
+
339
+ 【よく使われるタグ】
340
+ @smoke: スモークテスト(重要な基本機能、最優先で実行)
341
+ @regression: リグレッションテスト(すべての既存機能)
342
+ @slow: 実行時間が長いテスト(通常のCIでスキップ)
343
+ @wip: 作業中(Work In Progress、開発中のシナリオ)
344
+ @bug-XXX: バグ修正に関連(Issue番号と紐付け)
345
+ @integration: 統合テスト(外部システムと連携)
346
+ @ui: UI関連テスト
347
+ @api: API関連テスト
348
+ @SC-XXX: シナリオIDとの紐付け
349
+
350
+ 【記述位置】
351
+ - Feature、Scenario、Scenario Outlineの直前
352
+ - 複数タグを同時に使用可能(スペース区切り)
353
+ - タグは継承される(FeatureのタグはすべてのScenarioに適用)
354
+
355
+ 【実行例(Cucumber)】
356
+ cucumber --tags "@smoke" # smokeタグのみ実行
357
+ cucumber --tags "not @slow" # slowタグ以外を実行
358
+ cucumber --tags "@smoke and @api" # 両方のタグを持つもの
359
+ cucumber --tags "@regression and not @wip" # regressionでwip以外
360
+
361
+ 【ベストプラクティス】
362
+ - タグの命名規則をチームで統一
363
+ - 過度なタグ付けを避ける(管理が煩雑になる)
364
+ - CI/CDパイプラインに応じたタグ戦略を設計
365
+ - タグの意味をドキュメント化
366
+ -->
367
+
368
+ ---
369
+
370
+ ## メモ
371
+
372
+ <!--
373
+ 全体に関する補足情報
374
+
375
+ 記載すべき内容:
376
+ - テスト自動化ツールの設定(Cucumber、SpecFlow等)
377
+ - ステップ定義の実装ファイルへのリンク
378
+ - テストデータの管理方法
379
+ - テスト環境の準備手順
380
+ - CI/CDでの実行方法とパイプライン設定
381
+ - カバレッジ目標(シナリオ数、実装機能のカバー率)
382
+ - レビュープロセス(誰がシナリオをレビューするか)
383
+ - シナリオの命名規則やスタイルガイド
384
+
385
+ シナリオ作成のワークフロー:
386
+ 1. ユーザーストーリーから具体例を抽出
387
+ 2. ハッピーパス(正常系)を最初に記述
388
+ 3. エラーケースや境界値を追加
389
+ 4. ステークホルダーとレビュー
390
+ 5. ステップ定義を実装(自動化)
391
+ 6. 継続的にメンテナンス
392
+
393
+ ドメインモデリングとの連携:
394
+ - シナリオのGiven-When-Thenから、ドメインイベントを抽出
395
+ - Whenがコマンド、Thenがドメインイベントに対応することが多い
396
+ - シナリオで使われる用語をユビキタス言語に追加
397
+ - Event Stormingの入力として活用
398
+
399
+ ベストプラクティス:
400
+ - シナリオは短く保つ(5-10ステップ程度)
401
+ - 1 Feature = 1ファイルも検討(大規模プロジェクトの場合)
402
+ - 実装詳細(UIの操作手順)は避ける
403
+ - ビジネス用語を使用(技術用語を避ける)
404
+ - 定期的にリファクタリング(重複の排除、Background活用)
405
+ - シナリオ間の依存を避ける(各シナリオは独立して実行可能に)
406
+ -->