accessibility
Audits or remediates Flutter widgets against WCAG 2.2 conformance levels A, AA, or AAA across iOS, Android, Web, macOS, Windows,…
VGV-specific reference for bumping Dart and Flutter SDK constraints across packages, covering pubspec.yaml environment constraints, CI workflow Flutter versions, and SDK upgrade PR preparation. Use it when upgrading the Flutter or Dart SDK version in any VGV repository, on
$ npx -y skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill dart-flutter-sdk-upgrade --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/dart-flutter-sdk-upgradeContext preview
The summary Claude sees to decide when to auto-load this skill.
VGV-specific reference for bumping Dart and Flutter SDK constraints across packages, covering pubspec.yaml environment constraints, CI workflow Flutter versions, and SDK upgrade PR preparation. Use it when upgrading the Flutter or Dart SDK version in any VGV repository, on
name: dart-flutter-sdk-upgrade description: > VGV-specific reference for bumping Dart and Flutter SDK constraints across packages, covering pubspec.yaml environment constraints, CI workflow Flutter versions, and SDK upgrade PR preparation. Use it when upgrading the Flutter or Dart SDK version in any VGV repository, on phrases like "bump Flutter to 3.x", "update SDK constraints", "upgrade Dart SDK", "update CI Flutter version", "bump SDK version", or "prep the SDK upgrade PR", and also when a bump is already underway and something breaks: "pub get fails after I changed the environment block", "version solving failed after bumping the SDK", "a dependency requires an older SDK", "get me unblocked on the Flutter upgrade", or "which Dart version ships with Flutter 3.x". It owns the whole bump, including the conflicts it surfaces, even when the blocking package has a skill of its own. argument-hint: "[flutter-version]" allowed-tools: Read Glob Grep Edit Write Bash effort: medium
One PR per project. Only CI workflow and `pubspec.yaml` changes — no logic, no dependency version bumps, no test changes.
---
Apply these standards to all SDK upgrade work:
dependency, fix a lint, or change code, do not produce that edit at all. Deliver the SDK constraint and CI changes, report the rest as separate follow-up work
---
Flutter bundles a specific Dart release, and the two version numbers are unrelated. A bump to Flutter 3.35.5 does not make the Dart constraint `^3.35.5`, and the Dart number cannot be derived from the Flutter number by any rule. Every SDK upgrade therefore starts with two versions, not one: the Flutter release being targeted, and the Dart release it ships.
**How to find the Dart version:**
1. Open <https://docs.flutter.dev/install/archive> 2. Find the target Flutter stable release 3. Note the Dart version listed alongside it
The Flutter target comes from `$ARGUMENTS` when the user supplied one. If `$ARGUMENTS` is empty or still shows the literal text `$ARGUMENTS` (the host did not substitute it), take the latest Flutter stable from that same page. For pure Dart packages, no mapping is involved: the Dart version is whatever `$ARGUMENTS` specifies or the latest Dart stable.
**When the archive is out of reach**, which is the common case in a session with no network access, do not fill the gap from memory. A recalled pairing is wrong often enough to break `pub get`, and it is wrong silently — the constraint looks plausible in the diff. Say the Dart version has to come off the archive, name the page as the source, and ask the user to confirm it. If the user already supplied both numbers, use them as given and say which is which.
State both resolved versions and get confirmation before editing any file.
---
VGV packages use `VeryGoodOpenSource/very_good_workflows` reusable workflows. Leave the `@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:**
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1 with: 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 version, not the Flutter version:
uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1 with: dart_sdk: "3.11.0" # ← exact Dart version (not Flutter version)
If a file uses `flutter_channel: stable` instead of a pinned version, pin the version — VGV always pins Flutter versions in CI workflows.
A VGV package's CI is one job calling one of the two reusable workflows above, so the block that needs changing is fully determined by the package type. When the workflow lives in another checkout, or the user described it instead of pasting it, write the `with:` block from the shapes above rather than stalling on the file. Say which workflow and which key you are targeting — `dart_package.yml` with `dart_sdk` for a pure Dart package, `flutter_package.yml` with `flut
A Claude Code plugin that accelerates Flutter & Dart development with best-practices skills from Very Good Ventures. Developed with 💙 by Very Good Ventures 🦄
Audits or remediates Flutter widgets against WCAG 2.2 conformance levels A, AA, or AAA across iOS, Android, Web, macOS, Windows,…
Best practices for Flutter animations using the built-in animation framework, covering implicit animations, explicit…
Best practices for Bloc state management in Flutter/Dart, covering Cubit versus Bloc, event and state naming, sealed classes with…
Scaffold a new Dart or Flutter project from a Very Good CLI template, covering the flutter_app, dart_package, flutter_package,…
Drives a Dart or Flutter package fully green through a verify-fix-rerun loop across four gates: analyze, format, test, coverage.…
Best practices for internationalization (i18n) and localization (l10n) in Flutter, using the built-in `flutter_localizations` and…