`/eol-plan` で作成した計画書に基づいて、実際のアップデート作業を実行します。
`/eol-plan`で作成した計画書に基づき、ライブラリのEOLアップデートを自動実行します。Phase 0〜6まで段階的に処理し、各フェーズ後にlint/testを自動実行して品質を確認。`/eol-update`で次のフェーズを実行、`/eol-update all`で全フェーズを連続実行可能。
/plugin marketplace add snhrm/claude-plugin/plugin install fe-eol-checker@claude-plugin/eol-plan で作成した計画書に基づいて、実際のアップデート作業を実行します。
$ARGUMENTS: 実行するフェーズを指定
phase0, phase1, ... phase6: 特定フェーズを実行all: 全フェーズを順次実行(各フェーズ完了時に確認)/eol-update # 次のフェーズを実行
/eol-update phase0 # Phase 0(事前準備)を実行
/eol-update phase3 # Phase 3(主要フレームワーク)を実行
/eol-update all # 全フェーズを順次実行
[Step 1] 計画書の読み込み・状態確認
↓
[Step 2] 実行フェーズの決定
↓
[Step 3] フェーズ実行(サブエージェント呼び出し)
↓
[Step 4] lint/test実行・結果確認
↓
[Step 5] 計画書の進捗更新
↓
[Step 6] 次のアクション提案
# CLAUDE.mdから出力先を確認
grep -i "EOL計画出力先" CLAUDE.md
# デフォルト: プロジェクトルートのeol-plan.md
cat eol-plan.md
計画書が存在しない場合:
→ ユーザーに /eol-plan の実行を促す
計画書内のチェックボックス状態を確認:
- [x]: 完了- [ ]: 未完了# パッケージマネージャーの特定
ls bun.lockb bun.lock pnpm-lock.yaml yarn.lock package-lock.json 2>/dev/null | head -1
# Node.jsバージョン管理ツールの特定
ls .nvmrc .node-version .tool-versions mise.toml .mise.toml 2>/dev/null | head -1
# lint/testコマンドの特定
cat package.json | grep -A10 '"scripts"'
package.jsonに lint:fix コマンドがあるか確認:
grep '"lint:fix"' package.json
lint:fixコマンドがない場合は追加する:
{
"scripts": {
"lint:fix": "eslint src --ext .js,.jsx,.ts,.tsx --fix && tsc --noEmit"
}
}
| プロジェクト構成 | 推奨lint:fixコマンド |
|---|---|
| ESLint + TypeScript | eslint src --ext .js,.jsx,.ts,.tsx --fix && tsc --noEmit |
| Next.js | next lint --fix && tsc --noEmit |
| Biome | biome check --write src && tsc --noEmit |
注意:
--fix でESLintの自動修正を実行tsc --noEmit で型チェックのみ実行(ファイル出力なし)指定されたフェーズを実行
計画書の進捗から次のフェーズを自動判定:
ユーザーに確認:
次のフェーズを実行します:
Phase {N}: {フェーズ名}
対象:
- {ライブラリ1}: {現在} → {目標}
- {ライブラリ2}: {現在} → {目標}
実行してよろしいですか?
不足テストの確認
ベースライン確立
# lint実行
{lint コマンド}
# test実行
{test コマンド}
結果確認
phase-executor サブエージェントを呼び出し
実行フェーズ: Phase {N}
フェーズ名: {フェーズ名}
対象ライブラリ:
- {ライブラリ1}: {現在} → {目標}
- {ライブラリ2}: {現在} → {目標}
破壊的変更への対応:
- {変更1}: {対応方法}
- {変更2}: {対応方法}
プロジェクト情報:
パッケージマネージャー: {npm/yarn/pnpm/bun}
Node.jsバージョン管理: {nvm/mise/asdf/なし}
migration-executor サブエージェントを呼び出し
置換対象:
旧ライブラリ: {旧}
新ライブラリ: {新}
API対応表:
- {旧API} → {新API}
プロジェクト情報:
...
各フェーズ完了後に必ず実行:
# 1. lint:fix(ESLint自動修正 + TypeScript型チェック)
{pm} run lint:fix
# 2. test
{pm} run test
# 3. build(オプション)
{pm} run build
lint:fix を最初に実行
test を実行
build を最後に実行
| 結果 | アクション |
|---|---|
| すべてパス | 次のステップへ |
| lint失敗 | 自動修正を試行(--fix)、手動修正を提案 |
| test失敗 | 失敗テストを分析、修正を提案 |
| build失敗 | エラーを分析、修正を提案 |
フェーズ完了時に計画書を更新:
### Phase {N}: {フェーズ名}
**確認項目**:
- [x] `{pm} run lint:fix` 成功 ← 更新
- [x] `{pm} run test` 成功 ← 更新
- [x] ビルド成功 ← 更新
- [ ] 動作確認 ← ユーザーに確認を促す
✅ Phase {N} が完了しました。
次のステップ:
1. [ ] 動作確認を行ってください
2. [ ] 問題なければ `/eol-update phase{N+1}` で次のフェーズへ
または `/eol-update all` で残りのフェーズを連続実行
❌ Phase {N} でエラーが発生しました。
エラー内容:
{エラー詳細}
推奨アクション:
1. {修正提案1}
2. {修正提案2}
修正後、再度 `/eol-update phase{N}` を実行してください。
問題発生時:
# 変更を一時退避
git stash
# または特定ファイルを復元
git checkout -- package.json package-lock.json
# 依存関係を再インストール
{install コマンド}