| name | issue-triage |
| description | Queries and triages open GitHub issues that need attention. Helps identify issues needing milestones, labels, or investigation. |
| metadata | [object Object] |
| compatibility | Requires GitHub CLI (gh) authenticated with access to dotnet/maui repository. |
Issue Triage Skill
This skill helps triage open GitHub issues in the dotnet/maui repository by:
- Initializing a session with current milestones and labels
- Loading a batch of issues into memory
- Presenting issues ONE AT A TIME for triage decisions
- Suggesting milestones based on issue characteristics
- Tracking progress through a triage session
When to Use
- "Find issues to triage"
- "Let's triage issues"
- "Grab me 10 issues to triage"
- "Triage Android issues"
Triage Workflow
Step 1: Initialize Session
Start by initializing a session to load current milestones and labels:
pwsh .github/skills/issue-triage/scripts/init-triage-session.ps1
Step 2: Load Issues Into Memory
Load a batch of issues (e.g., 20) but DO NOT display them all. Store them for one-at-a-time presentation:
pwsh .github/skills/issue-triage/scripts/query-issues.ps1 -Limit 100 -OutputFormat triage
Step 3: Present ONE Issue at a Time
IMPORTANT: 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
---
What would you like to do with this issue?
Step 4: Wait for User Decision
Wait for user to say:
- A milestone name (e.g., "Backlog", "current SR", "Servicing")
- "yes" to accept suggestion
- "skip" or "next" to move on without changes
- Specific instructions (e.g., "next SR and add regression label")
Step 5: Apply Changes and Move to Next
After applying changes, automatically present the NEXT issue.
Script Parameters
query-issues.ps1
| 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) |
Milestone Suggestion Logic
The script dynamically queries current milestones from dotnet/maui and suggests them based on issue characteristics:
| Condition | Suggested Milestone | Reason |
|---|---|---|
| Linked PR has milestone | PR's milestone | "PR already has milestone" |
Has i/regression label |
Current SR milestone (soonest due) | "Regression - current SR milestone" |
| Has open linked PR | Servicing milestone (or next SR) | "Has open PR" |
| Default | Backlog | "No PR, not a regression" |
Note: SR milestones are sorted by due date, so the soonest SR is suggested for regressions. Milestone names change monthly, so they are queried dynamically rather than hardcoded.
Applying Triage Decisions
# 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"
Common Milestone Types
| Milestone Type | Use When |
|---|---|
| Current SR (e.g., SR3) | Regressions, critical bugs with PRs ready |
| Next SR (e.g., SR4) | Important bugs, regressions being investigated |
| Servicing | General fixes with PRs, non-urgent improvements |
| Backlog | No PR, not a regression, nice-to-have fixes |
Note: Use init-triage-session.ps1 to see current milestone names.
Label Quick Reference
Regression Labels:
i/regression- Confirmed regressionregressed-in-10.0.0- Specific version
Priority Labels:
p/0- Criticalp/1- Highp/2- Mediump/3- Low
iOS 26 / macOS 26:
version/iOS-26- iOS 26 specific issue
Session Tracking (Optional)
# 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'