con un clic
issue-triage
Queries and triages open GitHub issues that need attention. Helps identify issues needing milestones, labels, or investigation.
Menú
Queries and triages open GitHub issues that need attention. Helps identify issues needing milestones, labels, or investigation.
Basado en la clasificación ocupacional SOC
Assesses ship-readiness for .NET MAUI release branches — Servicing Releases (SR) and Previews. Surveys CI pipelines, computes what's actually NEW in the branch (commits + source PRs with revert detection), and cross-references open `regressed-in-*` issues against branch contents to identify port candidates, rejected backports, and unresolved regressions. Supports both in-flight and pre-cut (candidate) modes for SR and Preview branches.
Labels issues and pull requests in the dotnet/maui repository with `area-*` and `platform/*` labels ONLY, based on technical content and platform-file conventions. Used by the gh-aw agentic-labeler workflow and available for batch evaluation and interactive Copilot CLI usage.
Deep code review of PR changes for correctness, safety, and MAUI conventions. Uses independence-first assessment (code before narrative) and delegates to the maui-expert-reviewer agent for per-dimension sub-agent evaluation. Triggers on: "review code for PR", "code review PR", "analyze code changes", "check PR code quality". Do NOT use for: summarizing PRs, describing what changed, general PR questions, running tests, or fixing code.
Evaluates tests added in a PR for coverage, quality, edge cases, and test type appropriateness. Checks if tests cover the fix, finds gaps, and recommends lighter test types when possible. Prefer unit tests over device tests over UI tests. Triggers on: 'evaluate tests in PR', 'review test quality', 'are these tests good enough', 'check test coverage', 'is this test adequate', 'assess test coverage for PR'.
Attempts ONE alternative fix for a bug, tests it empirically, and reports results. ALWAYS explores a DIFFERENT approach from existing PR fixes. Use when CI or an agent needs to try independent fix alternatives. Invoke with problem description, test command, target files, and optional hints.
Verifies tests catch the bug. Auto-detects test type (UI tests, device tests, unit tests) and dispatches to the appropriate runner. Supports two modes - verify failure only (test creation) or full verification (test + fix validation).
| name | issue-triage |
| description | Queries and triages open GitHub issues that need attention. Helps identify issues needing milestones, labels, or investigation. |
| metadata | {"author":"dotnet-maui","version":"2.3"} |
| compatibility | Requires GitHub CLI (gh) installed and authenticated. Run `gh auth login` before using. |
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'