issue-triage
Queries and triages open GitHub issues that need attention. Helps identify issues needing milestones, labels, or investigation.
When & Why to Use This Skill
This Claude skill automates the GitHub issue triage process, enabling maintainers to efficiently manage large volumes of open issues. By integrating with the GitHub CLI, it provides an interactive workflow that presents issues individually, suggests appropriate milestones based on regression labels or linked PRs, and applies updates instantly. It is designed to reduce the cognitive load of repository maintenance and ensure critical bugs are prioritized for the correct release cycles.
Use Cases
- Case 1: Efficiently processing a high volume of unlabelled issues by reviewing them one-at-a-time with AI-assisted milestone suggestions.
- Case 2: Identifying and prioritizing regressions for immediate service releases (SR) by filtering issues with specific labels like 'i/regression'.
- Case 3: Synchronizing milestones between issues and their linked pull requests to ensure consistent project tracking.
- Case 4: Conducting platform-specific triage sessions (e.g., focusing only on Android or iOS issues) using advanced query parameters.
| name | issue-triage |
|---|---|
| description | Queries and triages open GitHub issues that need attention. Helps identify issues needing milestones, labels, or investigation. |
| author | dotnet-maui |
| version | "2.1" |
| 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'