From 0bcf8edde7ffef08b0aefd9bc79952f301259c34 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson Date: Fri, 17 Apr 2026 12:54:51 -0700 Subject: [PATCH 1/7] Add a skill for adding changelog entries to DevTools packages --- .../skills/adding-changelog-entries/SKILL.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .agents/skills/adding-changelog-entries/SKILL.md diff --git a/.agents/skills/adding-changelog-entries/SKILL.md b/.agents/skills/adding-changelog-entries/SKILL.md new file mode 100644 index 00000000000..7adee5a832b --- /dev/null +++ b/.agents/skills/adding-changelog-entries/SKILL.md @@ -0,0 +1,18 @@ +--- +name: adding-changelog-entries +description: Guides the creation of changelog entries for published packages in the DevTools repository. Use when documenting changes in CHANGELOG.md files for devtools_shared, devtools_app_shared, or devtools_extensions. +--- + +# Adding Changelog Entries + +When adding changelog entries to published packages (`devtools_shared`, `devtools_app_shared`, and `devtools_extensions`), follow these rules: + +- **Check Publication State**: Never add an entry to an already published version (e.g. `# 12.1.0`). You MUST check which versions are published on pub.dev (e.g., at `https://pub.dev/packages//versions`) before determining section headers! If a version is not yet published, it should be suffixed with the next numeric `-wip` tag (e.g., `## 0.5.1-wip`) rather than generic placeholder headers like `# WIP`! +- **Lock-step Mono-repo Updates**: Between the published packages (`devtools_shared`, `devtools_app_shared`, and `devtools_extensions`), version bumps and dependency constraints modifications targeting each other MUST happen in lock-step to avoid graph resolution failures! Always update them together! +- **Match Pubspec Versions Exactly**: When updating dependency versions in published package `pubspec.yaml` files, ALWAYS use the *actual* version specified in the target package's `pubspec.yaml`. If a package version contains a suffix like `-wip` (e.g., `13.0.0-wip`), that full string MUST be used in dependency declarations (e.g., `devtools_shared: ^13.0.0-wip`). Leaving off the suffix will cause version solving failures. +- **Version Decisions**: Decide if it should be a major, minor, or patch version based on your edits: + - **Breaking changes**: Major bump (+1 to first component, others reset to 0). E.g., removals of public constants, properties, getters/setters, or APIs. + - **New features or deprecation start**: Minor bump (+1 to second component, patch resets to 0). + - **Bug fixes and non-breaking changes**: Patch bump (+1 to third component). +- **Accurately Distinguish Packages**: Ensure that the cleanups or edits applied to a specific package's changelog entries belong strictly to that package path (e.g., changes in `devtools_app` do not warrant entries in `devtools_shared`). +- **Conciseness and Accuracy**: Describe clearly what was changed and why. Avoid generic descriptions without context, such as "Fixes missing deprecation message". Indicate specifically what was added or removed. From ec23d174a8cae4a60edaca067370f25e90d28f41 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson Date: Fri, 17 Apr 2026 13:41:13 -0700 Subject: [PATCH 2/7] Add skill for updating package versions that is used from the changelog skill --- .../skills/adding-changelog-entries/SKILL.md | 7 +------ .../skills/updating-package-versions/SKILL.md | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 .agents/skills/updating-package-versions/SKILL.md diff --git a/.agents/skills/adding-changelog-entries/SKILL.md b/.agents/skills/adding-changelog-entries/SKILL.md index 7adee5a832b..32873eb92f9 100644 --- a/.agents/skills/adding-changelog-entries/SKILL.md +++ b/.agents/skills/adding-changelog-entries/SKILL.md @@ -8,11 +8,6 @@ description: Guides the creation of changelog entries for published packages in When adding changelog entries to published packages (`devtools_shared`, `devtools_app_shared`, and `devtools_extensions`), follow these rules: - **Check Publication State**: Never add an entry to an already published version (e.g. `# 12.1.0`). You MUST check which versions are published on pub.dev (e.g., at `https://pub.dev/packages//versions`) before determining section headers! If a version is not yet published, it should be suffixed with the next numeric `-wip` tag (e.g., `## 0.5.1-wip`) rather than generic placeholder headers like `# WIP`! -- **Lock-step Mono-repo Updates**: Between the published packages (`devtools_shared`, `devtools_app_shared`, and `devtools_extensions`), version bumps and dependency constraints modifications targeting each other MUST happen in lock-step to avoid graph resolution failures! Always update them together! -- **Match Pubspec Versions Exactly**: When updating dependency versions in published package `pubspec.yaml` files, ALWAYS use the *actual* version specified in the target package's `pubspec.yaml`. If a package version contains a suffix like `-wip` (e.g., `13.0.0-wip`), that full string MUST be used in dependency declarations (e.g., `devtools_shared: ^13.0.0-wip`). Leaving off the suffix will cause version solving failures. -- **Version Decisions**: Decide if it should be a major, minor, or patch version based on your edits: - - **Breaking changes**: Major bump (+1 to first component, others reset to 0). E.g., removals of public constants, properties, getters/setters, or APIs. - - **New features or deprecation start**: Minor bump (+1 to second component, patch resets to 0). - - **Bug fixes and non-breaking changes**: Patch bump (+1 to third component). +- **New Version Headers**: If a version bump is required, you MUST first use the instructions in [updating-package-versions](../updating-package-versions/SKILL.md) to update the package version in `pubspec.yaml`, and then add a new header to the changelog file with the new version (e.g., `## 0.5.1-wip`) before adding your entries. - **Accurately Distinguish Packages**: Ensure that the cleanups or edits applied to a specific package's changelog entries belong strictly to that package path (e.g., changes in `devtools_app` do not warrant entries in `devtools_shared`). - **Conciseness and Accuracy**: Describe clearly what was changed and why. Avoid generic descriptions without context, such as "Fixes missing deprecation message". Indicate specifically what was added or removed. diff --git a/.agents/skills/updating-package-versions/SKILL.md b/.agents/skills/updating-package-versions/SKILL.md new file mode 100644 index 00000000000..4d279b4f189 --- /dev/null +++ b/.agents/skills/updating-package-versions/SKILL.md @@ -0,0 +1,21 @@ +--- +name: updating-package-versions +description: Guides updating dependency versions in published packages to avoid mono-repo resolution failures. +--- + +# Updating Package Versions + +When updating dependency versions in published package `pubspec.yaml` files (`devtools_shared`, `devtools_app_shared`, and `devtools_extensions`), follow these rules to protect the local mono-repo workspace graph: + +- **Version Decisions**: Decide if it should be a major, minor, or patch version based on your edits: + - **Breaking changes**: Major bump (+1 to first component, others reset to 0). E.g., removals of public constants, properties, getters/setters, or APIs. + - **New features or deprecation start**: Minor bump (+1 to second component, patch resets to 0). + - **Bug fixes and non-breaking changes**: Patch bump (+1 to third component). +- **Match Exact Versions**: Always use the **actual** version specified in the target package's `pubspec.yaml` file. +- **Suffix Preservation**: If a requested version contains a suffix like `-wip` (e.g., `13.0.0-wip`), the full string MUST be used in dependency constraints (e.g., `devtools_shared: ^13.0.0-wip`). +- **Prevent Graph Failures**: Do not drop the suffix or estimate the base version tags. Version solver operations will fail in the local workspace if dependencies point to published strings that can't be resolved in non-published repositories. +- **Resolution Testing**: After updating versions, run `flutter pub get` in the repository to ensure version solving is satisfied. If this returns errors, you should fix the errors and try again. +- **Updating devtools_app**: In `packages/devtools_app/pubspec.yaml`: + - Dependencies on published packages do not have version constraints. This is intentional; do not change this when updating versions. + - Always use the `dt update-version` tool to update the `devtools_app` version. + - This should only be updated for monthly releases and cherry pick releases, so perform this update only when explicitly asked to. From 1bc5f263ac8553222b07248d14375eeb5179cc5d Mon Sep 17 00:00:00 2001 From: Kenzie Davisson Date: Fri, 17 Apr 2026 13:51:44 -0700 Subject: [PATCH 3/7] add exception for copyright requirement --- .gemini/styleguide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gemini/styleguide.md b/.gemini/styleguide.md index 83f7bbb94c7..42347992213 100644 --- a/.gemini/styleguide.md +++ b/.gemini/styleguide.md @@ -14,7 +14,7 @@ and the CI testing ensures that the code is formatted correctly. - `[NIT]`: Idiomatic improvements or minor naming suggestions. - **Focus:** Prioritize logic, performance on the UI thread, and architectural consistency. - **No Empty Praise:** Do not leave "Looks good" or "Nice change" comments. If there are no issues, leave no comments. -- **Copyright Headers:** Ensure all new files have a proper copyright header with the current year. For example: +- **Copyright Headers:** Ensure all new files (except for agent skills and generated files) have a proper copyright header with the current year. For example: ``` // Copyright 2026 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be From 018f74c0dd29454b39f7a5bbd511055d0019a452 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson Date: Fri, 17 Apr 2026 13:54:47 -0700 Subject: [PATCH 4/7] address comments --- .agents/skills/adding-changelog-entries/SKILL.md | 2 +- .agents/skills/updating-package-versions/SKILL.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.agents/skills/adding-changelog-entries/SKILL.md b/.agents/skills/adding-changelog-entries/SKILL.md index 32873eb92f9..f15d66a4e21 100644 --- a/.agents/skills/adding-changelog-entries/SKILL.md +++ b/.agents/skills/adding-changelog-entries/SKILL.md @@ -7,7 +7,7 @@ description: Guides the creation of changelog entries for published packages in When adding changelog entries to published packages (`devtools_shared`, `devtools_app_shared`, and `devtools_extensions`), follow these rules: -- **Check Publication State**: Never add an entry to an already published version (e.g. `# 12.1.0`). You MUST check which versions are published on pub.dev (e.g., at `https://pub.dev/packages//versions`) before determining section headers! If a version is not yet published, it should be suffixed with the next numeric `-wip` tag (e.g., `## 0.5.1-wip`) rather than generic placeholder headers like `# WIP`! +- **Check Publication State**: Never add an entry to an already published version (e.g. `# 12.1.0`). You MUST check which versions are published on pub.dev (e.g., at `https://pub.dev/packages//versions`) before determining section headers! If a version is not yet published, it should be suffixed with the next numeric `-wip` tag (e.g., `## 0.5.1-wip`) or follow the existing convention in the file, such as `(not released)`. You should also match the existing header level (H1 or H2) used for versions in that file. Avoid generic placeholder headers like `# WIP`! - **New Version Headers**: If a version bump is required, you MUST first use the instructions in [updating-package-versions](../updating-package-versions/SKILL.md) to update the package version in `pubspec.yaml`, and then add a new header to the changelog file with the new version (e.g., `## 0.5.1-wip`) before adding your entries. - **Accurately Distinguish Packages**: Ensure that the cleanups or edits applied to a specific package's changelog entries belong strictly to that package path (e.g., changes in `devtools_app` do not warrant entries in `devtools_shared`). - **Conciseness and Accuracy**: Describe clearly what was changed and why. Avoid generic descriptions without context, such as "Fixes missing deprecation message". Indicate specifically what was added or removed. diff --git a/.agents/skills/updating-package-versions/SKILL.md b/.agents/skills/updating-package-versions/SKILL.md index 4d279b4f189..7ef4ef1e9d4 100644 --- a/.agents/skills/updating-package-versions/SKILL.md +++ b/.agents/skills/updating-package-versions/SKILL.md @@ -14,6 +14,7 @@ When updating dependency versions in published package `pubspec.yaml` files (`de - **Match Exact Versions**: Always use the **actual** version specified in the target package's `pubspec.yaml` file. - **Suffix Preservation**: If a requested version contains a suffix like `-wip` (e.g., `13.0.0-wip`), the full string MUST be used in dependency constraints (e.g., `devtools_shared: ^13.0.0-wip`). - **Prevent Graph Failures**: Do not drop the suffix or estimate the base version tags. Version solver operations will fail in the local workspace if dependencies point to published strings that can't be resolved in non-published repositories. +- **No Dependencies on Unpublished Packages**: Published packages (`devtools_shared`, `devtools_app_shared`, and `devtools_extensions`) MUST NOT depend on unpublished packages like `devtools_app` or `devtools_test`. - **Resolution Testing**: After updating versions, run `flutter pub get` in the repository to ensure version solving is satisfied. If this returns errors, you should fix the errors and try again. - **Updating devtools_app**: In `packages/devtools_app/pubspec.yaml`: - Dependencies on published packages do not have version constraints. This is intentional; do not change this when updating versions. From cc130996845390201d9bdd4d0ff73b371857bc50 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com> Date: Fri, 17 Apr 2026 15:07:32 -0700 Subject: [PATCH 5/7] Update .agents/skills/adding-changelog-entries/SKILL.md Co-authored-by: Jacob MacDonald --- .agents/skills/adding-changelog-entries/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.agents/skills/adding-changelog-entries/SKILL.md b/.agents/skills/adding-changelog-entries/SKILL.md index f15d66a4e21..9a098de3d3c 100644 --- a/.agents/skills/adding-changelog-entries/SKILL.md +++ b/.agents/skills/adding-changelog-entries/SKILL.md @@ -1,6 +1,6 @@ --- name: adding-changelog-entries -description: Guides the creation of changelog entries for published packages in the DevTools repository. Use when documenting changes in CHANGELOG.md files for devtools_shared, devtools_app_shared, or devtools_extensions. +description: Use when documenting changes in CHANGELOG.md files for devtools_shared, devtools_app_shared, or devtools_extensions. --- # Adding Changelog Entries From 3ed48150a993f161f4b54594431f13c1918ca2b7 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com> Date: Fri, 17 Apr 2026 15:08:11 -0700 Subject: [PATCH 6/7] Update .agents/skills/adding-changelog-entries/SKILL.md Co-authored-by: Jacob MacDonald --- .agents/skills/adding-changelog-entries/SKILL.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.agents/skills/adding-changelog-entries/SKILL.md b/.agents/skills/adding-changelog-entries/SKILL.md index 9a098de3d3c..b4f209f8ee4 100644 --- a/.agents/skills/adding-changelog-entries/SKILL.md +++ b/.agents/skills/adding-changelog-entries/SKILL.md @@ -11,3 +11,4 @@ When adding changelog entries to published packages (`devtools_shared`, `devtool - **New Version Headers**: If a version bump is required, you MUST first use the instructions in [updating-package-versions](../updating-package-versions/SKILL.md) to update the package version in `pubspec.yaml`, and then add a new header to the changelog file with the new version (e.g., `## 0.5.1-wip`) before adding your entries. - **Accurately Distinguish Packages**: Ensure that the cleanups or edits applied to a specific package's changelog entries belong strictly to that package path (e.g., changes in `devtools_app` do not warrant entries in `devtools_shared`). - **Conciseness and Accuracy**: Describe clearly what was changed and why. Avoid generic descriptions without context, such as "Fixes missing deprecation message". Indicate specifically what was added or removed. +- **User visible changes ONLY**: Only add entries in the changelog if the change is meaningful to consumers of the package. Do not include internal refactoring notes or other trivial changes that users do not care about. From d4905324bb3c2f29b1a4a100bb56d2c28b464793 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson Date: Fri, 17 Apr 2026 15:19:56 -0700 Subject: [PATCH 7/7] whitespace --- .agents/skills/adding-changelog-entries/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.agents/skills/adding-changelog-entries/SKILL.md b/.agents/skills/adding-changelog-entries/SKILL.md index b4f209f8ee4..2b4dc848530 100644 --- a/.agents/skills/adding-changelog-entries/SKILL.md +++ b/.agents/skills/adding-changelog-entries/SKILL.md @@ -11,4 +11,4 @@ When adding changelog entries to published packages (`devtools_shared`, `devtool - **New Version Headers**: If a version bump is required, you MUST first use the instructions in [updating-package-versions](../updating-package-versions/SKILL.md) to update the package version in `pubspec.yaml`, and then add a new header to the changelog file with the new version (e.g., `## 0.5.1-wip`) before adding your entries. - **Accurately Distinguish Packages**: Ensure that the cleanups or edits applied to a specific package's changelog entries belong strictly to that package path (e.g., changes in `devtools_app` do not warrant entries in `devtools_shared`). - **Conciseness and Accuracy**: Describe clearly what was changed and why. Avoid generic descriptions without context, such as "Fixes missing deprecation message". Indicate specifically what was added or removed. -- **User visible changes ONLY**: Only add entries in the changelog if the change is meaningful to consumers of the package. Do not include internal refactoring notes or other trivial changes that users do not care about. +- **User visible changes ONLY**: Only add entries in the changelog if the change is meaningful to consumers of the package. Do not include internal refactoring notes or other trivial changes that users do not care about.