# 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 ':(glob)<pattern>' without a / prefix to see the list of matching files.

/engine/src/build/config/ios/** @vashworth
/packages/flutter_tools/templates/module/ios/ @vashworth
/packages/flutter_tools/templates/**/Podfile* @vashworth
/packages/flutter_tools/lib/src/ios/ @vashworth

# Internal dev infra that is closely tied to team-infra.
/bin/internal/** @jtmcdole
/dev/tools/test/** @jtmcdole

# The following files define an Application Binary Interface (ABI) that must maintain
# both forward and backward compatibility. Changes should be heavily
# scrutinized as mistakes are irreversible.
/engine/src/flutter/shell/platform/embedder/embedder.h @loic-sharma
/engine/src/flutter/shell/platform/embedder/tests/embedder_frozen.h @loic-sharma

# Android team - keep this synced with .github/labeler.yml's team-android section.
/docs/platform/android/** @flutter/android-reviewers
/engine/src/flutter/shell/platform/android/** @flutter/android-reviewers
/packages/flutter_tools/**/*android* @flutter/android-reviewers
/packages/flutter_tools/**/*gradle* @flutter/android-reviewers

# iOS team - keep this synced with .github/labeler.yml's team-ios section.
/engine/src/flutter/shell/platform/darwin/common/ @flutter/ios-reviewers
/engine/src/flutter/shell/platform/darwin/ios/framework/ @flutter/ios-reviewers
/dev/integration_tests/*ios*/**/* @flutter/ios-reviewers
/packages/flutter_tools/**/ios/* @flutter/ios-reviewers
/packages/flutter_tools/**/*ios* @flutter/ios-reviewers

# macOS team - keep this synced with .github/labeler.yml's team-macos section.
/engine/src/flutter/src/flutter/shell/platform/darwin/common/**/* @flutter/macos-reviewers
/engine/src/flutter/shell/platform/darwin/macos/**/* @flutter/macos-reviewers

# Shared with iOS and macOS teams - keep this synced with both .github/labeler.yml's team-ios and team-macos sections.
/dev/integration_tests/*macos*/**/* @flutter/ios-reviewers @flutter/macos-reviewers
/dev/integration_tests/*darwin*/**/* @flutter/ios-reviewers @flutter/macos-reviewers
/packages/flutter_tools/**/macos/* @flutter/ios-reviewers @flutter/macos-reviewers
/packages/flutter_tools/**/*macos* @flutter/ios-reviewers @flutter/macos-reviewers
/packages/flutter_tools/**/*xcode* @flutter/ios-reviewers @flutter/macos-reviewers
/packages/flutter_tools/**/*darwin* @flutter/ios-reviewers @flutter/macos-reviewers
/packages/flutter_tools/**/*swift* @flutter/ios-reviewers @flutter/macos-reviewers
/packages/flutter_tools/**/*pod* @flutter/ios-reviewers @flutter/macos-reviewers

# Linux team - keep this synced with .github/labeler.yml's team-linux section.
/engine/src/flutter/shell/platform/linux/**/* @flutter/linux-reviewers
/packages/flutter_tools/**/linux/* @flutter/linux-reviewers
/packages/flutter_tools/**/*linux* @flutter/linux-reviewers

# Windows team - keep this synced with .github/labeler.yml's team-windows section.
/engine/src/flutter/shell/platform/windows/**/* @flutter/windows-reviewers
/packages/flutter_tools/**/windows/* @flutter/windows-reviewers
/packages/flutter_tools/**/*windows* @flutter/windows-reviewers

# Skills owners
.agents/skills @reidbaker # Fallback owners
.agents/skills/find-release @reidbaker
.agents/skills/rebuilding-flutter-tool @vashworth
.agents/skills/upgrade-browser @mdebbar
