flutter/check-downstream-consumers
> Validates an in-progress PR or feature branch of dart_skills_lint against known downstream ecosystem consumers. Use when assessing breaking changes across external repositories during PR evaluation, testing migrations against the changelog, or determining necessary backwards compatibility shims.
npx skills add https://github.com/flutter/agent-plugins --skill check-downstream-consumers
> [!IMPORTANT]
> No Downstream Commits Allowed
> This skill is focused entirely on evaluating breaking changes within dart_skills_lint during PR review and changelog validation. All modifications applied to downstream consumer repositories (such as temporarily editing pubspec.yaml ref: hashes or updating calling syntax to verify migrations) are strictly diagnostic and transient. You must never stage, commit, or push code inside external downstream repositories during this workflow.
dart_skills_lint)dart_skills_lint is clean (git status).dart test).1e1f280...).resources/known_consumers.md to review typical consumer repositories (flutter/flutter, flutter/devtools, dart-lang/site-www, etc.) and their specific consumption subdirectories.KIs), which frequently record configured system directory structures... or running localized, depth-limited searches like find .. -maxdepth 3 -name pubspec.yaml).find / -name ...). If a target repository cannot be found within adjacent workspace boundaries, immediately ask the user whether the repository is checked out locally and prompt for its path before evaluating.main or master). Do not run tests against dirty or out-of-date branches.For each downstream consumer under evaluation:
pubspec.yamldev/tools/pubspec.yaml or tool/pubspec.yaml).ref: field under the git configuration for dart_skills_lint to exact match the in-progress commit hash: dart_skills_lint:
git:
url: https://github.com/flutter/agent-plugins
path: tool/dart_skills_lint
ref: <LATEST_COMMIT_HASH>
flutter pub get; standard pure Dart repositories require dart pub get).test/validate_skills_test.dart or running flutter test / dart test).After verifying across each target consumer that legacy calls function properly without regressions in Step 2:
dart_skills_lint (for example, transitioning resolvedRules arguments to resolvedRuleConfigs).dart analyze --fatal-infos <modified_test_or_package_path>) within the consumer's package directory after completing the migration.import 'package:dart_skills_lint/dart_skills_lint.dart';).Undefined class or requiring internal implementation imports (import 'package:dart_skills_lint/src/...';) to compile indicates an explicit public export deficit inside lib/dart_skills_lint.dart.flutter test / dart test) to guarantee exact behavioral alignment before accepting the upstream change.Whenever tests fail or dependency resolution encounters API friction, you must evaluate the nature of the breakage and pause for a deliberate human-in-the-loop decision before taking action.
@Deprecated getters mapping new types back to legacy structures, constructor parameter forwarding, or fallback exports).dart_skills_lint/CHANGELOG.md.Present your diagnostic summary to the human and request a deliberate path forward. The choice between mitigating a break inside the linter versus making a breaking change in downstream libraries is strictly a human decision based on ecosystem trade-offs.
If the decision is to soften or eliminate the breaking change from dart_skills_lint:
dart_skills_lint code to introduce the backward-compatible shim (such as deprecated getters/constructors or compatibility exports).// TODO(...)) for future removal.dart format .), verify static analysis (dart analyze --fatal-infos), and confirm tests pass locally (dart test).pubspec.yaml, and run tests again until the consumer cleanly compiles and passes.If the human instructs you not to mitigate (or if mitigation is structurally impossible) and accepts the breaking change:
dart_skills_lint/CHANGELOG.md.CHANGELOG.md are incomplete, confusing, or insufficient to cleanly migrate the downstream code, treat this as an explicit evaluation failure. Immediately propose targeted additions and clarity improvements to dart_skills_lint/CHANGELOG.md.pub get) and test suites until the downstream package runs cleanly.*Constraint — Do Not Commit: Remember that any migration edits made across the downstream codebase exist purely to verify that dart_skills_lint/CHANGELOG.md instructions function cleanly in practice. Do not stage or commit these edits inside the consumer repository.*
After successfully evaluating and resolving one target repository:
git checkout -- . or git restore . across the modified paths) before proceeding to the next candidate, unless expressly instructed by the user to leave uncommitted changes on disk for local inspection.dart_skills_lint, and which proved out changelog migration workflows.resources/known_consumers.md or halt execution.Take flutter/check-downstream-consumers from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.