Prepare weekly triage meeting summary for WinAppSDK Needs-Triage issues. Use when preparing for triage meetings, reviewing Needs-Triage issues, generating diff reports since last triage, summarizing new or updated issues, or creating action item recommendations. Triggers on requests involving triage preparation, Needs-Triage review, meeting summary, triage diff, or weekly issue analysis.
This skill helps prepare comprehensive summaries for the twice-weekly WinAppSDK triage meetings. It focuses on issues that actually need triage attention:
Note: Open issues with both
Needs-TriageAND anarea-*label are excluded — they're already triaged and waiting for area team action.
Every suggestion and reply is backed by research:
| Research Type | What We Search | Why |
|---|---|---|
| 🔍 Similar Issues |
| GitHub issue search |
| Find duplicates, related bugs, past fixes |
| 💻 Codebase | grep_search, semantic_search | Understand technical context, find workarounds |
| 📚 Documentation | fetch_webpage on MS docs | Verify known limitations, expected behavior |
| 📜 Git History | git log, git blame | Identify area owners, recent changes |
This ensures:
The skill tracks four critical categories for each meeting:
| Category | Description | Action Required |
|---|---|---|
| 🔥 Hot Issues | ≥5 increased activity (comments + reactions) | May need priority attention |
| 🆕 Created This Week | Issues created since last weekly triage | Review + assign area |
| ⏳ Older Pending | Older issues still without area labels | Follow up — why no action? |
| ✅ Closed (need reply) | Closed issues with customer follow-up | Draft reply with confidence level |
Primary triggers — Use this skill when:
Anti-patterns — Do NOT use this skill when:
Get-IssueDetails.ps1 for individual issues)gh auth login)Generated-Files/triageMeeting/previous-state.jsonMigration note: If you have an existing
Generated Files/triageMeeting/...directory from earlier runs, renameGenerated FilestoGenerated-Filesbefore using this skill, or pass explicit input/output paths to the scripts so you keep prior diff history.
# Windows
winget install GitHub.cli
# Then authenticate
gh auth login
Generated-Files/triageMeeting/previous-state.json# Get all issues needing triage (no area label)
./.github/skills/triage-meeting-prep/scripts/Get-TriageIssues.ps1 -NoAreaOnly -OutputFormat summary
# Or get JSON for processing
$issues = ./.github/skills/triage-meeting-prep/scripts/Get-TriageIssues.ps1 -NoAreaOnly | ConvertFrom-Json
createdAt ≥ last weekly triage datecreatedAt < last weekly triage dateGet-IssueDetails.ps1:
./Get-IssueDetails.ps1 -IssueNumber <number> -OutputFormat summaryoverview.mdImportant: Every issue without an area label gets a review. The summary links to each review file.
The skill provides several PowerShell scripts for data fetching and analysis:
Fetches all issues with the Needs-Triage label from the repository.
# Get all Needs-Triage issues without area labels
./Get-TriageIssues.ps1 -NoAreaOnly -OutputFormat summary
# Get JSON output for programmatic processing
$issues = ./Get-TriageIssues.ps1 -NoAreaOnly | ConvertFrom-Json
Parameters:
-Repository — Repository in 'owner/repo' format (default: microsoft/WindowsAppSDK)-State — Filter by state: 'open', 'closed', or 'all' (default: all)-NoAreaOnly — Only include issues without area-* labels-Limit — Maximum issues to fetch (default: 200)-OutputFormat — Output format: 'json', 'summary', or 'table' (default: json)Performs deep analysis of a single issue including scoring and recommendations.
# Analyze a specific issue
./Get-IssueDetails.ps1 -IssueNumber 1234 -OutputFormat summary
Fetches all label definitions from the repository including names, descriptions, and colors.
# Get all labels
./Get-RepositoryLabels.ps1 -OutputFormat summary
# Get only area labels
./Get-RepositoryLabels.ps1 -Filter "area-*" -OutputFormat table
# Get labels from a different repository
./Get-RepositoryLabels.ps1 -Repository "microsoft/terminal" -OutputFormat json
Parameters:
-Repository — Repository in 'owner/repo' format (default: microsoft/WindowsAppSDK)-Filter — Filter pattern for label names (supports wildcards like 'area-*')-Limit — Maximum labels to fetch (default: 500)-OutputFormat — Output format: 'json', 'summary', or 'table' (default: json)Use cases:
Compares current triage state with previous state to identify changes.
Saves the current triage state for future comparisons.
All outputs are saved to Generated-Files/triageMeeting/<date>/:
| File | Purpose |
|---|---|
summary.md | Main meeting document with tables linking to individual reviews |
previous-state.json | State snapshot for next diff (auto-generated) |
Individual issue reviews are saved to Generated-Files/issueReview/<issue-number>/:
| File | Purpose |
|---|---|
overview.md | Full issue analysis with scores and suggested actions (linked from summary) |
implementation-plan.md | Technical implementation details (if applicable) |
Key Output: The
summary.mdincludes the Suggested Actions section extracted from each issue'soverview.md.
See workflow-triage-prep.md for the complete step-by-step process.
| Category | Definition | Action Needed |
|---|---|---|
| 🔥 Hot Issues | ≥5 combined new comments + reactions since last triage | May need priority attention |
| 🆕 Created This Week | createdAt is after last weekly triage date | Use Get-IssueDetails.ps1 + assign area |
| ⏳ Older Pending | Created before this week, still no area label | Follow up — why not actioned? |
| ✅ Resolved | In previous state, NOT in current | Acknowledge (got area label or closed) |
| 🏷️ Closed (cleanup) | Closed + still has Needs-Triage label | Remove Needs-Triage label |
Key distinction: "Created This Week" is based on when the issue was created (
createdAt), not when it was first seen in triage runs. This ensures new issues are highlighted even if triage runs multiple times per week.
See template-summary.md for the full template structure.
| Action | When to Suggest |
|---|---|
Assign to milestone | High business importance, clear scope |
Add area label | Missing component/area identification |
Request clarification | Requirement clarity < 50 |
Close as duplicate | Similar closed issue found with fix |
Close as by-design | Expected behavior, not a bug |
Needs investigation | Repro unclear, needs debugging |
Ready for work | Clear requirements, assignable |
| Symptom | Solution |
|---|---|
| No previous state file | First run — all issues shown as "New" |
gh CLI not installed | Run winget install GitHub.cli then gh auth login |
gh not authenticated | Run gh auth login and follow the prompts |
| Rate limited | Wait and retry, or reduce --limit parameter |
| Missing issue details | Use Get-IssueDetails.ps1 -IssueNumber <number> |
gh CLI reference