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,300 @@
1
+ ---
2
+ description: 開発・テスト用のサンプルデータをデータストアに投入するワークフロー
3
+ auto_execution_mode: 1
4
+ ---
5
+
6
+ # Database-Seed (x-Database-Seed)
7
+
8
+ ## 目的
9
+
10
+ - 開発環境で動作確認するためのサンプルデータを投入する。
11
+ - テストで使用するフィクスチャデータを準備する。
12
+ - デモ環境で実際のデータに近いサンプルを表示する。
13
+ - 新規開発者が即座に開発を開始できるようデータを用意する。
14
+
15
+ ## 前提
16
+
17
+ - データストア(データベース、ファイルストア等)がセットアップされている。
18
+ - スキーマ定義またはマイグレーションが完了している。
19
+ - データストアへの接続が確立されている。
20
+ - Git リポジトリが初期化されている。
21
+
22
+ ## 手順
23
+
24
+ ### 1. シードデータの要件定義
25
+
26
+ **目的の明確化**:
27
+ - 開発環境での動作確認
28
+ - ユニットテスト用フィクスチャ
29
+ - E2E テスト用データ
30
+ - デモ環境用サンプル
31
+ - パフォーマンステスト用大量データ
32
+
33
+ **必要なデータの特定**:
34
+ - どのエンティティ/テーブルにデータが必要か
35
+ - どのくらいのデータ量が必要か(10件 / 100件 / 10,000件)
36
+ - エンティティ間の関連性(外部キー、参照整合性)
37
+
38
+ ### 2. データ投入戦略の選択
39
+
40
+ **戦略の種類**:
41
+
42
+ **Clean Seed(クリーンシード)**:
43
+ - すべての既存データを削除してから投入
44
+ - テスト環境や開発環境の初期化に適している
45
+ - 冪等性が保証される
46
+
47
+ **Incremental Seed(増分シード)**:
48
+ - 既存データに追加で投入
49
+ - データが既に存在する場合はスキップまたは更新
50
+ - 本番データとの共存が必要な場合に使用
51
+
52
+ **データソースの選択**:
53
+ - **ハードコード**: スクリプト内に直接記述(少量データ向け)
54
+ - **外部ファイル**: JSON、YAML、CSV等から読み込み(中量データ向け)
55
+ - **ランダム生成**: Faker等のライブラリで生成(大量データ向け)
56
+ - **本番データのサニタイズ**: 本番環境からエクスポートして個人情報を除去
57
+
58
+ ### 3. シードスクリプトの設計
59
+
60
+ **基本的な構造**:
61
+
62
+ 1. **データストア接続の確立**
63
+ 2. **トランザクション開始**(サポートされている場合)
64
+ 3. **既存データのクリア**(Clean Seedの場合)
65
+ - 外部キー制約を一時的に無効化(必要に応じて)
66
+ - 依存関係の逆順でデータ削除
67
+ 4. **データ投入の実行**
68
+ - 依存関係の順序でデータ投入(親 → 子)
69
+ - 一意制約違反のチェック
70
+ - 外部キー制約の検証
71
+ 5. **コミットまたはロールバック**
72
+ 6. **投入結果の検証**
73
+
74
+ **冪等性の確保**:
75
+ ```
76
+ IF データが既に存在する THEN
77
+ データをスキップ または 更新
78
+ ELSE
79
+ 新規作成
80
+ END
81
+ ```
82
+
83
+ **実装チェックリスト**:
84
+ - [ ] データストア接続の確立
85
+ - [ ] エラーハンドリングの実装
86
+ - [ ] トランザクション管理(可能な場合)
87
+ - [ ] 依存関係の順序管理
88
+ - [ ] 冪等性の保証(既存データチェック)
89
+ - [ ] ログ出力(投入件数、エラー情報)
90
+ - [ ] 環境変数による制御(本番環境での実行を防止)
91
+
92
+ ### 4. データ投入の実行
93
+
94
+ **一般的な実行パターン**:
95
+
96
+ **スクリプトの直接実行**:
97
+ ```bash
98
+ # 例: Node.js
99
+ node scripts/seed.js
100
+
101
+ # 例: Python
102
+ python scripts/seed.py
103
+
104
+ # 例: Ruby
105
+ ruby db/seeds.rb
106
+ ```
107
+
108
+ **タスクランナー経由**:
109
+ ```bash
110
+ # package.json の scripts
111
+ npm run seed
112
+
113
+ # Makefile
114
+ make seed
115
+
116
+ # タスクランナー
117
+ rake db:seed
118
+ ```
119
+
120
+ **環境別の実行制御**:
121
+ ```bash
122
+ # 開発環境のみ
123
+ NODE_ENV=development npm run seed
124
+
125
+ # テスト環境のみ
126
+ RAILS_ENV=test rake db:seed
127
+ ```
128
+
129
+ ### 5. データ整合性の検証
130
+
131
+ **検証項目**:
132
+ - [ ] データ件数が期待通りか
133
+ - [ ] リレーション/参照が正しく設定されているか
134
+ - [ ] 一意制約が守られているか
135
+ - [ ] 外部キー制約が満たされているか
136
+ - [ ] データ型が正しいか
137
+ - [ ] NULL制約が守られているか
138
+
139
+ **検証方法**:
140
+
141
+ **データストアに直接クエリ**:
142
+ ```bash
143
+ # カウント確認
144
+ SELECT COUNT(*) FROM users;
145
+ SELECT COUNT(*) FROM posts;
146
+
147
+ # リレーション確認
148
+ SELECT users.name, COUNT(posts.id)
149
+ FROM users
150
+ LEFT JOIN posts ON users.id = posts.user_id
151
+ GROUP BY users.id;
152
+ ```
153
+
154
+ **アプリケーション経由での確認**:
155
+ - 開発サーバーを起動してブラウザで確認
156
+ - APIエンドポイントにリクエストして応答を確認
157
+ - 管理画面でデータを表示
158
+
159
+ ### 6. 本番環境での実行防止
160
+
161
+ **環境チェックの実装**:
162
+
163
+ **環境変数による制御**:
164
+ ```javascript
165
+ if (process.env.NODE_ENV === 'production') {
166
+ throw new Error('Cannot seed production database');
167
+ }
168
+ ```
169
+
170
+ **明示的な確認プロンプト**:
171
+ ```bash
172
+ echo "Are you sure you want to seed? (yes/no)"
173
+ read confirmation
174
+ if [ "$confirmation" != "yes" ]; then
175
+ exit 1
176
+ fi
177
+ ```
178
+
179
+ **データベース名チェック**:
180
+ ```python
181
+ if 'production' in DATABASE_URL:
182
+ raise Exception('Cannot seed production database')
183
+ ```
184
+
185
+ ### 7. ドキュメント化
186
+
187
+ **README.md への記載例**:
188
+ ```markdown
189
+ ## Development Setup
190
+
191
+ ### Seed Database
192
+
193
+ 開発用サンプルデータを投入:
194
+ ```bash
195
+ npm run seed
196
+ ```
197
+
198
+ データをリセットして再投入:
199
+ ```bash
200
+ npm run db:reset
201
+ ```
202
+
203
+ ### Sample Accounts
204
+
205
+ - Admin: admin@example.com / password123
206
+ - User: user@example.com / password123
207
+ ```
208
+
209
+ **package.json への登録**:
210
+ ```json
211
+ {
212
+ "scripts": {
213
+ "seed": "node scripts/seed.js",
214
+ "db:reset": "npm run db:drop && npm run db:migrate && npm run seed"
215
+ }
216
+ }
217
+ ```
218
+
219
+ ### 8. Git コミット
220
+
221
+ ```bash
222
+ git add scripts/seed.js
223
+ # または db/seeds.rb, fixtures/*, etc.
224
+
225
+ git commit -m "feat: add database seed script
226
+
227
+ - Add sample users and posts
228
+ - Support clean and incremental seeding
229
+ - Add environment check to prevent production seeding
230
+ - Document seed command in README
231
+
232
+ 🤖 Generated with [Claude Code](https://claude.com/claude-code)
233
+
234
+ Co-Authored-By: Claude <noreply@anthropic.com>"
235
+ ```
236
+
237
+ ## 完了条件
238
+
239
+ - シードスクリプトが作成されている
240
+ - データが正常に投入される
241
+ - データ整合性が保たれている(外部キー、制約など)
242
+ - 冪等性が保証されている(複数回実行しても安全)
243
+ - 本番環境での実行が防止されている
244
+ - README にシードコマンドが記載されている
245
+ - Git にコミットされている
246
+
247
+ ## エスカレーション
248
+
249
+ - **一意制約違反エラー**:
250
+ - 既存データをクリアしてから投入
251
+ - upsert(存在すれば更新、なければ作成)を使用
252
+ - ユニークなデータを生成(UUID、Faker など)
253
+
254
+ - **外部キー制約違反**:
255
+ - データの投入順序を確認(親 → 子)
256
+ - トランザクションで一括投入
257
+ - 外部キー制約を一時的に無効化(非推奨)
258
+
259
+ - **パフォーマンス問題(大量データ)**:
260
+ - バルクインサート(一括挿入)を使用
261
+ - トランザクションでまとめて投入
262
+ - インデックスを一時的に無効化
263
+
264
+ - **本番環境でシード実行のリスク**:
265
+ - 環境変数でガード
266
+ - データベース名チェック
267
+ - 明示的な確認プロンプト
268
+
269
+ ## ベストプラクティス
270
+
271
+ - **環境による切り替え**: 本番環境では実行しない
272
+ - **冪等性**: 何度実行しても同じ結果になるようにする
273
+ - **リアルなデータ**: 実際の使用に近いデータを用意
274
+ - **機密情報の除外**: 本番データをエクスポートする場合、個人情報を除外
275
+ - **バージョン管理**: シードファイルは Git で管理
276
+ - **ドキュメント化**: README にシードコマンドとサンプルアカウント情報を記載
277
+ - **自動化**: CI/CD でテスト前にシードを実行
278
+ - **段階的な投入**: 基本データとオプショナルデータを分離
279
+
280
+ ## 参考: 技術スタック別の実装パターン
281
+
282
+ **ORM / データアクセスライブラリ**:
283
+ - Prisma, TypeORM, Sequelize (Node.js)
284
+ - SQLAlchemy, Django ORM (Python)
285
+ - ActiveRecord (Ruby)
286
+ - GORM (Go)
287
+ - Eloquent (PHP)
288
+
289
+ **データソース形式**:
290
+ - JSON/YAML ファイル
291
+ - CSV ファイル
292
+ - SQL ダンプファイル
293
+ - Faker/Factory パターン
294
+
295
+ **実行方法**:
296
+ - npm scripts / package.json
297
+ - Makefile
298
+ - rake tasks
299
+ - Django management commands
300
+ - カスタムCLIコマンド
@@ -0,0 +1,315 @@
1
+ ---
2
+ description: 依存関係を安全に更新し、破壊的変更やセキュリティ脆弱性に対処するワークフロー
3
+ auto_execution_mode: 1
4
+ ---
5
+
6
+ # Dependencies-Update (x-Dependencies-Update)
7
+
8
+ ## 目的
9
+
10
+ - プロジェクトの依存関係を最新の安全なバージョンに更新する。
11
+ - セキュリティ脆弱性を修正し、パッチを適用する。
12
+ - 破壊的変更(Breaking Changes)を事前に確認し、適切に対処する。
13
+ - アップデート後の動作を検証し、問題があれば修正する。
14
+
15
+ ## 前提
16
+
17
+ - `package.json` または `requirements.txt` などの依存関係管理ファイルが存在する。
18
+ - npm/yarn/pnpm(Node.js)、pip/poetry(Python)などのパッケージマネージャーが利用可能。
19
+ - テストが整備されており、アップデート後の動作確認ができる。
20
+ - Git リポジトリが初期化されており、変更を追跡できる。
21
+
22
+ ## 手順
23
+
24
+ ### 1. 現在の依存関係の確認
25
+
26
+ **質問1: パッケージマネージャーの確認**
27
+ - 「このプロジェクトで使用しているパッケージマネージャーは何ですか?」
28
+ - npm
29
+ - yarn
30
+ - pnpm
31
+ - pip
32
+ - poetry
33
+ - その他
34
+
35
+ **現在のバージョンを確認**:
36
+ ```bash
37
+ # Node.js プロジェクト
38
+ npm list --depth=0
39
+ # または
40
+ yarn list --depth=0
41
+ # または
42
+ pnpm list --depth=0
43
+
44
+ # Python プロジェクト
45
+ pip list
46
+ # または
47
+ poetry show
48
+ ```
49
+
50
+ ### 2. セキュリティ脆弱性のスキャン
51
+
52
+ **Node.js プロジェクト**:
53
+ ```bash
54
+ npm audit
55
+ # または
56
+ yarn audit
57
+ # または
58
+ pnpm audit
59
+ ```
60
+
61
+ **Python プロジェクト**:
62
+ ```bash
63
+ pip-audit
64
+ # または
65
+ safety check
66
+ ```
67
+
68
+ **質問2: 脆弱性の確認**
69
+ - 「セキュリティ脆弱性が検出されましたか?」
70
+ - 検出された場合、重要度(Critical, High, Moderate, Low)を確認
71
+
72
+ ### 3. 更新可能なパッケージの確認
73
+
74
+ **Node.js プロジェクト**:
75
+ ```bash
76
+ npm outdated
77
+ # または
78
+ yarn outdated
79
+ # または
80
+ pnpm outdated
81
+ ```
82
+
83
+ **Python プロジェクト**:
84
+ ```bash
85
+ pip list --outdated
86
+ # または
87
+ poetry show --outdated
88
+ ```
89
+
90
+ **質問3: 更新戦略**
91
+ - 「どの更新戦略を使用しますか?」
92
+ - **Conservative(保守的)**: パッチバージョンのみ更新(例: 1.2.3 → 1.2.4)
93
+ - **Moderate(中程度)**: マイナーバージョンまで更新(例: 1.2.3 → 1.3.0)
94
+ - **Aggressive(積極的)**: メジャーバージョンも更新(例: 1.2.3 → 2.0.0)
95
+ - **Security Only(セキュリティのみ)**: 脆弱性があるパッケージのみ更新
96
+
97
+ ### 4. 破壊的変更(Breaking Changes)の確認
98
+
99
+ 更新するパッケージの CHANGELOG または リリースノートを確認:
100
+
101
+ **質問4: Breaking Changes の確認**
102
+ - 「更新するパッケージに破壊的変更がありますか?」
103
+ - 確認すべき内容:
104
+ - API の変更(関数名、引数、戻り値の変更)
105
+ - 非推奨 API の削除
106
+ - デフォルト動作の変更
107
+ - 最低必要バージョンの変更(Node.js, Python など)
108
+
109
+ **確認方法**:
110
+ - GitHub リリースページ: `https://github.com/{org}/{repo}/releases`
111
+ - CHANGELOG.md
112
+ - Migration Guide
113
+
114
+ ### 5. 依存関係の更新
115
+
116
+ #### 5.1. バックアップの作成
117
+
118
+ ```bash
119
+ # package.json と package-lock.json のバックアップ
120
+ cp package.json package.json.backup
121
+ cp package-lock.json package-lock.json.backup
122
+
123
+ # または Python の場合
124
+ cp requirements.txt requirements.txt.backup
125
+ cp poetry.lock poetry.lock.backup
126
+ ```
127
+
128
+ #### 5.2. パッケージの更新
129
+
130
+ **セキュリティパッチのみ適用**:
131
+ ```bash
132
+ # Node.js
133
+ npm audit fix
134
+ # または
135
+ yarn audit fix
136
+ # または
137
+ pnpm audit fix
138
+ ```
139
+
140
+ **すべてのパッケージを更新**:
141
+ ```bash
142
+ # Node.js (interactive)
143
+ npm update
144
+ # または
145
+ yarn upgrade-interactive
146
+ # または
147
+ pnpm update -i
148
+
149
+ # Python
150
+ pip install --upgrade -r requirements.txt
151
+ # または
152
+ poetry update
153
+ ```
154
+
155
+ **特定のパッケージのみ更新**:
156
+ ```bash
157
+ # Node.js
158
+ npm install <package>@latest
159
+ # または
160
+ yarn upgrade <package>@latest
161
+
162
+ # Python
163
+ pip install --upgrade <package>
164
+ # または
165
+ poetry update <package>
166
+ ```
167
+
168
+ ### 6. 変更内容の確認
169
+
170
+ ```bash
171
+ git diff package.json
172
+ git diff package-lock.json
173
+ ```
174
+
175
+ **質問5: 変更の確認**
176
+ - 「予期しない変更がありませんか?」
177
+ - 「更新されたパッケージのバージョンは適切ですか?」
178
+
179
+ ### 7. テストの実行
180
+
181
+ **すべてのテストを実行**:
182
+ ```bash
183
+ # Node.js
184
+ npm test
185
+ # または
186
+ yarn test
187
+
188
+ # Python
189
+ pytest
190
+ # または
191
+ python -m unittest
192
+ ```
193
+
194
+ **質問6: テスト結果**
195
+ - 「すべてのテストが通りましたか?」
196
+ - 失敗した場合、原因を特定:
197
+ - 破壊的変更による API の変更
198
+ - テストコードの更新が必要
199
+ - 環境依存の問題
200
+
201
+ ### 8. ビルドの確認
202
+
203
+ **ビルドが成功するか確認**:
204
+ ```bash
205
+ # Node.js
206
+ npm run build
207
+ # または
208
+ yarn build
209
+
210
+ # TypeScript
211
+ tsc --noEmit
212
+ ```
213
+
214
+ **質問7: ビルド結果**
215
+ - 「ビルドが成功しましたか?」
216
+ - エラーがある場合、型定義やコンパイルエラーを修正
217
+
218
+ ### 9. 動作確認
219
+
220
+ **開発サーバーを起動して動作確認**:
221
+ ```bash
222
+ npm run dev
223
+ # または
224
+ yarn dev
225
+ ```
226
+
227
+ **質問8: 動作確認**
228
+ - 「主要な機能が正常に動作しますか?」
229
+ - 確認すべき項目:
230
+ - ページが正しく表示される
231
+ - API リクエストが成功する
232
+ - フォームが正常に動作する
233
+ - 認証・認可が機能する
234
+
235
+ ### 10. コミットとプッシュ
236
+
237
+ **変更をコミット**:
238
+ ```bash
239
+ git add package.json package-lock.json
240
+ git commit -m "chore: update dependencies
241
+
242
+ - Update <package1> from <old-version> to <new-version>
243
+ - Update <package2> from <old-version> to <new-version>
244
+ - Fix security vulnerabilities (npm audit)
245
+ - All tests passing
246
+
247
+ 🤖 Generated with [Claude Code](https://claude.com/claude-code)
248
+
249
+ Co-Authored-By: Claude <noreply@anthropic.com>"
250
+ ```
251
+
252
+ **プッシュ**:
253
+ ```bash
254
+ git push origin <branch>
255
+ ```
256
+
257
+ ### 11. CI/CD の確認
258
+
259
+ - CI が成功することを確認
260
+ - 失敗した場合、ログを確認して修正
261
+
262
+ ### 12. ドキュメント更新(必要に応じて)
263
+
264
+ **質問9: ドキュメント更新**
265
+ - 「依存関係の更新により、ドキュメントの更新が必要ですか?」
266
+ - 更新すべきドキュメント:
267
+ - README.md(最低必要バージョン)
268
+ - CHANGELOG.md
269
+ - API ドキュメント
270
+
271
+ ## 完了条件
272
+
273
+ - 依存関係が最新の安全なバージョンに更新されている
274
+ - セキュリティ脆弱性が修正されている
275
+ - すべてのテストが通っている
276
+ - ビルドが成功している
277
+ - 主要な機能が正常に動作している
278
+ - 変更がコミットされ、GitHub にプッシュされている
279
+ - CI/CD が成功している
280
+
281
+ ## エスカレーション
282
+
283
+ - **メジャーバージョンアップで破壊的変更が多い場合**:
284
+ - 「メジャーバージョンアップには大きな変更が含まれます。段階的に更新することを推奨します。」
285
+ - マイグレーションガイドを参照
286
+ - 別ブランチで作業
287
+
288
+ - **テストが失敗する場合**:
289
+ - 「テストが失敗しました。原因を特定してください:」
290
+ - 破壊的変更による API の変更
291
+ - テストコードの更新が必要
292
+ - モック・スタブの修正が必要
293
+
294
+ - **ビルドが失敗する場合**:
295
+ - 「ビルドが失敗しました。型定義やコンパイルエラーを確認してください。」
296
+ - TypeScript の場合、`@types/*` パッケージも更新
297
+
298
+ - **セキュリティ脆弱性が修正できない場合**:
299
+ - 「セキュリティ脆弱性が修正できません。以下を検討してください:」
300
+ - パッケージの代替案を探す
301
+ - 一時的に `npm audit` の特定の警告を無視(非推奨)
302
+ - セキュリティチームに報告
303
+
304
+ - **依存関係の競合が発生した場合**:
305
+ - 「依存関係の競合が発生しました。`npm ls <package>` で原因を特定してください。」
306
+ - `resolutions`(yarn)または `overrides`(npm)で強制解決
307
+
308
+ ## ベストプラクティス
309
+
310
+ - **定期的な更新**: 週次または月次で依存関係を確認
311
+ - **小さく更新**: 一度に多くのパッケージを更新せず、段階的に更新
312
+ - **テスト自動化**: CI で依存関係の更新を自動テスト
313
+ - **Dependabot/Renovate**: 自動 PR 作成ツールの活用
314
+ - **セキュリティアラート**: GitHub Security Alerts を有効化
315
+ - **ロックファイルのコミット**: `package-lock.json` や `yarn.lock` を必ずコミット