# Flutter Upgrade Creator

> Generate a dedicated Flutter upgrade skill (e.g. flutter-upgrade-3-47) for a specific Flutter stable release by fetching and analyzing release notes, breaking changes, and migration guides. Use when the user asks to create an upgrade skill for a new Flutter stable release, or asks to generate 'flutter-upgrade-X-YY'.

- Skill: `mono0926/flutter-upgrade-creator` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mono0926/flutter-upgrade-creator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mono0926/flutter-upgrade-creator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: mono0926 (https://skillmd.com/u/mono0926)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mono0926/flutter-upgrade-creator

---


# flutter-upgrade-creator

このスキルは、Flutterの新しい stable バージョン（例: `3.47` など）がリリースされた際に、その特定バージョンにプロジェクトを追従・アップグレードするための専用Skill（例: `flutter-upgrade-3-47`）を自動生成（調査・構築）するメタスキルです。

---

## 🎯 目的と役割

ユーザーから「Flutter 3.47 へのアップグレードSkillを作って」のように特定バージョンを指定された場合、公式ドキュメントやリリース情報を網羅的に調査し、`/Users/mono/Git/skills/flutter-upgrade-<major>-<minor>` ディレクトリに高品質な追従Skillを出力します。

---

## 🧭 生成・調査のフロー

指定されたバージョン（例: `VERSION = 3.47` または `3.47.0`）を受け取ったら、以下の順序で情報を調査・抽出し、専用Skillを作成します。

### Step 1: 公式リリース情報・一次ドキュメントの網羅的リサーチ

以下のURLおよび関連ページを `read_url_content` や `search_web` で読み込み・解析します。

1. **Flutter Announcement Blog (What's New)**:
   - `https://flutter.dev/blog/whats-new-in-flutter-<major>-<minor>` (例: `https://flutter.dev/blog/whats-new-in-flutter-3-47`) または `https://blog.flutter.dev/whats-new-in-flutter-<major>-<minor>`
   - `https://flutter.dev/blog?category=release`
   - 指定バージョン（例: Flutter 3.47）の公式発表記事・What's New記事を探して全文およびURLを確認。
2. **Dart Release Blog**:
   - `https://dart.dev/blog`
   - Flutterの該当バージョンに同梱されている Dart（例: Dart 3.13 / 3.7 / 3.8 など）の更新情報・ブログ記事を確認。
3. **Breaking Changes**:
   - `https://docs.flutter.dev/release/breaking-changes`
   - 指定バージョンで追加された破壊的変更（非互換なAPI変更、減衰/非推奨 API、削除された機能など）を抽出。
4. **Specific Release Notes**:
   - `https://docs.flutter.dev/release/release-notes/release-notes-<VERSION>` (例: `release-notes-3.47.0` や `release-notes-3.47.0.md` など)
   - 詳細なチェンジログ、機能変更、マイグレーションコードを収集。

---

### Step 2: 収集情報の分析・分類

リサーチした情報を以下の5つのカテゴリに整理します。

1. **一次情報・公式リファレンスURL一覧**:
   - What's New ブログ、Release Notes、Breaking Changes、Dart ブログなどの固定直リンクを収集。
2. **`environment` (sdk, flutter) caret指定バージョン下限更新方針**:
   - 通常プロジェクト: `pubspec.yaml` の `environment` 指定 (例: `sdk: "^3.13.0"`, `flutter: "^3.47.0"`) の更新。
   - Melos モノレポ: ルート `pubspec.yaml` の `melos.bootstrap.environment` 指定の更新。
   - その後 `melos bs` で配下全パッケージの指定を一括適用・更新する手順。
3. **`flutter create .` テンプレート差分・標準構成**:
   - 当該バージョンで推奨される設定ファイル記述 (`analysis_options.yaml`, Android Gradle Plugin / Kotlin / Gradle バージョン, iOS Xcode / Podfile 設定, Web構成など)。
4. **自動修正コマンド & オプトイン/ベータ機能 (Migration code)**:
   - 例: `dart fix --apply --code=migrate_design_widgets`
   - 各オプトイン/ベータ機能について以下を整理：
     - **概要・何が変わるか**
     - **メリット**
     - **デメリット・リスク**
     - **推奨度**（「推奨 (Recommended)」「任意 (Optional)」「慎重・確認推奨 (Caution)」）
5. **動作変化の懸念点・不安要素（ランタイム影響の警告）**:
   - **コンパイルエラーにならないが挙動が変わる変更点**（UIのデフォルトスタイル変更、イベント伝播の変更、レンダリング/アニメーション仕様変更、廃止予定フラグの変更など）。
   - コンパイルエラーになる明確な Breaking Changes と手動修復パターン。
6. **PR作成ノウハウ**:
   - 変更理由、テンプレート追従、適用したオプトイン機能、確認が必要な懸念事項、参考リンクを網羅するPRテンプレート。

---

### Step 3: 特定バージョン用Skill (`flutter-upgrade-X-YY/SKILL.md`) の作成

`/Users/mono/Git/skills/flutter-upgrade-<major>-<minor>` ディレクトリを作成し、以下の構造で `SKILL.md` を書き出します。

#### 生成される `flutter-upgrade-X-YY/SKILL.md` の標準構造

```markdown
---
name: flutter-upgrade-<major>-<minor>
description: Upgrade a Flutter project to Flutter <VERSION> (e.g. 3.47). Includes official reference URLs (What's new blog, release notes, breaking changes). Handles cases whether Flutter SDK is already upgraded to <VERSION> or not. Follows latest flutter create template defaults, updates pubspec.yaml environment SDK & Flutter bounds with caret notation (^3.13.0 & ^3.47.0), configures melos.bootstrap.environment & runs melos bs if applicable, applies dart fixes, prompts for opt-in migration tools, warns about runtime breaking changes, and creates a detailed Pull Request.
---

# flutter-upgrade-<major>-<minor>

このスキルは、Flutterプロジェクトを **Flutter <VERSION>** へ安全かつスムーズに追従・アップグレードするための専用スキルです。すでにローカル環境/FVMが <VERSION> に更新済みの場合でも、未更新の場合でもスムーズに対応します。

---

## 📚 一次情報・公式リファレンス (Reference Links)

アップグレード作業時に参照すべき公式の重要情報源一覧です：

- 📢 **What's New in Flutter <VERSION> (Official Blog)**: [https://flutter.dev/blog/whats-new-in-flutter-<major>-<minor>](https://flutter.dev/blog/whats-new-in-flutter-<major>-<minor>)
- 📝 **Flutter <VERSION>.0 Release Notes**: [https://docs.flutter.dev/release/release-notes/release-notes-<VERSION>.0](https://docs.flutter.dev/release/release-notes/release-notes-<VERSION>.0)
- ⚠️ **Flutter Breaking Changes**: [https://docs.flutter.dev/release/breaking-changes](https://docs.flutter.dev/release/breaking-changes)
- 📰 **Flutter Release Category**: [https://flutter.dev/blog?category=release](https://flutter.dev/blog?category=release)
- 🎯 **Dart Blog**: [https://dart.dev/blog](https://dart.dev/blog)

---

## 🚀 実行フロー

### 1. 環境確認・Flutter SDK 昇格 / FVM 切り替え & Draft PR作成
- **現在の SDK バージョンおよび FVM 設定を確認**:
  - `flutter --version` および `.fvmrc` の有無を確認。
- **バージョン昇格 / スキップ分岐**:
  - **ケース A: すでに <VERSION> に更新済みの場合**:
    - 「Flutter SDK はすでに <VERSION> に達しています」と出力し、昇格処理をスキップ。
  - **ケース B: まだ旧バージョンの場合**:
    - **FVM利用時**: `.fvmrc` を `<VERSION>.0` に更新し `fvm use <VERSION>.0` を実行。
    - **グローバル Flutter 利用時**: ユーザー案内後に `flutter upgrade` を実行（または FVM 提案）。
- **Gitブランチの作成**: (`feature/mono/<VERSION_KEBAB>-upgrade`)
- **Draft PR起票**: `env -u GITHUB_TOKEN -u GH_TOKEN gh pr create --draft ...` または空コミット起票による Draft PR 作成。

### 2. `environment` バージョン更新 & `flutter create .` 最新テンプレートへの追従
- **通常プロジェクトの場合**:
  - `pubspec.yaml` の `environment` 指定 (sdk, flutter ともに caret 指定 `^`) の更新 (例: `sdk: "^<DART_VERSION>"`, `flutter: "^<VERSION>.0"`).
- **モノレポ (`Melos`) プロジェクトの場合**:
  - ルート `pubspec.yaml` の `melos.bootstrap.environment` に以下を設定：
    ```yaml
    melos:
      bootstrap:
        environment:
          sdk: "^<DART_VERSION>"
          flutter: "^<VERSION>.0"
    ```
  - その後 `melos bs` (`melos bootstrap`) を実行して、各パッケージの `environment` 指定を一括自動適用・更新。
- **`flutter create .` テンプレート差分追従**:
  - 一時ディレクトリにて `flutter create --org com.example temp_app` を実行。
  - `analysis_options.yaml`, `android/` (Gradle Plugin, Kotlin), `ios/` (Xcode, Podfile), `web/` の最新テンプレートへのキャッチアップ。

### 3. 自動修復とパッケージ依存関係
- `flutter pub get` （Melosの場合は `melos bs` / `melos exec -- flutter pub get`）の実行
- `dart fix --apply` による機械的修正の適用

### 4. オプトイン / ベータ機能 / Migration Fix の対話選択
ユーザーへ `ask_question` または明確な対話により、以下の移行コード/機能の適用可否をヒアリングする。

[バージョン固有のオプトイン機能一覧]
- **機能/コード**: 例: `dart fix --apply --code=...`
  - **メリット**: ...
  - **デメリット**: ...
  - **推奨度**: (推奨 / 任意 / 慎重)

### 5. 動作変化の懸念点・不安要素（注意が必要な変更点）のチェック＆報告
コンパイルエラーにならなくても動作が変わる可能性がある事項をリストアップし、必要に応じて手動修正またはユーザーへの警告・確認を実施する。

[バージョン固有の動作変化注意点一覧]

### 6. 静的解析 & テスト検証
- `dart analyze` (または `melos run analyze`) を実行し、警告・エラーが0件であることを確認。
- `flutter test` を実行し、既存テストがパスすることを確認。

### 7. コミット & PR本文の更新
- `git-commit-formatter` を活用して Conventional Commits に従ったコミットを作成。
- 参考リンク、`environment` (sdk, flutter の caret 指定、Melos時の `melos.bootstrap.environment` 指定) のアップデート内容、テンプレート追従内容、適用したオプトイン機能、手動確認が必要な動作変更懸念事項を明記した詳細な PR 本文を作成し、PRを更新。
```

---

## 🛠 スキル生成の完了条件

1. `/Users/mono/Git/skills/flutter-upgrade-<major>-<minor>/SKILL.md` が正常に生成されていること。
2. 対象バージョンの公式リファレンスURL群（What's New ブログ・Release Notes・Breaking Changes 等）が埋め込まれていること。
3. `pubspec.yaml` の `environment` 指定 (sdk, flutter ともに caret 指定 `^` による引き上げ) および Melos プロジェクトでの `melos.bootstrap.environment` 設定と `melos bs` 一括反映手順が含まれていること。
4. リリースノート・Breaking Changes・`flutter create` テンプレート更新点・オプトイン機能のメリット/デメリット・動作変化注意点が網羅されていること。

