---
name: find-release
description: A skill to find the lowest Dart and Flutter release containing a given commit. Use this skill whenever users ask about when a commit landed in Flutter or Dart releases, inquire about release versions for specific SHAs, or want to know if a commit is included in stable, beta, or dev channels for Flutter/Dart projects.
---

## Instructions

1.  **Extract Information:**
    - Identify the commit SHA from the user's request (e.g., `02abc57`).
    - Identify the target channel (one of: `stable`, `beta`, `dev`). If not specified, try each.

2.  **Execute Search:**
    - Ensure the `find_release.dart` tool is available. The tool is typically located at [find_release.dart](../../../engine/src/flutter/third_party/dart/tools/find_release.dart) relative to the Flutter workspace root. If the workspace root is not the default, set the environment variable `FIND_RELEASE_TOOL_PATH` to the absolute path of the tool.
    - Run the tool using the path to ensure it works from any directory within the workspace.
    - Command: `dart run ${FIND_RELEASE_TOOL_PATH:-engine/src/flutter/third_party/dart/tools/find_release.dart} --commit=<SHA> --channel=<CHANNEL>`

3.  **Interpret and Report Results:**
    - The tool will report which repository (`dart-lang/sdk` or `flutter/flutter`) the commit was found in.
    - It will provide the "Lowest release tag" (the git tag containing the commit).
    - It will provide the "Lowest Flutter release" and/or "Lowest Dart release" version for the specified channel.
    - Present these findings clearly to the user. If the commit is not found or not yet in a release for that channel, inform the user accordingly.
    - Handle edge cases: If the SHA is invalid or not found, suggest checking the SHA. If the channel is invalid, default to stable and notify the user.

## Examples

- **User:** "When did commit 02abc57 land in stable?"
- **Agent:** Runs `dart run ${FIND_RELEASE_TOOL_PATH:-engine/src/flutter/third_party/dart/tools/find_release.dart} --commit=02abc57 --channel=stable` and reports the release version.

- **User:** "Is 02abc57 in beta?"
- **Agent:** Runs the command with `--channel=beta`.
