Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions skills/dart-flutter-sdk-upgrade/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ version bumps, no test changes.
Apply these standards to ALL SDK upgrade work:

- **Flutter and Dart versions differ** — always look up the Dart version bundled with the target Flutter release from <https://docs.flutter.dev/install/archive>
- **CI uses `^MAJOR.MINOR.x`** — wildcard patch so CI always gets the latest patch
- **Flutter CI uses `MAJOR.MINOR.x`** — no caret, `.x` wildcard resolves to latest patch
- **Dart CI uses exact patch** — `MAJOR.MINOR.PATCH`, no caret, no wildcard
- **pubspec pins exact patch** — use `^MAJOR.MINOR.PATCH` with the specific patch version
- **Pure Dart packages** — use the Dart version directly, no Flutter mapping needed
- **Verify with `pub get` and `analyze`** — don't silently resolve conflicts
Expand Down Expand Up @@ -56,16 +57,17 @@ Confirm both resolved versions with the user before editing files.
## 1. CI workflows — `.github/workflows/`

VGV packages use `VeryGoodOpenSource/very_good_workflows` reusable workflows. Leave the
`@v1` tag untouched. Use `^MAJOR.MINOR.x` — caret with literal `x` as the patch wildcard
so CI always resolves to the latest release patch automatically. When bumping versions,
update MAJOR and/or MINOR as appropriate (e.g., `^3.41.x` → `^3.42.x` or `^4.0.x`):
`@v1` tag untouched. Flutter packages use `MAJOR.MINOR.x` — no caret, literal `x` as the
patch wildcard so CI resolves to the latest patch automatically. Dart packages pin the exact
patch version. When bumping versions, update MAJOR and/or MINOR as appropriate
(e.g., `3.41.x` → `3.42.x` or `4.0.x`):

**Flutter package:**

```yaml
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1
with:
flutter_version: "^3.41.x" # ← caret + MAJOR.MINOR.x, resolves to latest patch
flutter_version: "3.41.x" # ← MAJOR.MINOR.x, resolves to latest patch
```

**Pure Dart package** — note the key is `dart_sdk`, not `flutter_version`. Use the Dart
Expand All @@ -74,7 +76,7 @@ version, not the Flutter version:
```yaml
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1
with:
dart_sdk: "^3.11.x" # ← Dart version (not Flutter version)
dart_sdk: "3.11.0" # ← exact Dart version (not Flutter version)
```

If a file uses `flutter_channel: stable` instead of a pinned version,
Expand Down Expand Up @@ -139,7 +141,8 @@ Suggested commit/PR message:
```text
chore: bump Flutter to 3.41.0 / Dart to 3.11.0

- Update flutter_version in .github/workflows/ to ^3.41.x (CI resolves latest patch)
- Update flutter_version in .github/workflows/ to 3.41.x (CI resolves latest patch)
- Update dart_sdk in .github/workflows/ to 3.11.0 (exact patch)
- Update environment sdk/flutter constraints in pubspec.yaml

No logic or code changes.
Expand Down
Loading