issue-triage
dotnet
Queries and triages open GitHub issues that need attention. Helps identify issues needing milestones, labels, or investigation.
bunx add-skill dotnet/maui -s issue-triageLoadingβ¦
dotnet
Queries and triages open GitHub issues that need attention. Helps identify issues needing milestones, labels, or investigation.
bunx add-skill dotnet/maui -s issue-triageLoadingβ¦
This skill helps triage open GitHub issues in the dotnet/maui repository by:
GitHub CLI (gh) must be installed and authenticated:
# Install
# Windows:
winget install --id GitHub.cli
# macOS:
brew install gh
# Linux:
# See https://cli.github.com/manual/installation
# Authenticate (required before first use)
gh auth login
The scripts will check for gh and exit with installation instructions if not found.
π¨ CRITICAL: ALWAYS use the skill scripts. NEVER use ad-hoc GitHub API queries.
The scripts have proper filters, exclusions, and milestone logic built-in. Don't bypass them.
Start by initializing a session to load current milestones and labels:
pwsh .github/skills/issue-triage/scripts/init-triage-session.ps1
What this does:
MANDATORY: Use query-issues.ps1 - it has the right filters!
pwsh .github/skills/issue-triage/scripts/query-issues.ps1 -Limit 50 -OutputFormat triage
What this does:
-label:s/needs-info -label:s/needs-repro -label:area-blazor -label:s/try-latest-version -label:s/move-to-vs-feedbackDON'T:
github-mcp-server-list_issues directlygithub-mcp-server-search_issues without the same filtersIMPORTANT: When user asks to triage, present only ONE issue at a time in this format:
## Issue #XXXXX
**[Title]**
π [URL]
| Field | Value |
|-------|-------|
| **Author** | username (Syncfusion if applicable) |
| **Platform** | platform |
| **Area** | area |
| **Labels** | labels |
| **Linked PR** | PR info with milestone if available |
| **Regression** | Yes/No |
| **Comments** | count |
**Comment Summary** (if any):
- [Author] Comment preview...
**My Suggestion**: `Milestone` - Reason (based on init session output)
---
What would you like to do with this issue?
Wait for user to say:
After user decision, automatically present the NEXT issue.
π¨ CRITICAL: When you run out of issues, AUTOMATICALLY reload more issues.
# Run query again to load next batch
pwsh .github/skills/issue-triage/scripts/query-issues.ps1 -Limit 50 -Skip <current_count> -OutputFormat triage
DO NOT:
DO:
query-issues.ps1 again with -Skip parameter| Parameter | Values | Default | Description |
|---|---|---|---|
-Platform | android, ios, windows, maccatalyst, all | all | Filter by platform |
-Area | Any area label (e.g., collectionview, shell) | "" | Filter by area |
-Limit | 1-1000 | 50 | Maximum issues to fetch |
-Skip | 0+ | 0 | Skip first N issues (for pagination) |
-OutputFormat | table, json, markdown, triage | table | Output format |
-RequireAreaLabel | switch | false | Only return issues with area-* labels |
-SkipDetails | switch | false | Skip fetching PRs/comments (faster) |
π¨ CRITICAL: ALWAYS use actual milestone names from init-triage-session.ps1 output. NEVER guess or assume milestone names.
The skill dynamically queries current milestones from dotnet/maui at session initialization. Milestone names change frequently (e.g., SR4, SR5, SR6), so always reference the session output when suggesting milestones.
| Condition | Suggested Milestone | Reason |
|---|---|---|
| Linked PR has milestone | PR's milestone | "PR already has milestone" |
Has i/regression label | Highest numbered SR milestone | "Regression - needs servicing" |
| Has open linked PR | Current servicing milestone | "Has open PR" |
| Default | Backlog | "No PR, not a regression" |
Example Session Output:
Servicing Releases:
- .NET 9 Servicing [246 open]
- .NET 10 Servicing [213 open]
- .NET 10 SR5 [55 open] β Use this for .NET 10 regressions
- .NET 10.0 SR4 [103 open]
Other:
- .NET 11 Planning [167 open]
- .NET 11.0-preview1 [8 open]
Backlog:
- Backlog [3037 open]
How to suggest milestones:
.NET 10 SR5" (from session output).NET 10 SR2" (guessing, might not exist)# Set milestone only
gh issue edit ISSUE_NUMBER --repo dotnet/maui --milestone "Backlog"
# Set milestone and add labels
gh issue edit ISSUE_NUMBER --repo dotnet/maui --milestone "MILESTONE_NAME" --add-label "i/regression"
# Set milestone on both issue AND linked PR
gh issue edit ISSUE_NUMBER --repo dotnet/maui --milestone "MILESTONE_NAME"
gh pr edit PR_NUMBER --repo dotnet/maui --milestone "MILESTONE_NAME"
Regression Labels:
i/regression - Confirmed regressionregressed-in-10.0.0 - Specific versionPriority Labels:
p/0 - Criticalp/1 - Highp/2 - Mediump/3 - LowiOS 26 / macOS 26:
version/iOS-26 - iOS 26 specific issue| Mistake | Why It's Wrong | Correct Approach |
|---|---|---|
β Using github-mcp-server-list_issues directly | Missing exclusion filters (needs-info, needs-repro, etc.) | β
Use query-issues.ps1 script |
| β Stopping when batch is empty | There are likely more issues available | β
Automatically run query-issues.ps1 -Skip N |
| β Suggesting milestone names like "SR2" | Milestone doesn't exist, based on assumptions | β
Use actual milestone names from init-triage-session.ps1 output |
| β Asking "Load more?" when out of issues | Creates unnecessary interruption | β Just load more automatically |
| β Using ad-hoc API queries with custom filters | Likely to miss or include wrong issues | β Trust the skill's scripts - they have the right logic |
# Record triaged issue
pwsh .github/skills/issue-triage/scripts/record-triage.ps1 -IssueNumber 33272 -Milestone "Backlog"
# View session stats
cat CustomAgentLogsTmp/Triage/triage-*.json | jq '.Stats'
Use when you need to run Flow type checking, or when seeing Flow type errors in React code.
Use when you want to validate changes before committing, or when you need to check all React contribution requirements.
Use when feature flag tests fail, flags need updating, understanding @gate pragmas, debugging channel-specific test failures, or adding new flags to React.
Use when you need to check feature flag states, compare channels, or debug why a feature behaves differently across release channels.