# Below is a list of Flutter team members' GitHub handles who are
# suggested reviewers for contributions to this repository.
#
# These names are just suggestions. It is fine to have your changes
# reviewed by someone else.
#
# Use git ls-files '<pattern>' without a / prefix to see the list of matching files.

/.ci.yaml @caseyhillers @christopherfujino
/CODEOWNERS @jmagman
/dev/ci/ @christopherfujino
/dev/prod_builders.json @caseyhillers @christopherfujino
/dev/try_builders.json @caseyhillers @christopherfujino
/packages/flutter_goldens @Piinks
/packages/flutter_goldens_client @Piinks
/packages/flutter_test/lib/src/_goldens_io.dart @Piinks
/packages/flutter_test/lib/src/_goldens_web.dart @Piinks
/packages/flutter_test/lib/src/goldens.dart @Piinks
/packages/flutter_tools/templates/module/ios/ @jmagman
/packages/flutter_tools/templates/**/Podfile* @jmagman
