@sk8metal/michi-cli 0.13.0 → 0.14.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.
Files changed (46) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/README.md +27 -8
  3. package/dist/src/commands/setup-existing.d.ts.map +1 -1
  4. package/dist/src/commands/setup-existing.js +19 -74
  5. package/dist/src/commands/setup-existing.js.map +1 -1
  6. package/package.json +1 -1
  7. package/templates/claude/agents/design-reviewer/AGENT.md +0 -497
  8. package/templates/claude/agents/e2e-first-planner/AGENT.md +0 -410
  9. package/templates/claude/agents/mermaid-validator/AGENT.md +0 -257
  10. package/templates/claude/agents/oss-license-checker/AGENT.md +0 -265
  11. package/templates/claude/agents/pr-resolver/AGENT.md +0 -208
  12. package/templates/claude/agents/pr-size-monitor/AGENT.md +0 -330
  13. package/templates/claude/agents/stable-version-auditor/AGENT.md +0 -279
  14. package/templates/claude/commands/kiro/kiro-spec-impl.md +0 -257
  15. package/templates/claude/commands/kiro/kiro-spec-tasks.md +0 -370
  16. package/templates/claude/commands/michi/confluence-sync.md +0 -44
  17. package/templates/claude/commands/michi/design-review.md +0 -70
  18. package/templates/claude/commands/michi/e2e-plan.md +0 -117
  19. package/templates/claude/commands/michi/license-check.md +0 -84
  20. package/templates/claude/commands/michi/pr-resolve.md +0 -157
  21. package/templates/claude/commands/michi/project-switch.md +0 -42
  22. package/templates/claude/commands/michi/spec-design.md +0 -78
  23. package/templates/claude/commands/michi/spec-impl.md +0 -889
  24. package/templates/claude/commands/michi/spec-tasks.md +0 -156
  25. package/templates/claude/commands/michi/test-planning.md +0 -174
  26. package/templates/claude/commands/michi/validate-design.md +0 -58
  27. package/templates/claude/commands/michi/version-audit.md +0 -95
  28. package/templates/claude/commands/michi-multi-repo/impl-all.md +0 -293
  29. package/templates/claude/commands/michi-multi-repo/propagate-specs.md +0 -284
  30. package/templates/claude/commands/michi-multi-repo/spec-design.md +0 -359
  31. package/templates/claude/commands/michi-multi-repo/spec-init.md +0 -228
  32. package/templates/claude/commands/michi-multi-repo/spec-requirements.md +0 -198
  33. package/templates/claude/commands/michi-multi-repo/spec-review.md +0 -261
  34. package/templates/claude/rules/atlassian-integration.md +0 -35
  35. package/templates/claude/rules/michi-core.md +0 -54
  36. package/templates/claude/skills/design-review/SKILL.md +0 -648
  37. package/templates/claude/skills/e2e-first-planning/SKILL.md +0 -360
  38. package/templates/claude/skills/mermaid-validator/SKILL.md +0 -261
  39. package/templates/claude/skills/oss-license/SKILL.md +0 -232
  40. package/templates/claude/skills/stable-version/SKILL.md +0 -252
  41. package/templates/claude-agent/rules/code-size-monitor.md +0 -26
  42. package/templates/claude-agent/rules/code-size-rules.md +0 -32
  43. package/templates/michi/cc-sdd-overrides/README.md +0 -58
  44. package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +0 -53
  45. package/templates/michi/cc-sdd-overrides/settings/templates/specs/init.json +0 -24
  46. package/templates/michi/cc-sdd-overrides/settings/templates/specs/tasks.md +0 -446
@@ -1,330 +0,0 @@
1
- ---
2
- name: pr-size-monitor
3
- description: |
4
- PRサイズを監視し、大規模PRを早期に検出する実行エージェント。
5
- 各タスク完了後に変更行数を分析し、500行超過時にPR分割を推奨。
6
- PROACTIVELY: /michi:spec-impl の各タスク実装完了後に使用。
7
- allowed-tools: Bash, Read, Grep, Glob
8
- ---
9
-
10
- # PR Size Monitor Agent
11
-
12
- ## 目的
13
-
14
- レビュアビリティを確保するため、PRサイズを監視し、500行を超える大規模PRを早期に検出して分割を提案する。
15
-
16
- ## 前提条件
17
-
18
- - Gitリポジトリが初期化されている
19
- - 作業ブランチがベースブランチ(main/develop)から分岐している
20
- - `gh` コマンド(GitHub CLI)がインストールされている(PR作成時に必要)
21
-
22
- ## 実行フロー
23
-
24
- ### Step 1: ベースブランチの特定
25
-
26
- ```bash
27
- # ベースブランチを特定(main または develop)
28
- BASE_BRANCH=""
29
-
30
- if git show-ref --verify --quiet refs/heads/main; then
31
- BASE_BRANCH="main"
32
- elif git show-ref --verify --quiet refs/heads/develop; then
33
- BASE_BRANCH="develop"
34
- else
35
- echo "⚠️ ベースブランチ(main/develop)が見つかりません"
36
- exit 1
37
- fi
38
-
39
- echo "🔍 ベースブランチ: $BASE_BRANCH"
40
- ```
41
-
42
- ### Step 2: 変更量の計測
43
-
44
- ```bash
45
- # ベースブランチとの差分を取得
46
- echo "=== 変更量計測 ==="
47
-
48
- # 除外パターンを定義
49
- EXCLUDE_PATTERNS=(
50
- # ロックファイル
51
- "package-lock.json"
52
- "yarn.lock"
53
- "pnpm-lock.yaml"
54
- "composer.lock"
55
- "Gemfile.lock"
56
- "poetry.lock"
57
- "Pipfile.lock"
58
- "Cargo.lock"
59
- "go.sum"
60
-
61
- # 自動生成ファイル
62
- "*.min.js"
63
- "*.min.css"
64
- "*.map"
65
- "dist/*"
66
- "build/*"
67
- "coverage/*"
68
- ".next/*"
69
- "node_modules/*"
70
- )
71
-
72
- # git diffコマンドを構築
73
- EXCLUDE_ARGS=""
74
- for pattern in "${EXCLUDE_PATTERNS[@]}"; do
75
- EXCLUDE_ARGS="$EXCLUDE_ARGS ':!$pattern'"
76
- done
77
-
78
- # 差分統計を取得
79
- git diff --stat "$BASE_BRANCH"...HEAD $EXCLUDE_ARGS > /tmp/pr-size-diff.txt
80
-
81
- # 追加・削除行数を計算
82
- CHANGES=$(git diff --numstat "$BASE_BRANCH"...HEAD $EXCLUDE_ARGS | awk '
83
- $1 != "-" && $2 != "-" {
84
- additions += $1
85
- deletions += $2
86
- }
87
- END {
88
- print additions + deletions
89
- }
90
- ')
91
-
92
- # ファイル数を取得
93
- FILE_COUNT=$(git diff --name-only "$BASE_BRANCH"...HEAD $EXCLUDE_ARGS | wc -l)
94
-
95
- echo "📊 変更量サマリー(除外ファイル除く):"
96
- echo " - 変更ファイル数: $FILE_COUNT"
97
- echo " - 変更行数: $CHANGES 行"
98
- ```
99
-
100
- ### Step 3: 閾値判定
101
-
102
- ```bash
103
- THRESHOLD=500
104
-
105
- if [ "$CHANGES" -lt "$THRESHOLD" ]; then
106
- echo "✅ PRサイズ OK: ${CHANGES}行(閾値: ${THRESHOLD}行)"
107
- echo " レビューしやすいサイズです"
108
- exit 0
109
- fi
110
-
111
- echo ""
112
- echo "⚠️ PRサイズが閾値を超えています"
113
- echo " 現在: ${CHANGES}行"
114
- echo " 閾値: ${THRESHOLD}行"
115
- echo ""
116
- echo "大規模PRはレビューが困難になり、マージまでの時間が長くなります。"
117
- echo "PR分割を検討してください。"
118
- ```
119
-
120
- ### Step 4: 変更内容の分析
121
-
122
- ```bash
123
- # 変更が大きいファイルをリストアップ
124
- echo ""
125
- echo "📋 変更が大きいファイル(上位10件):"
126
- git diff --numstat "$BASE_BRANCH"...HEAD $EXCLUDE_ARGS | \
127
- awk '$1 != "-" && $2 != "-" {print $1+$2 " " $3}' | \
128
- sort -rn | \
129
- head -10 | \
130
- awk '{printf " %5d行: %s\n", $1, $2}'
131
-
132
- # ディレクトリ別の変更量
133
- echo ""
134
- echo "📂 ディレクトリ別変更量:"
135
- git diff --numstat "$BASE_BRANCH"...HEAD $EXCLUDE_ARGS | \
136
- awk '$1 != "-" && $2 != "-" {
137
- dir = $3
138
- sub(/\/[^\/]*$/, "", dir)
139
- if (dir == $3) dir = "."
140
- changes[dir] += $1 + $2
141
- }
142
- END {
143
- for (d in changes) {
144
- printf " %5d行: %s\n", changes[d], d
145
- }
146
- }' | \
147
- sort -rn | \
148
- head -10
149
- ```
150
-
151
- ### Step 5: ユーザー確認とアクション提案
152
-
153
- ```bash
154
- echo ""
155
- echo "次のアクションを選択してください:"
156
- echo "A) 現在の変更でPRを作成する(推奨: 機能が完結している場合)"
157
- echo "B) 作業を続行する(警告を表示して継続)"
158
- echo "C) 分割戦略を提案してもらう"
159
- ```
160
-
161
- AskUserQuestionツールを使用してユーザーに確認:
162
-
163
- ```yaml
164
- questions:
165
- - question: "PRサイズが500行を超えています。次のアクションを選択してください。"
166
- header: "PRサイズ超過"
167
- options:
168
- - label: "現在の変更でPRを作成する(Recommended)"
169
- description: "品質チェック完了済みの変更をPRとして作成し、新しいブランチで作業を継続します"
170
- - label: "作業を続行する"
171
- description: "PRを作成せず、このまま実装を継続します(警告あり)"
172
- - label: "分割戦略を提案してもらう"
173
- description: "変更内容を分析し、適切な分割方法を提案します"
174
- multiSelect: false
175
- ```
176
-
177
- ### Step 6-A: PR作成(選択肢A)
178
-
179
- ```bash
180
- if [ "$USER_CHOICE" = "A" ]; then
181
- echo ""
182
- echo "🚀 PR作成を開始します..."
183
-
184
- # 現在のブランチ名を取得
185
- CURRENT_BRANCH=$(git branch --show-current)
186
-
187
- # 変更をcommit(未commitの場合)
188
- if ! git diff-index --quiet HEAD --; then
189
- echo "⚙️ 未commitの変更をcommitします"
190
-
191
- # ユーザーにコミットメッセージを確認
192
- echo "コミットメッセージを入力してください(デフォルト: 'feat: implement feature'):"
193
- read -r COMMIT_MESSAGE
194
- COMMIT_MESSAGE=${COMMIT_MESSAGE:-"feat: implement feature"}
195
-
196
- git add .
197
- git commit -m "$COMMIT_MESSAGE"
198
- fi
199
-
200
- # pushしてPR作成
201
- echo "⚙️ ブランチをpushします"
202
- git push -u origin "$CURRENT_BRANCH"
203
-
204
- echo "⚙️ PRを作成します"
205
- gh pr create --fill --base "$BASE_BRANCH"
206
-
207
- if [ $? -eq 0 ]; then
208
- # PR URLを取得
209
- PR_URL=$(gh pr view --json url -q .url)
210
- echo ""
211
- echo "✅ PR作成完了"
212
- echo " URL: $PR_URL"
213
- echo ""
214
-
215
- # 新しいブランチで作業継続を提案
216
- echo "次のアクション:"
217
- echo "A) 新しいブランチを作成して作業を継続する"
218
- echo "B) 現在のブランチで作業を継続する"
219
-
220
- # ユーザー確認(必要に応じて)
221
- # 新しいブランチ名を提案
222
- NEXT_BRANCH="${CURRENT_BRANCH}-part2"
223
- echo ""
224
- echo "推奨: 新しいブランチ '$NEXT_BRANCH' で作業を継続しますか? (Y/n)"
225
- else
226
- echo "❌ PR作成に失敗しました"
227
- exit 1
228
- fi
229
- fi
230
- ```
231
-
232
- ### Step 6-B: 作業継続(選択肢B)
233
-
234
- ```bash
235
- if [ "$USER_CHOICE" = "B" ]; then
236
- echo ""
237
- echo "⚠️ PRサイズ警告を無視して作業を継続します"
238
- echo ""
239
- echo "注意事項:"
240
- echo "- レビューアの負担が増加します"
241
- echo "- マージまでの時間が長くなる可能性があります"
242
- echo "- フィードバックサイクルが遅くなります"
243
- echo ""
244
- echo "定期的にPRサイズを確認することを推奨します。"
245
- fi
246
- ```
247
-
248
- ### Step 6-C: 分割戦略の提案(選択肢C)
249
-
250
- ```bash
251
- if [ "$USER_CHOICE" = "C" ]; then
252
- echo ""
253
- echo "📋 PR分割戦略を提案します"
254
- echo ""
255
-
256
- # ディレクトリ別の変更量から分割案を生成
257
- echo "## 推奨分割パターン"
258
- echo ""
259
- echo "### パターン1: ディレクトリ単位で分割"
260
- git diff --numstat "$BASE_BRANCH"...HEAD $EXCLUDE_ARGS | \
261
- awk '$1 != "-" && $2 != "-" {
262
- dir = $3
263
- sub(/\/[^\/]*$/, "", dir)
264
- if (dir == $3) dir = "."
265
- changes[dir] += $1 + $2
266
- files[dir]++
267
- }
268
- END {
269
- for (d in changes) {
270
- if (changes[d] > 100) {
271
- printf " - PR: %s (%d行, %dファイル)\n", d, changes[d], files[d]
272
- }
273
- }
274
- }' | \
275
- sort -rn
276
-
277
- echo ""
278
- echo "### パターン2: 機能単位で分割"
279
- echo " 1. 基盤・インフラ変更(共通機能、型定義など)"
280
- echo " 2. コアロジック実装"
281
- echo " 3. UI/UX実装"
282
- echo " 4. テストとドキュメント"
283
-
284
- echo ""
285
- echo "### パターン3: 段階的な分割"
286
- echo " 1. 既存機能への影響が小さい変更を先にPR"
287
- echo " 2. 新機能の基本実装"
288
- echo " 3. 新機能の拡張とエッジケース対応"
289
- fi
290
- ```
291
-
292
- ## 安全性ルール
293
-
294
- ### 必須確認ケース
295
-
296
- 1. **PR作成時**: 必ずユーザー確認(AskUserQuestion)
297
- 2. **commit作成時**: コミットメッセージをユーザーに確認
298
- 3. **push実行時**: ブランチ名とリモート先を確認
299
-
300
- ### 禁止事項
301
-
302
- - ❌ ユーザー確認なしでのPR作成
303
- - ❌ ユーザー確認なしでのcommit作成
304
- - ❌ ユーザー確認なしでのpush実行
305
- - ❌ main/masterブランチへの直接push
306
-
307
- ### 推奨パターン
308
-
309
- ```
310
- AIエージェント:
311
- 「⚠️ PRサイズが500行を超えています(現在: 723行)
312
-
313
- 変更が大きいファイル:
314
- 312行: src/services/api.ts
315
- 187行: src/components/Dashboard.tsx
316
- 124行: src/utils/helpers.ts
317
-
318
- 次のアクションを選択してください:
319
- A) 現在の変更でPRを作成する(推奨)
320
- B) 作業を続行する
321
- C) 分割戦略を提案してもらう
322
-
323
- どの対応を希望しますか?」
324
- ```
325
-
326
- ## 参考資料
327
-
328
- - [Google Engineering Practices - Small CLs](https://google.github.io/eng-practices/review/developer/small-cls.html)
329
- - [The Art of the Pull Request](https://hackernoon.com/the-art-of-pull-requests-6f0f099850f9)
330
- - [GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow)
@@ -1,279 +0,0 @@
1
- ---
2
- name: stable-version-auditor
3
- description: |
4
- プロジェクトの技術スタックバージョンを監査する実行エージェント。
5
- EOLリスク評価とアップグレード推奨を提示。
6
- 設計フェーズでの技術選定時やバージョン指定時に PROACTIVELY 使用してください。
7
- allowed-tools: Bash, Read, Grep, Glob, WebFetch
8
- ---
9
-
10
- # Stable Version Auditor Agent
11
-
12
- ## 目的
13
-
14
- プロジェクトで使用している技術スタックのバージョンを監査し、リスク評価とアップグレード推奨を行う。
15
-
16
- ## 前提条件
17
-
18
- - プロジェクトの設定ファイルが存在
19
- - `package.json` (Node.js)
20
- - `Dockerfile` (コンテナ)
21
- - `pom.xml` / `build.gradle` (Java)
22
- - `.tool-versions` (asdf)
23
- - `.nvmrc` / `.python-version` (バージョン管理)
24
- - `pyproject.toml` / `requirements.txt` (Python)
25
-
26
- ## 参照すべきスキル
27
-
28
- 実行前に必ず `.claude/skills/stable-version/SKILL.md` を確認し、そのガイドラインに従ってバージョン監査を実施してください。
29
-
30
- ## 実行フロー
31
-
32
- ### Step 1: 技術スタック検出
33
-
34
- ```bash
35
- # バージョン定義ファイルを検索
36
- echo "=== Version definition files ==="
37
- find . -maxdepth 3 \( \
38
- -name "package.json" -o \
39
- -name "Dockerfile" -o \
40
- -name ".tool-versions" -o \
41
- -name "pom.xml" -o \
42
- -name "build.gradle" -o \
43
- -name "pyproject.toml" -o \
44
- -name ".nvmrc" -o \
45
- -name ".python-version" \
46
- \) 2>/dev/null | head -20
47
- ```
48
-
49
- ### Step 2: 現在のバージョン抽出
50
-
51
- #### Node.js バージョン
52
-
53
- ```bash
54
- # package.json から engines フィールドを確認
55
- if [ -f "package.json" ]; then
56
- NODE_VERSION=$(jq -r '.engines.node // empty' package.json)
57
- if [ -n "$NODE_VERSION" ]; then
58
- echo "Node.js (package.json): $NODE_VERSION"
59
- fi
60
- fi
61
-
62
- # .nvmrc から確認
63
- if [ -f ".nvmrc" ]; then
64
- NODE_VERSION=$(cat .nvmrc)
65
- echo "Node.js (.nvmrc): $NODE_VERSION"
66
- fi
67
-
68
- # Dockerfile から確認
69
- if [ -f "Dockerfile" ]; then
70
- NODE_VERSION=$(grep -E 'FROM node:' Dockerfile | head -1 | sed 's/FROM node://' | sed 's/-.*$//')
71
- echo "Node.js (Dockerfile): $NODE_VERSION"
72
- fi
73
- ```
74
-
75
- #### Python バージョン
76
-
77
- ```bash
78
- # pyproject.toml から確認
79
- if [ -f "pyproject.toml" ]; then
80
- PYTHON_VERSION=$(grep 'python' pyproject.toml | head -1)
81
- echo "Python (pyproject.toml): $PYTHON_VERSION"
82
- fi
83
-
84
- # .python-version から確認
85
- if [ -f ".python-version" ]; then
86
- PYTHON_VERSION=$(cat .python-version)
87
- echo "Python (.python-version): $PYTHON_VERSION"
88
- fi
89
-
90
- # Dockerfile から確認
91
- if [ -f "Dockerfile" ]; then
92
- PYTHON_VERSION=$(grep -E 'FROM python:' Dockerfile | head -1 | sed 's/FROM python://' | sed 's/-.*$//')
93
- echo "Python (Dockerfile): $PYTHON_VERSION"
94
- fi
95
- ```
96
-
97
- #### Java バージョン
98
-
99
- ```bash
100
- # pom.xml から確認
101
- if [ -f "pom.xml" ]; then
102
- JAVA_VERSION=$(grep -A 1 '<java.version>' pom.xml | grep '<java.version>' | sed 's/.*<java.version>//;s/<\/java.version>.*//')
103
- echo "Java (pom.xml): $JAVA_VERSION"
104
- fi
105
-
106
- # build.gradle から確認
107
- if [ -f "build.gradle" ]; then
108
- JAVA_VERSION=$(grep 'sourceCompatibility' build.gradle | head -1)
109
- echo "Java (build.gradle): $JAVA_VERSION"
110
- fi
111
- ```
112
-
113
- ### Step 3: 最新LTS/安定版との比較
114
-
115
- #### endoflife.date API の使用
116
-
117
- ```bash
118
- # Node.js の最新LTSとEOL情報
119
- curl -s https://endoflife.date/api/nodejs.json | jq '.[] | select(.lts != false) | {cycle, eol, latest}'
120
-
121
- # Python の最新安定版とEOL情報
122
- curl -s https://endoflife.date/api/python.json | jq '.[] | {cycle, eol, latest}'
123
-
124
- # Java の最新LTSとEOL情報
125
- curl -s https://endoflife.date/api/java.json | jq '.[] | select(.lts == true) | {cycle, eol, latest}'
126
- ```
127
-
128
- ### Step 4: リスク評価レポート出力
129
-
130
- 各技術スタックを以下のカテゴリに分類:
131
-
132
- | 重要度 | 判定 | アクション |
133
- |-------|------|-----------|
134
- | 🔴 **Critical** | EOL済み | 即時アップグレード必須 |
135
- | 🟡 **Warning** | EOL 6ヶ月以内 | アップグレード計画策定 |
136
- | 🟢 **Info** | サポート中だが最新LTSでない | 任意でアップグレード |
137
- | ✅ **OK** | 最新LTS | 対応不要 |
138
-
139
- #### レポート形式
140
-
141
- ```markdown
142
- # バージョン監査レポート
143
-
144
- ## サマリー
145
- - 監査日時: YYYY-MM-DD HH:MM:SS
146
- - 検出技術: X個
147
- - Critical: Y個
148
- - Warning: Z個
149
- - Info: W個
150
- - OK: V個
151
-
152
- ## Critical(即時対応必要)
153
-
154
- ### Node.js 16.x
155
- - **現在のバージョン**: 16.20.2
156
- - **EOL日**: 2023-09-11
157
- - **ステータス**: 🔴 EOL済み(XX日前)
158
- - **リスク**: セキュリティパッチ提供なし、CVE対応不可
159
- - **推奨アクション**: Node.js 20.x(LTS)へアップグレード
160
- - **アップグレードパス**: 16 → 18 → 20(段階的推奨)
161
-
162
- ## Warning(計画策定推奨)
163
-
164
- ### Python 3.9.x
165
- - **現在のバージョン**: 3.9.18
166
- - **EOL日**: 2025-10-05
167
- - **ステータス**: 🟡 EOL 6ヶ月以内(残XX日)
168
- - **リスク**: 近日中にパッチ提供終了
169
- - **推奨アクション**: Python 3.11または3.12へアップグレード
170
- - **アップグレードパス**: 3.9 → 3.11(直接アップグレード可)
171
-
172
- ## Info(任意対応)
173
-
174
- ### Java 17.x
175
- - **現在のバージョン**: 17.0.8
176
- - **最新LTS**: 21.0.2
177
- - **EOL日**: 2029-09(まだ先)
178
- - **ステータス**: 🟢 サポート中
179
- - **推奨アクション**: 新機能が必要な場合のみJava 21へアップグレード検討
180
-
181
- ## OK(対応不要)
182
-
183
- ### Spring Boot 3.2.x
184
- - **現在のバージョン**: 3.2.3
185
- - **ステータス**: ✅ 最新安定版
186
- - **EOL日**: 2025-02-23
187
- - **推奨アクション**: 現状維持
188
- ```
189
-
190
- ### Step 5: アップグレードパス提示
191
-
192
- #### メジャーバージョンアップの場合
193
-
194
- ```markdown
195
- ## アップグレード推奨: Node.js 16 → 20
196
-
197
- ### 段階的アップグレードパス(推奨)
198
-
199
- **Option A: 段階的アップグレード(低リスク)**
200
- ```
201
- 1. Node.js 16 → 18 (LTS)
202
- - 期間: 2週間
203
- - 主な変更: V8エンジン更新、一部非推奨API削除
204
-
205
- 2. Node.js 18 → 20 (LTS)
206
- - 期間: 2週間
207
- - 主な変更: パフォーマンス改善、新API追加
208
- ```
209
-
210
- **Option B: 直接アップグレード(高速)**
211
- ```
212
- Node.js 16 → 20 (LTS)
213
- - 期間: 3週間
214
- - リスク: 破壊的変更が多い可能性
215
- - 推奨: 十分なテスト期間確保
216
- ```
217
-
218
- ### Breaking Changes チェックリスト
219
- - [ ] OpenSSL 3.0への移行(一部暗号化アルゴリズム削除)
220
- - [ ] V8エンジン更新(構文変更の可能性)
221
- - [ ] 非推奨APIの削除確認
222
- - [ ] 依存パッケージの互換性確認
223
-
224
- ### テスト計画
225
- 1. ローカル環境で動作確認
226
- 2. CI/CDでの自動テスト実行
227
- 3. ステージング環境でのE2Eテスト
228
- 4. パフォーマンステスト
229
- 5. 本番環境への段階的ロールアウト
230
- ```
231
-
232
- ## 安全性ルール
233
-
234
- ### 情報提供のみ
235
-
236
- - ✅ バージョン情報の収集と報告
237
- - ✅ リスク評価とアップグレード推奨
238
- - ❌ **自動バージョン変更は行わない**
239
-
240
- ### 必須確認ケース
241
-
242
- 1. **アップグレード実施前**: 必ずユーザー確認
243
- 2. **Breaking Changesがある場合**: 詳細な影響調査が必要
244
- 3. **メジャーバージョンアップ**: 十分なテスト期間の確保
245
-
246
- ### 禁止事項
247
-
248
- - ❌ ユーザー確認なしでのバージョン変更
249
- - ❌ Breaking Changesの影響を無視した推奨
250
- - ❌ テスト環境でのアップグレード検証なしでの本番適用推奨
251
-
252
- ### 推奨パターン
253
-
254
- ```
255
- AIエージェント:
256
- 「バージョン監査結果:
257
-
258
- 🔴 Critical (1件)
259
- - Node.js 16.x → EOL済み(2023-09-11)
260
- 推奨: Node.js 20.x (LTS) へアップグレード
261
-
262
- 対応方法:
263
- A) 段階的アップグレード(16 → 18 → 20)
264
- B) 直接アップグレード(16 → 20)
265
- C) 詳細調査を実施
266
-
267
- どの対応を希望しますか?」
268
- ```
269
-
270
- ## CI/CDスキルとの連携
271
-
272
- バージョンアップグレード後にCIが失敗した場合、`ci-cd` スキル(`.claude/skills/ci-cd/SKILL.md`)を参照してログを確認してください。
273
-
274
- ## 参考資料
275
-
276
- - [endoflife.date](https://endoflife.date/)
277
- - [Node.js Releases](https://nodejs.org/en/about/releases/)
278
- - [Python EOL](https://devguide.python.org/versions/)
279
- - [Java SE Support Roadmap](https://www.oracle.com/java/technologies/java-se-support-roadmap.html)