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,641 @@
1
+ ---
2
+ description: GitHub Actions/GitLab CIでビルド・テスト・デプロイを自動化するCI/CDパイプラインをセットアップするワークフロー
3
+ auto_execution_mode: 1
4
+ ---
5
+
6
+ # CI-Setup (x-CI-Setup)
7
+
8
+ ## 目的
9
+
10
+ - コードをプッシュするたびに自動でビルド・テスト・デプロイを実行する CI/CD パイプラインを構築する。
11
+ - Pull Request ごとに自動テストを実行し、品質を担保する。
12
+ - main/master ブランチへのマージ時に自動デプロイを実行する。
13
+ - CI/CD のベストプラクティス(キャッシュ、並列実行、失敗時の通知)を適用する。
14
+
15
+ ## 前提
16
+
17
+ - Git リポジトリが GitHub または GitLab でホストされている。
18
+ - プロジェクトに package.json または requirements.txt などの依存関係ファイルが存在する。
19
+ - テストコマンドが定義されている(`npm test`, `pytest`, など)。
20
+ - デプロイ先が決まっている(Vercel, Netlify, AWS, Heroku, など)。
21
+
22
+ ## 手順
23
+
24
+ ### 1. CI/CD プラットフォームの選択
25
+
26
+ プロジェクトに適した CI/CD プラットフォームを選択します。
27
+
28
+ **主要なCI/CDプラットフォームの特徴**:
29
+ - **GitHub Actions**: GitHub ホスティングなら推奨。無料枠が充実(2,000分/月)
30
+ - **GitLab CI**: GitLab ホスティングなら推奨。無料枠あり(400分/月)
31
+ - **CircleCI**: 高機能だが設定が複雑。無料枠(2,500クレジット/月)
32
+ - **Jenkins**: セルフホスト型。柔軟だが保守コストが高い
33
+ - **Azure Pipelines**: Azure 統合。無料枠(1,800分/月)
34
+
35
+ ### 2. GitHub Actions のセットアップ
36
+
37
+ #### 2.1. ワークフローファイルの作成
38
+
39
+ **一般的な CI ジョブの種類**:
40
+ - **リント**: コードスタイルチェック(ESLint, Prettier, Ruff, Black, RuboCop など)
41
+ - **ユニットテスト**: アプリケーションロジックのテスト
42
+ - **統合テスト**: コンポーネント間の統合テスト
43
+ - **E2E テスト**: エンドツーエンドの動作確認(Playwright, Cypress など)
44
+ - **ビルド**: 本番用ビルドの生成
45
+ - **セキュリティスキャン**: 脆弱性検出(npm audit, Snyk, Trivy など)
46
+ - **デプロイ**: 本番環境またはステージング環境への自動デプロイ
47
+
48
+ **ワークフローファイルの配置**:
49
+ ```
50
+ .github/
51
+ └── workflows/
52
+ ├── ci.yml # PR ごとのテスト
53
+ ├── deploy.yml # main マージ時のデプロイ
54
+ └── nightly.yml # 定期実行(夜間テスト)
55
+ ```
56
+
57
+ #### 2.2. 基本的な CI ワークフロー
58
+
59
+ **.github/workflows/ci.yml**:
60
+ ```yaml
61
+ name: CI
62
+
63
+ # トリガー: PR 作成・更新、main プッシュ
64
+ on:
65
+ pull_request:
66
+ branches: [main, develop]
67
+ push:
68
+ branches: [main, develop]
69
+
70
+ # 並列実行をキャンセル(同じ PR の古いビルドをキャンセル)
71
+ concurrency:
72
+ group: ${{ github.workflow }}-${{ github.ref }}
73
+ cancel-in-progress: true
74
+
75
+ jobs:
76
+ lint:
77
+ name: Lint
78
+ runs-on: ubuntu-latest
79
+ steps:
80
+ - name: Checkout code
81
+ uses: actions/checkout@v4
82
+
83
+ - name: Setup Node.js
84
+ uses: actions/setup-node@v4
85
+ with:
86
+ node-version: '20'
87
+ cache: 'npm'
88
+
89
+ - name: Install dependencies
90
+ run: npm ci
91
+
92
+ - name: Run linter
93
+ run: npm run lint
94
+
95
+ test:
96
+ name: Test
97
+ runs-on: ubuntu-latest
98
+ strategy:
99
+ matrix:
100
+ node-version: [18, 20, 22]
101
+ steps:
102
+ - name: Checkout code
103
+ uses: actions/checkout@v4
104
+
105
+ - name: Setup Node.js ${{ matrix.node-version }}
106
+ uses: actions/setup-node@v4
107
+ with:
108
+ node-version: ${{ matrix.node-version }}
109
+ cache: 'npm'
110
+
111
+ - name: Install dependencies
112
+ run: npm ci
113
+
114
+ - name: Run tests
115
+ run: npm test
116
+
117
+ - name: Upload coverage
118
+ uses: codecov/codecov-action@v4
119
+ if: matrix.node-version == '20'
120
+ with:
121
+ token: ${{ secrets.CODECOV_TOKEN }}
122
+ files: ./coverage/coverage-final.json
123
+
124
+ build:
125
+ name: Build
126
+ runs-on: ubuntu-latest
127
+ steps:
128
+ - name: Checkout code
129
+ uses: actions/checkout@v4
130
+
131
+ - name: Setup Node.js
132
+ uses: actions/setup-node@v4
133
+ with:
134
+ node-version: '20'
135
+ cache: 'npm'
136
+
137
+ - name: Install dependencies
138
+ run: npm ci
139
+
140
+ - name: Build project
141
+ run: npm run build
142
+
143
+ - name: Upload build artifacts
144
+ uses: actions/upload-artifact@v4
145
+ with:
146
+ name: build
147
+ path: dist/
148
+ ```
149
+
150
+ #### 2.3. デプロイワークフロー
151
+
152
+ **.github/workflows/deploy.yml**:
153
+ ```yaml
154
+ name: Deploy
155
+
156
+ on:
157
+ push:
158
+ branches: [main]
159
+
160
+ jobs:
161
+ deploy:
162
+ name: Deploy to Production
163
+ runs-on: ubuntu-latest
164
+ environment:
165
+ name: production
166
+ url: https://myapp.com
167
+ steps:
168
+ - name: Checkout code
169
+ uses: actions/checkout@v4
170
+
171
+ - name: Setup Node.js
172
+ uses: actions/setup-node@v4
173
+ with:
174
+ node-version: '20'
175
+ cache: 'npm'
176
+
177
+ - name: Install dependencies
178
+ run: npm ci
179
+
180
+ - name: Build project
181
+ run: npm run build
182
+
183
+ - name: Deploy to Vercel
184
+ uses: amondnet/vercel-action@v25
185
+ with:
186
+ vercel-token: ${{ secrets.VERCEL_TOKEN }}
187
+ vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
188
+ vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
189
+ vercel-args: '--prod'
190
+ ```
191
+
192
+ ### 3. GitLab CI のセットアップ
193
+
194
+ **.gitlab-ci.yml**:
195
+ ```yaml
196
+ # Docker イメージ
197
+ image: node:20
198
+
199
+ # ステージ定義
200
+ stages:
201
+ - lint
202
+ - test
203
+ - build
204
+ - deploy
205
+
206
+ # キャッシュ設定
207
+ cache:
208
+ paths:
209
+ - node_modules/
210
+ key:
211
+ files:
212
+ - package-lock.json
213
+
214
+ # リント
215
+ lint:
216
+ stage: lint
217
+ script:
218
+ - npm ci
219
+ - npm run lint
220
+
221
+ # テスト(複数 Node バージョン)
222
+ test:node18:
223
+ stage: test
224
+ image: node:18
225
+ script:
226
+ - npm ci
227
+ - npm test
228
+ coverage: '/Lines\s*:\s*(\d+\.\d+)%/'
229
+ artifacts:
230
+ reports:
231
+ coverage_report:
232
+ coverage_format: cobertura
233
+ path: coverage/cobertura-coverage.xml
234
+
235
+ test:node20:
236
+ stage: test
237
+ image: node:20
238
+ script:
239
+ - npm ci
240
+ - npm test
241
+
242
+ # ビルド
243
+ build:
244
+ stage: build
245
+ script:
246
+ - npm ci
247
+ - npm run build
248
+ artifacts:
249
+ paths:
250
+ - dist/
251
+ expire_in: 1 week
252
+ only:
253
+ - main
254
+ - develop
255
+
256
+ # デプロイ(本番環境)
257
+ deploy:production:
258
+ stage: deploy
259
+ script:
260
+ - npm ci
261
+ - npm run build
262
+ - npm run deploy
263
+ environment:
264
+ name: production
265
+ url: https://myapp.com
266
+ only:
267
+ - main
268
+ ```
269
+
270
+ ### 4. 環境変数とシークレットの設定
271
+
272
+ デプロイに必要な API キーやトークンなどの機密情報を安全に管理します。
273
+
274
+ #### 4.1. GitHub Actions のシークレット設定
275
+
276
+ **GitHub リポジトリページ**:
277
+ 1. Settings → Secrets and variables → Actions
278
+ 2. "New repository secret" をクリック
279
+ 3. シークレット名と値を入力
280
+
281
+ **よく使われるシークレット**:
282
+ - `VERCEL_TOKEN`: Vercel デプロイトークン
283
+ - `AWS_ACCESS_KEY_ID`: AWS アクセスキー
284
+ - `AWS_SECRET_ACCESS_KEY`: AWS シークレットキー
285
+ - `DOCKER_USERNAME`: Docker Hub ユーザー名
286
+ - `DOCKER_PASSWORD`: Docker Hub パスワード
287
+ - `CODECOV_TOKEN`: Codecov トークン
288
+
289
+ **ワークフローで使用**:
290
+ ```yaml
291
+ - name: Deploy to AWS
292
+ env:
293
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
294
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
295
+ run: |
296
+ aws s3 sync dist/ s3://my-bucket/
297
+ ```
298
+
299
+ #### 4.2. GitLab CI の変数
300
+
301
+ **GitLab プロジェクトページ**:
302
+ 1. Settings → CI/CD → Variables
303
+ 2. "Add variable" をクリック
304
+ 3. Key, Value, Flags(Protected, Masked)を設定
305
+
306
+ **ワークフローで使用**:
307
+ ```yaml
308
+ deploy:production:
309
+ script:
310
+ - echo "Deploying with token $DEPLOY_TOKEN"
311
+ variables:
312
+ DEPLOY_TOKEN: $CI_DEPLOY_TOKEN
313
+ ```
314
+
315
+ ### 5. キャッシュの最適化
316
+
317
+ 依存関係のキャッシュを設定することで、CI 実行時間を大幅に短縮できます。
318
+
319
+ #### 5.1. GitHub Actions のキャッシュ設定
320
+
321
+ **npm キャッシュ**:
322
+ ```yaml
323
+ - name: Setup Node.js
324
+ uses: actions/setup-node@v4
325
+ with:
326
+ node-version: '20'
327
+ cache: 'npm' # 自動キャッシュ
328
+ ```
329
+
330
+ **手動キャッシュ**:
331
+ ```yaml
332
+ - name: Cache dependencies
333
+ uses: actions/cache@v4
334
+ with:
335
+ path: ~/.npm
336
+ key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
337
+ restore-keys: |
338
+ ${{ runner.os }}-node-
339
+ ```
340
+
341
+ **ビルドキャッシュ(Next.js)**:
342
+ ```yaml
343
+ - name: Cache Next.js build
344
+ uses: actions/cache@v4
345
+ with:
346
+ path: ${{ github.workspace }}/.next/cache
347
+ key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx') }}
348
+ restore-keys: |
349
+ ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
350
+ ```
351
+
352
+ #### 5.2. GitLab CI のキャッシュ
353
+
354
+ ```yaml
355
+ cache:
356
+ paths:
357
+ - node_modules/
358
+ - .next/cache/
359
+ key:
360
+ files:
361
+ - package-lock.json
362
+ ```
363
+
364
+ ### 6. マトリックスビルド(複数環境テスト)
365
+
366
+ 複数のランタイムバージョンや OS でテストすることで、互換性を確保します。
367
+
368
+ **GitHub Actions でのマトリックスビルド例**:
369
+ ```yaml
370
+ test:
371
+ runs-on: ${{ matrix.os }}
372
+ strategy:
373
+ matrix:
374
+ os: [ubuntu-latest, windows-latest, macos-latest]
375
+ node-version: [18, 20, 22]
376
+ steps:
377
+ - uses: actions/checkout@v4
378
+ - name: Setup Node.js ${{ matrix.node-version }}
379
+ uses: actions/setup-node@v4
380
+ with:
381
+ node-version: ${{ matrix.node-version }}
382
+ - run: npm ci
383
+ - run: npm test
384
+ ```
385
+
386
+ ### 7. E2E テストの実行
387
+
388
+ E2E テストを CI に組み込み、実際のユーザー操作をシミュレートして動作を確認します。
389
+
390
+ **主要な E2E テストフレームワーク**: Playwright, Cypress, Selenium, Puppeteer
391
+
392
+ **Playwright を使用した例(GitHub Actions)**:
393
+ ```yaml
394
+ e2e:
395
+ name: E2E Tests
396
+ runs-on: ubuntu-latest
397
+ steps:
398
+ - uses: actions/checkout@v4
399
+ - uses: actions/setup-node@v4
400
+ with:
401
+ node-version: '20'
402
+ cache: 'npm'
403
+ - run: npm ci
404
+ - run: npx playwright install --with-deps
405
+ - run: npm run build
406
+ - run: npm run test:e2e
407
+ - uses: actions/upload-artifact@v4
408
+ if: failure()
409
+ with:
410
+ name: playwright-report
411
+ path: playwright-report/
412
+ ```
413
+
414
+ **Cypress + GitHub Actions**:
415
+ ```yaml
416
+ e2e:
417
+ name: E2E Tests
418
+ runs-on: ubuntu-latest
419
+ steps:
420
+ - uses: actions/checkout@v4
421
+ - uses: cypress-io/github-action@v6
422
+ with:
423
+ build: npm run build
424
+ start: npm start
425
+ wait-on: 'http://localhost:3000'
426
+ ```
427
+
428
+ ### 8. Docker イメージのビルドとプッシュ
429
+
430
+ コンテナ化されたアプリケーションの場合、Docker イメージを自動ビルドしてレジストリにプッシュします。
431
+
432
+ **主要なコンテナレジストリ**: Docker Hub, GitHub Container Registry (ghcr.io), AWS ECR, Google GCR
433
+
434
+ **GitHub Actions での Docker ビルド例**:
435
+ ```yaml
436
+ docker:
437
+ name: Build and Push Docker Image
438
+ runs-on: ubuntu-latest
439
+ steps:
440
+ - uses: actions/checkout@v4
441
+
442
+ - name: Set up Docker Buildx
443
+ uses: docker/setup-buildx-action@v3
444
+
445
+ - name: Login to Docker Hub
446
+ uses: docker/login-action@v3
447
+ with:
448
+ username: ${{ secrets.DOCKER_USERNAME }}
449
+ password: ${{ secrets.DOCKER_PASSWORD }}
450
+
451
+ - name: Build and push
452
+ uses: docker/build-push-action@v5
453
+ with:
454
+ context: .
455
+ push: true
456
+ tags: myusername/myapp:latest
457
+ cache-from: type=gha
458
+ cache-to: type=gha,mode=max
459
+ ```
460
+
461
+ ### 9. 通知の設定
462
+
463
+ CI の失敗や成功をチームに通知することで、問題を迅速に把握できます。
464
+
465
+ **主要な通知先**: Slack, Discord, Microsoft Teams, Email
466
+
467
+ **Slack 通知の例(GitHub Actions)**:
468
+ ```yaml
469
+ - name: Notify Slack on failure
470
+ if: failure()
471
+ uses: slackapi/slack-github-action@v1
472
+ with:
473
+ payload: |
474
+ {
475
+ "text": "CI failed for ${{ github.repository }}",
476
+ "blocks": [
477
+ {
478
+ "type": "section",
479
+ "text": {
480
+ "type": "mrkdwn",
481
+ "text": "❌ CI failed\n*Repository:* ${{ github.repository }}\n*Branch:* ${{ github.ref }}\n*Commit:* ${{ github.sha }}"
482
+ }
483
+ }
484
+ ]
485
+ }
486
+ env:
487
+ SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
488
+ ```
489
+
490
+ ### 10. ステータスバッジの追加
491
+
492
+ **README.md にステータスバッジを追加**:
493
+
494
+ **GitHub Actions**:
495
+ ```markdown
496
+ [![CI](https://github.com/username/repo/actions/workflows/ci.yml/badge.svg)](https://github.com/username/repo/actions/workflows/ci.yml)
497
+ ```
498
+
499
+ **GitLab CI**:
500
+ ```markdown
501
+ [![pipeline status](https://gitlab.com/username/repo/badges/main/pipeline.svg)](https://gitlab.com/username/repo/-/commits/main)
502
+ ```
503
+
504
+ **Codecov**:
505
+ ```markdown
506
+ [![codecov](https://codecov.io/gh/username/repo/branch/main/graph/badge.svg)](https://codecov.io/gh/username/repo)
507
+ ```
508
+
509
+ ### 11. CI の実行と動作確認
510
+
511
+ CI ワークフローの設定が完了したら、実際にコードをプッシュして動作を確認します。
512
+
513
+ **確認手順**:
514
+ 1. テスト用のブランチを作成してコードを変更
515
+ ```bash
516
+ git checkout -b feature/ci-setup
517
+ git add .
518
+ git commit -m "ci: add CI/CD workflows"
519
+ git push origin feature/ci-setup
520
+ ```
521
+
522
+ 2. Pull Request を作成
523
+
524
+ 3. CI の実行状況を確認
525
+ - **GitHub Actions**: リポジトリの Actions タブ
526
+ - **GitLab CI**: プロジェクトの CI/CD → Pipelines
527
+ - **CircleCI**: ダッシュボード
528
+
529
+ 4. ログを確認
530
+ - すべてのジョブ(lint, test, build)が成功しているか確認
531
+ - エラーがある場合は、ログを読んで原因を特定
532
+ - `/x-CI-FixFailure` ワークフローを使用して修正
533
+
534
+ 5. PR で CI ステータスを確認
535
+ - PR ページで緑色のチェックマークが表示されることを確認
536
+ - "All checks have passed" が表示されれば成功
537
+
538
+ ### 12. デプロイの動作確認
539
+
540
+ main ブランチへのマージ時に自動デプロイが実行されることを確認します。
541
+
542
+ **確認手順**:
543
+ 1. CI が成功した PR を main ブランチにマージ
544
+ ```bash
545
+ git checkout main
546
+ git pull origin main
547
+ ```
548
+
549
+ 2. デプロイワークフローの実行を確認
550
+ - GitHub Actions / GitLab CI のページでデプロイジョブが実行されていることを確認
551
+
552
+ 3. デプロイ先で動作確認
553
+ - デプロイ先の URL にアクセスして、変更が反映されているか確認
554
+ - ログを確認して、エラーが発生していないか確認
555
+
556
+ ### 13. Git コミット
557
+
558
+ ```bash
559
+ git add .github/workflows/
560
+ # または
561
+ git add .gitlab-ci.yml
562
+
563
+ git commit -m "ci: setup CI/CD pipeline
564
+
565
+ - Add GitHub Actions workflows for lint, test, build
566
+ - Add deploy workflow for Vercel
567
+ - Enable dependency caching for faster builds
568
+ - Add matrix build for Node 18, 20, 22
569
+ - Add E2E tests with Playwright
570
+ - Add Docker image build and push
571
+ - Add Slack notification on failure
572
+ - Add status badges to README
573
+
574
+ 🤖 Generated with [Claude Code](https://claude.com/claude-code)
575
+
576
+ Co-Authored-By: Claude <noreply@anthropic.com>"
577
+ ```
578
+
579
+ ## 完了条件
580
+
581
+ - CI/CD ワークフローファイルが作成されている
582
+ - リント・テスト・ビルドが自動実行される
583
+ - PR ごとに CI が実行される
584
+ - main マージ時にデプロイが実行される
585
+ - 依存関係のキャッシュが設定されている
586
+ - シークレット(API キー、トークン)が安全に管理されている
587
+ - 失敗時の通知が設定されている(オプション)
588
+ - ステータスバッジが README に追加されている
589
+ - すべてのジョブが成功する
590
+
591
+ ## エスカレーション
592
+
593
+ - **CI が失敗する**:
594
+ - 「CI が失敗しました。以下を確認してください:」
595
+ - ログを確認してエラー原因を特定
596
+ - ローカル環境で再現するか確認
597
+ - 依存関係のインストールエラー(`npm ci` → `npm install` に変更)
598
+ - テストの失敗(ローカルでテストを実行)
599
+ - ビルドエラー(環境変数の不足)
600
+
601
+ - **キャッシュが効かない**:
602
+ - 「キャッシュが効いていません。以下を確認してください:」
603
+ - キャッシュキーが正しいか(`package-lock.json` のハッシュ)
604
+ - `npm ci` を使用しているか(`npm install` はキャッシュ効率が悪い)
605
+ - キャッシュの有効期限(GitHub Actions は 7 日間)
606
+
607
+ - **デプロイが失敗する**:
608
+ - 「デプロイが失敗しました。以下を確認してください:」
609
+ - シークレットが正しく設定されているか
610
+ - デプロイ先のサービス(Vercel, AWS)の権限
611
+ - ビルド成果物が正しく生成されているか
612
+ - デプロイコマンドが正しいか
613
+
614
+ - **CI が遅い**:
615
+ - 「CI の実行時間が長すぎます。以下を検討してください:」
616
+ - キャッシュの有効化
617
+ - 並列実行の活用(マトリックスビルド)
618
+ - 不要なステップの削除
619
+ - 依存関係の削減
620
+ - セルフホストランナーの使用(GitHub Actions)
621
+
622
+ - **費用が高い**:
623
+ - 「CI/CD の費用が高騰しています。以下を検討してください:」
624
+ - 無料枠の確認(GitHub Actions: 2,000 分/月)
625
+ - 不要なワークフローの削除
626
+ - `concurrency` でキャンセル設定
627
+ - マトリックスビルドの削減
628
+ - セルフホストランナーの使用
629
+
630
+ ## ベストプラクティス
631
+
632
+ - **キャッシュの活用**: 依存関係とビルド成果物をキャッシュ
633
+ - **並列実行**: 複数ジョブを並列で実行して時間短縮
634
+ - **早期失敗**: リントを最初に実行し、早期にフィードバック
635
+ - **マトリックスビルド**: 複数環境で互換性を確認
636
+ - **シークレット管理**: 機密情報は絶対にコードに含めない
637
+ - **ステータスチェック必須化**: PR マージ前に CI 成功を必須に
638
+ - **通知設定**: 失敗時のみ通知(成功時は通知しない)
639
+ - **ワークフロー分離**: lint, test, deploy を別ワークフローに
640
+ - **環境の分離**: ステージング環境と本番環境を分ける
641
+ - **ロールバック計画**: デプロイ失敗時のロールバック手順を準備
@@ -0,0 +1,71 @@
1
+ ---
2
+ description: 技術的負債の棚卸しから改善案立案・リファクタリング実施・検証までを体系化したコード改善ワークフロー
3
+ auto_execution_mode: 1
4
+ ---
5
+
6
+ # Code-Refactor (x-Code-Refactor)
7
+
8
+ ## 目的
9
+
10
+ - 技術的負債やコードスメルを体系的に洗い出し、優先度に基づく改善を実施する。
11
+ - SOLID原則やデザインパターンを適用し、保守性・可読性・テスト容易性を高める。
12
+ - リファクタリング結果を裏付けるテストとメトリクスを整備し、継続的改善サイクルを確立する。
13
+
14
+ ## 前提
15
+
16
+ - 対象リポジトリの最新ブランチを取得済みで、既存テストが動作すること。
17
+ - 静的解析ツール(Ruff / ESLint / Stylelint など)とテストランナー(pytest / npm test 等)が `run_command` または既存ランナブル経由で実行可能。
18
+ - 依存する設計ガイドラインやコーディング規約、アーキテクチャ決定記録(ADR)が参照可能。
19
+ - 影響範囲が大きい場合は、レビュー担当者や関係チーム(QA / SRE / プロダクトオーナー)と連携できる体制が整っていること。
20
+
21
+ ## 手順
22
+
23
+ 1. **スコーピングとゴール定義**
24
+ - 依頼元の課題(例: 高循環複雑度、重複ロジック、依存性の肥大化)をヒアリングし、改善完了の判定基準を明文化する。
25
+ - 影響範囲(モジュール、サービス、UIコンポーネントなど)とリスクレベルを整理し、必要ならステークホルダーの承認を得る。
26
+
27
+ 2. **現状診断と負債インベントリ作成**
28
+ - 静的解析(`run_command` で Ruff / ESLint / sonar など)を実行し、重大度別に指摘を収集する。
29
+ - 循環的複雑度・LOC・依存グラフなどのメトリクスを取得し、改善効果の測定項目を決定する。
30
+ - コードレビューやログ調査を通じて、ドメイン知識を持つメンバーから非機能的な問題(パフォーマンス、セキュリティ)もヒアリングする。
31
+
32
+ 3. **改善方針と設計プランの策定**
33
+ - SOLID 原則/デザインパターン適用方針、分割単位(モジュール化、関数抽出、クラス化)を決定する。
34
+ - 変更前後の依存関係図や簡易シーケンスを作成し、副作用の有無を評価する。
35
+
36
+ 4. **安全策とテスト体制の準備**
37
+ - 既存テストのカバレッジを確認し、欠けているユースケースは先にテスト追加またはゴールデンマスター生成でカバーする。
38
+ - 回帰防止のための統合テスト/スナップショットテスト/E2E(Playwright MCP や既存CI)を実行計画に組み込む。
39
+ - リファクタリング前にブランチを切り、CI/CDパイプラインや検証用環境が正しく動くか確認する。
40
+
41
+ 5. **リファクタリング実施**
42
+ - 小さなコミット単位で変更し、各ステップ後に lint・フォーマッタ・単体テストを実行して動作確認する。
43
+ - 変換処理が大規模な場合は MorphLLM などのコード変換MCPを活用しつつ、生成結果をレビュー基準に照らして手修正する。
44
+ - 公開APIやドメイン契約を変更する場合は、互換性やマイグレーション手順を同時に整備する。
45
+
46
+ 6. **検証と品質ゲート通過**
47
+ - 追加・更新したテストが成功することを確認し、CIステータスとカバレッジ変化を記録する。
48
+ - スタティックアナライザの再実行で警告が減少しているか、残課題がある場合は理由と対応計画を明記する。
49
+ - Web UI 変更を伴う場合は Playwright MCP や Chrome DevTools MCP でレンダリング/パフォーマンスを検証する。
50
+
51
+ 7. **レビュー準備とナレッジ共有**
52
+ - 変更の意図、リファクタリングパターン、残課題を PR テンプレートやドキュメントに整理する。
53
+ - 影響範囲を受けるドキュメント(設計図、開発ガイド、スタイルガイド)を更新し、PM Agent へのナレッジ登録を検討する。
54
+ - レビュワーに必要な検証手順やスクリーンショット/ログを添付し、レビューサイクルを円滑化する。
55
+
56
+ 8. **フォローアップ**
57
+ - デプロイ後のモニタリング(エラーレート、レスポンス時間、ユーザー行動)をチェックし、回帰がないか確認する。
58
+ - 追加で必要な改善項目や後続タスクが判明した場合は、技術負債リストやバックログへ記録する。
59
+ - リファクタリングの効果(メトリクス改善、レビュー所要時間短縮など)を定量的に振り返り、学びを共有する。
60
+
61
+ ## 完了条件
62
+
63
+ - リファクタリング対象の課題が解消され、事前に定めた成功基準を満たしている。
64
+ - lint・テスト・カバレッジ・パフォーマンスなどの品質ゲートが通過し、残課題は文書化されている。
65
+ - 変更内容・検証結果・フォローアップが関係者へ共有され、レビューまたはデプロイ準備が整っている。
66
+
67
+ ## エスカレーション
68
+
69
+ - 重大な設計変更やビジネス影響が懸念される場合は、アーキテクト/プロダクトオーナーと合意形成する。
70
+ - リファクタリング過程でブロッキングなバグや既存仕様の不備に遭遇した際は、直ちにチームリードへ報告し対応方針を協議する。
71
+ - CI/CD や MCP ツールで障害が発生し作業継続が困難な場合は、SRE/DevOps担当へ連絡し復旧を依頼する。