Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions .agents/skills/closing-obsolete-issues/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: closing-obsolete-issues
description: Find and close obsolete, stale, or not reproducible issues in the flutter/devtools repository.
---

# Closing Obsolete Issues

Use this skill to find old, outdated issues in the `flutter/devtools` repository that can be closed because they have been fixed, are stale, obsolete, or not reproducible.

## Instructions

1. **Identify Target Issues**:
- Use the GitHub CLI (`gh`) to search for the oldest open issues.
- Use any label that the user gives you, or none if the user does not specify any issue labels.
- Sort by creation date (`created-asc`) or last update (`updated-asc`) to find the most likely candidates for being outdated.
- Fetch at least 20-30 candidates.
- Example command (with label): `gh issue list --repo flutter/devtools --search "label:bug is:open sort:created-asc" --limit 30 | cat`
- Example command (without label): `gh issue list --repo flutter/devtools --search "is:open sort:created-asc" --limit 30 | cat`

2. **Investigate Status**:
- For each candidate, analyze its description and comments.
- **Pro Tip**: Use the bundled script `scripts/fetch_issue_details.sh <number>` to get a comprehensive view of the issue and its comments.
- Compare the issue's request or reported bug with the current state of the codebase.
- Refer to `references/rationale_templates.md` for a library of common reasons issues become outdated in DevTools.
- **Safety Rule**: Do not assume a bug is fixed or obsolete just because the screen has been updated or the file modified. Verify if the specific bug behavior is still possible. Valid bugs or feature requests should not be closed as stale just because they are old or have no activity. Inactivity alone does not invalidate a feature request or bug report.

3. **Draft and Review Closing Comments (CRITICAL MANDATE)**:
- For issues identified as candidates for closing, draft a detailed comment for each explaining *why* it can be closed.
- **Style Constraint**: DO NOT use em dashes (—) in the comments. Use hyphens (-) or colons (:) instead.
- **Template**: Consult `references/rationale_templates.md` for wording inspiration.
- Each comment MUST end with: "If there is more work to do here, please let us know by filing a new issue with up to date information. Thanks!"
- **User Approval Required**: You MUST present the identified issues (including URLs to the issues for easy navigation) and their drafted comments to the user and obtain explicit approval BEFORE running any command that closes an issue.

4. **Iterate on Skill Knowledge (Learning Loop)**:
- If you discover a new, distinct category of closing rationale that is not covered in `references/rationale_templates.md`, **update the reference file** to include it.

5. **Execute and Summarize**:
- Once approved, use `gh issue close` with the `-c` flag to post the comment and close the issue.
- Provide the user with a clean bulleted list of links to each closing comment.

## Tips

- Use available file and content search tools (such as `grep`, `ripgrep`, or environment-specific
search tools) to check the current codebase for references to the issue or relevant code.
- Look for related PRs that might have fixed the issue but didn't close it automatically.
Comment thread
kenzieschmoll marked this conversation as resolved.
- **Pro Tip**: Use the bundled script `scripts/search_prs.sh <query>` to search for PRs in the repository.
- For issues reporting specific versions, check the current DevTools version in `packages/devtools_app/pubspec.yaml`
to determine if the reported version is very old. If the reported version is 1 or more major versions behind or 12 or more
minor versions behind the current version, this issue is a good candidate for being obsolete.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Common Closing Rationales for DevTools

When investigating old issues in the Flutter DevTools repository, look for these common reasons they may be eligible for closing. Use these as templates for your closing comments.

## 1. Superseded by New DevTools Features
DevTools has evolved significantly. Many old requests for features are now solved by newer implementations or entire new screens.
- **Example**: Requests for specific memory allocation tracking features that are covered by the new Tracing or Diff panes.
- **Rationale**: Point to the new feature or screen that fulfills the need (e.g., "This is now supported in the Memory screen's Tracing pane.").

## 2. Observatory Deprecation
With the deprecation and removal of the Observatory UI in favor of DevTools, issues specifically requesting feature parity or fixing bugs in Observatory integration may be obsolete.
- **Rationale**: Note that Observatory is deprecated/removed and DevTools is the supported solution.

## 3. Tooling Daemon (DTD) and IDE Integration
Issues about IDE integration or multi-package support might be resolved by the introduction of the Dart Tooling Daemon (DTD).
- **Rationale**: Explain that DTD now handles this integration or that workspace support has improved.

## 4. UI Refactoring and Legacy Screens
Requests related to old UI patterns or legacy screens that have been completely rewritten or removed are obsolete.
- **Example**: The "Analysis" pane in the Memory screen no longer exists.
- **Rationale**: Note that the feature or screen has been refactored or removed.

## 5. Resolved by Flutter SDK Updates
Some issues are caused by or fixed by changes in the Flutter SDK rather than DevTools itself.
- **Rationale**: If a bug was fixed in a specific Flutter version, mention it.

## 6. Stale Feature Requests
Proposals or feature requests from several years ago with no recent activity or community interest may be closed if they no longer align with current priorities or have been superseded by general improvements.
- **Rationale**: Note that the issue is a stale feature request with no recent activity and that DevTools has evolved significantly since then.

## 7. Very Old DevTools Version
Issues reported on very old versions of DevTools (check current version in `packages/devtools_app/pubspec.yaml` for comparison) may be closed if they are likely fixed or no longer relevant.
- **Rationale**: "This issue looks like it occurred on an old version of DevTools. Are you still experiencing this issue with DevTools on the latest Flutter stable? If so, please reopen and we will take a look. Thanks."

## 8. Insufficient Information
Issues that lack clear descriptions, reproduction steps, or logs make it impossible to investigate.
- **Rationale**: "Without additional information, we cannot debug this issue. Please re-open if you can provide a description of your issue and repro steps. Thanks."

---
**Reminder**: Every closing comment MUST end with:
"If there is more work to do here, please let us know by filing a new issue with up to date information. Thanks!"
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash

# A script to fetch and format comprehensive issue details for investigation.
# Usage: ./fetch_issue_details.sh <issue_number>

ISSUE_NUMBER=$1

if [ -z "$ISSUE_NUMBER" ]; then
echo "Usage: $0 <issue_number>"
exit 1
fi

echo "--- INVESTIGATION FOR ISSUE #$ISSUE_NUMBER ---"
# Fetching all comments to ensure full context is captured.
gh issue view "$ISSUE_NUMBER" --repo flutter/devtools --json number,title,author,createdAt,labels,body,comments -t '
Title: {{.title}}
Author: {{if .author}}{{.author.login}}{{else}}ghost{{end}}
Created: {{.createdAt}}
Labels: {{range .labels}}{{.name}}, {{end}}

Description:
{{.body}}

--- ALL COMMENTS ---
{{range .comments}}
{{if .author}}{{.author.login}}{{else}}ghost{{end}} ({{.createdAt}}):
{{.body}}
------------------------------------------------------------
{{end}}
'
Comment thread
kenzieschmoll marked this conversation as resolved.
21 changes: 21 additions & 0 deletions .agents/skills/closing-obsolete-issues/scripts/search_prs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash

# A script to search for PRs in flutter/devtools.
# Usage: ./search_prs.sh <query>

QUERY=$1

if [ -z "$QUERY" ]; then
echo "Usage: $0 <query>"
exit 1
fi

echo "--- SEARCHING PRs FOR: $QUERY ---"
gh search prs "$QUERY" --repo flutter/devtools --limit 20 --json number,title,state,url,createdAt -t '
{{range .}}
#{{.number}} {{.title}} ({{.state}})
Url: {{.url}}
Created: {{.createdAt}}
------------------------------------------------------------
{{end}}
'
12 changes: 8 additions & 4 deletions TRIAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,14 @@ If the issue is actively being worked on or if it needs immediate / almost-immed
to a product area owner.

Here are some suggested owners by product area:
* **Flutter Inspector**: @elliette
* **Flutter Inspector**: @kenzieschmoll or @srawlins
* **Performance**: @kenzieschmoll
* **CPU Profiler**: @kenzieschmoll or @bkonyi
* **Memory**: @kenzieschmoll or @bkonyi
* **Network**: @elliette or @bkonyi
* **Logging**: @elliette or @bkonyi
* **Network**: @srawlins or @bkonyi
* **Logging**: @kenzieschmoll or @bkonyi
* **VM Tools**: @bkonyi
* **Debugger**: @elliette
* **Debugger**: @srawlins
* **DevTools extensions**: @kenzieschmoll
* **Tooling integrations with VS Code**: @DanTup
* **Tooling integrations with IntelliJ or Android Studio**: @helin24 or @jwren
Expand All @@ -73,6 +73,10 @@ about issues marked “severe: …” or “P0”.**
This step is to ensure the health of the [DevTools issue backlog](https://github.com/flutter/devtools/issues) over time.
There are a couple of things to do as part of the backlog clean up work:
- Close any obsolete issues. Recommendation: start with the oldest issues first since these are the most likely to be stale.
- **Tip**: You can use an AI assistant (agent) to help with this. Try a prompt like:
```
Identify and close obsolete issues in the backlog.
```
- Add good candidates for product excellence / quality work to the
[DevTools Product Excellence project](https://github.com/orgs/flutter/projects/157). This project feeds monthly milestone
planning for ongoing P.E. work.
20 changes: 10 additions & 10 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ packages:
dependency: transitive
description:
name: build
sha256: aadd943f4f8cc946882c954c187e6115a84c98c81ad1d9c6cbf0895a8c85da9c
sha256: a156715e7cd728130c592f30552575908aae5b100005fbc1f0fb16b3c03a3d10
url: "https://pub.dev"
source: hosted
version: "4.0.5"
version: "4.0.6"
Comment thread
kenzieschmoll marked this conversation as resolved.
build_config:
dependency: transitive
description:
Expand All @@ -85,10 +85,10 @@ packages:
dependency: "direct dev"
description:
name: build_runner
sha256: "521daf8d189deb79ba474e43a696b41c49fb3987818dbacf3308f1e03673a75e"
sha256: "22fdcc3cfeb9d974d7408718c4be15ec5e9b1b350088f3a6c88f154e74dd700d"
url: "https://pub.dev"
source: hosted
version: "2.13.1"
version: "2.14.1"
built_collection:
dependency: transitive
description:
Expand Down Expand Up @@ -286,10 +286,10 @@ packages:
dependency: transitive
description:
name: file_selector_android
sha256: bf7ab65776d7e176280c853679e7742668586ba1663f7f1561e897fadad6c3ba
sha256: "89243030ea4b3463fb402b44d5eeacc4ccb1c46a88870cb2a5080d693200c1ed"
url: "https://pub.dev"
source: hosted
version: "0.5.2+5"
version: "0.5.2+6"
file_selector_ios:
dependency: transitive
description:
Expand Down Expand Up @@ -767,10 +767,10 @@ packages:
dependency: transitive
description:
name: source_gen
sha256: "732792cfd197d2161a65bb029606a46e0a18ff30ef9e141a7a82172b05ea8ecd"
sha256: ec37cc0e6694374cbef59ed79685572c870a54ede6fa30a3e420feb3adffea02
url: "https://pub.dev"
source: hosted
version: "4.2.2"
version: "4.2.3"
source_map_stack_trace:
dependency: transitive
description:
Expand Down Expand Up @@ -975,10 +975,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "046d3928e16fa4dc46e8350415661755ab759d9fc97fc21b5ab295f71e4f0499"
sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360"
url: "https://pub.dev"
source: hosted
version: "15.1.0"
version: "15.2.0"
vm_service_protos:
dependency: transitive
description:
Expand Down
Loading