mcpbeat Sign in

Issue Triage Report Agent Skill

Generate comprehensive GitHub Feature Area Status reports for the Windows App SDK repository. Use when asked to create triage reports, identify high-priority issues, analyze feature area health, find issues needing attention, or generate status dashboards. Triggers on requests involving issue triage, area status, priority analysis, bug tracking reports, or engineering team focus areas.

25k tokens
context cost
the whole folder, loaded on every use
14
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
4640
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/microsoft/WindowsAppSDK --skill issue-triage-report

What comes with it

85 003 bytes besides the instruction
LICENSE.txt
references/AgentAssessments.json
references/IssueAssessments.json
references/area-contacts.json
references/issue-assessments-schema.json
references/scoring-algorithm.md
scripts/Generate-FeatureAreaReport.ps1
scripts/Get-AreaContacts.ps1
scripts/Get-HighlightScore.ps1
scripts/ReportLib.ps1
scripts/ScoringConfig.json
scripts/Validate-FeatureAreaReport.ps1
templates/report-template.md

The instruction itself

26 sections, as written by the author

Issue Triage Report Generator

This skill generates comprehensive GitHub Feature Area Status reports that help engineering teams identify high-priority issues, track triage status, and highlight items needing immediate attention.

When to Use This Skill

Primary triggers — Generate a report when:

  • Engineering triage meetings — Create status reports showing open issues, needs-triage counts, and highlighted issues per feature area.
  • Priority analysis requests — Identify which issues should get engineering focus based on deterministic scoring (reactions, age, comments) plus agent content assessment.
  • Feature area health checks — Assess the health of specific areas by analyzing issue distribution, triage backlog, and proposal counts.
  • Dashboard generation — Produce markdown tables or formatted reports for team communication channels.

Anti-patterns — Do NOT use this skill when:

  • Looking for a specific issue by number (use GitHub search directly)
  • Creating or editing issues (use GitHub MCP tools)
  • Analyzing code changes or PRs (use PR management tools)

Prerequisites

  • GitHub CLI (gh) installed and authenticated
  • PowerShell 5.1+ (Windows) or PowerShell Core (cross-platform)
  • Access to the target GitHub repository (microsoft/WindowsAppSDK)
  • Area contacts configuration (see below)

Setting Up Area Contacts

The area contacts file maps feature areas to team members. This file is required for contact lookups and is stored in your local .user/ folder (not committed to the repository).

  • Create the directory structure:
   mkdir -p .user/issue-triage-report
  • Copy the template and customize:
   cp .github/skills/issue-triage-report/references/area-contacts.json .user/issue-triage-report/area-contacts.json
  • Edit .user/issue-triage-report/area-contacts.json with your team's actual contacts

> Note: The .user/ folder is gitignored, so your team contacts remain private.

Available Scripts

Generate-FeatureAreaReport.ps1

Generate the full feature area status report with highlight scoring.

Location: ./scripts/Generate-FeatureAreaReport.ps1

./scripts/Generate-FeatureAreaReport.ps1 [-Repo <owner/repo>] [-OutputFormat <markdown|csv|json>] [-HighlightCount <n>]

| Parameter | Required | Default | Description |

|-----------|----------|---------|-------------|

| -Repo | No | microsoft/WindowsAppSDK | Repository in owner/repo format |

| -OutputFormat | No | markdown | Output format: markdown, csv, or json |

| -HighlightCount | No | 3 | Max highlighted issues per area |

| -IncludeClosed | No | $false | Include recently closed issues count |

Example:

./scripts/Generate-FeatureAreaReport.ps1 -OutputFormat markdown -HighlightCount 3

Get-HighlightScore.ps1

Calculate the highlight score for a specific issue to determine priority.

Location: ./scripts/Get-HighlightScore.ps1

./scripts/Get-HighlightScore.ps1 -IssueNumber <number> [-Repo <owner/repo>] [-Verbose]

| Parameter | Required | Default | Description |

|-----------|----------|---------|-------------|

| -IssueNumber | Yes | - | GitHub issue number to analyze |

| -Repo | No | microsoft/WindowsAppSDK | Repository in owner/repo format |

| -Verbose | No | $false | Show detailed scoring breakdown |

Example:

./scripts/Get-HighlightScore.ps1 -IssueNumber 4651 -Verbose

Get-AreaContacts.ps1

Retrieve or update the area-to-contact mapping configuration.

Location: ./scripts/Get-AreaContacts.ps1

./scripts/Get-AreaContacts.ps1 [-Area <area-name>] [-Update]

| Parameter | Required | Default | Description |

|-----------|----------|---------|-------------|

| -Area | No | - | Specific area to look up (returns all if omitted) |

| -Update | No | $false | Interactively update contact mapping |

Step-by-Step Workflows

Workflow 1: Generate Weekly Triage Report

  • Ensure GitHub CLI is authenticated:
   gh auth status
  • Generate the report:
   ./scripts/Generate-FeatureAreaReport.ps1 -OutputFormat markdown -HighlightCount 3

Before running the command above, have the agent save runtime assessments to:

  • ./references/AgentAssessments.json

This file is loaded automatically at script start and applied as per-run overrides.

Every assessed issue entry must include agent reasoning in the reasoning field.

Required per-issue schema in assessments:

  • severityTier: critical|high|medium|low|none
  • isBlocker: true|false
  • reasoning: short rationale explaining severity/blocker judgment

Example:

   {
      "assessments": {
         "2894": {
            "severityTier": "high",
            "isBlocker": false,
            "reasoning": "Frequent user impact in notifications flow; clear repro in comments; no confirmed workaround."
         }
      }
   }
  • Run an agent content review for each highlighted issue using title, body, labels, and comments.
  • Add annotation tags in report narrative: [severity:critical|high|medium|low|none], [blocker:yes|no], and optional [confidence:XX].
  • Copy output to team communication channel (Teams, email, wiki)

Workflow 2: Analyze a Specific Feature Area

  • Get area-specific issues:
    gh issue list --repo microsoft/WindowsAppSDK --label "area-Notifications" --state open --json number,title,body,labels,reactionGroups,createdAt,comments
  • Check individual issue scores:
   ./scripts/Get-HighlightScore.ps1 -IssueNumber 2894 -Verbose
  • Review scoring factors and prioritize accordingly

Workflow 3: Update Area Contacts

  • View current contacts:
   ./scripts/Get-AreaContacts.ps1
  • Update specific area contact:
   ./scripts/Get-AreaContacts.ps1 -Area "area-Notifications" -Update

Highlight Scoring Algorithm

Issues are scored with a normalized composite on a 0..100 scale. See scoring-algorithm.md for complete details.

PowerShell computes deterministic score factors and highlight labels. Severity and blocker are assessment-driven inputs.

Scripts load baseline assessments from:

  • ./references/IssueAssessments.json

They also load runtime agent assessments from:

  • ./references/AgentAssessments.json

If both files include the same issue number, IssueAssessments.json takes precedence.

If either file is missing or malformed, scripts emit status/warning output and continue with fallback behavior.

Implementation note: scripts load these files through a single Read-Assessments function in ./scripts/ReportLib.ps1 using -AssessmentType Issue or -AssessmentType Agent.

Agent Content Review

After generating scores, review each highlighted issue and assign these annotations based on title, body, labels, and comments:

  • [severity:critical|high|medium|low|none]
  • [blocker:yes|no]
  • [confidence:XX]

After assigning annotations, persist the same decision to ./references/AgentAssessments.json and include reasoning for every updated issue entry.

Use this severity rubric:

| Tier | Meaning |

|------|---------|

| critical | Crash, data loss, severe regression, or broad user/system impact |

| high | Serious functional break affecting key workflows |

| medium | User-visible defect or limitation with practical workaround |

| low | Minor issue, edge case, docs/polish impact |

| none | No clear severity signal from issue content |

Mark [blocker:yes] only when issue content explicitly indicates dependency blocking (for example: "blocked by", "blocking release", "must be fixed before") and no workaround has been provided. Otherwise use [blocker:no].

Use this confidence rubric:

| Score | Level | Meaning |

|-------|-------|---------|

| 80-100 | High | Multiple strong signals agree: issue content, labels, reactions, age, comments, and recent discussion all support highlighting it |

| 60-79 | Medium-High | Strong support from the score breakdown and issue details, with only minor ambiguity |

| 40-59 | Medium | Reasonable highlight candidate, but some evidence is weak, stale, or mixed |

| 20-39 | Low | The numeric score is carrying most of the case; supporting context is limited or ambiguous |

| 0-19 | Very Low | The issue surfaced mechanically, but the agent cannot defend highlighting it with the available evidence |

Confidence should consider:

  • whether the issue body and comments clearly support the highlight label
  • whether the numeric score is driven by multiple meaningful factors instead of one outlier
  • whether the issue still appears relevant after reading recent discussion
  • whether the highlight reason would be easy to defend in a triage meeting

Quick Reference: Score Factors

| Factor | Weight (between 0 and 1) | Description |

|--------|--------|-------------|

| Reactions | weights.reactions | round(min(1, totalReactions / rankingCeilings.reactions) * weight * 100, 1) |

| Age | weights.age | round(min(1, issueAgeDays / rankingCeilings.ageDays) * weight * 100, 1) |

| Comments | weights.comments | round(min(1, commentCount / rankingCeilings.comments) * weight * 100, 1) |

| Severity | weights.severity | round(weight * severityMultipliers[tier] * 100, 1) from assessments (critical/high/medium/low/none) |

| Blockers | weights.blockers | Adds round(weight * 100, 1) when assessed isBlocker=true |

Total = min(100, round(sum of factor points, 1)).

rankingCeilings are independent per-factor scales and do not need to sum to any target.

recommendationBands are fixed score-ratio boundaries (high, medium, normal) used to classify recommendations. They are ratio cutoffs, not statistical percentiles.

Highlight Labels (Output)

The report adds reason labels to highlighted issues:

| Label | Meaning |

|-------|---------|

| 🌟 Popular | High reaction count (≥5 reactions) |

| ⏰ Aging | Open > 90 days without triage |

| 📈 Trending | High comment activity (≥10 comments) |

Report Output Format

Markdown Table (Default)

| Feature Area | Area Contact | Open | Triage | Proposals | Closed | Highlights |
|--------------|--------------|------|--------|-----------|--------|------------|
| area-Notification | Contact Name | 34 | 8 | 11 | 0 | 🌟 [#2894](link), ⏰ [#3001](link) |
| area-Widgets | Contact Name | 21 | 10 | 4 | 0 | 📈 [#3958](link) |

Agent-Reviewed Output

When producing the final narrative report, the agent should append content-review annotations:

| Feature Area | Area Contact | Open | Triage | Proposals | Closed | Highlights |
|--------------|--------------|------|--------|-----------|--------|------------|
| area-Notification | Contact Name | 34 | 8 | 11 | 0 | 🌟 [#2894](link) [severity:high] [blocker:no] [confidence:85], ⏰ [#3001](link) [severity:medium] [blocker:no] [confidence:72] |
| area-Widgets | Contact Name | 21 | 10 | 4 | 0 | 📈 [#3958](link) [severity:low] [blocker:no] [confidence:68] |

Special Status Indicators

| Indicator | Meaning |

|-----------|---------|

| 0️⃣🐛🥳 | Zero bugs — celebrate! |

| - | Data not applicable or unavailable |

Configuration

Area Contacts

Contact mappings are stored in area-contacts.json. Update this file when team assignments change.

Custom Scoring Weights

Modify scoring weights in ./scripts/ScoringConfig.json.

severityMultipliers maps assessment tiers to the percentage of weights.severity that is applied.

Troubleshooting

| Symptom | Solution |

|---------|----------|

| gh: command not found | Install GitHub CLI: winget install GitHub.cli |

| authentication required | Run gh auth login and follow prompts |

| Rate limit exceeded | Wait or use --limit to reduce API calls |

| Missing area label | Issue may use non-standard label; check label list |

| Contact not found | Update area-contacts.json |

Common Commands Reference

# List all area labels (uses Get-RepositoryLabels.ps1 as the single source of truth)
./.github/skills/triage-meeting-prep/scripts/Get-RepositoryLabels.ps1 -Filter "area-*" -OutputFormat table

# Get issue details with reactions
gh issue view 4651 --repo microsoft/WindowsAppSDK --json number,title,labels,reactionGroups,createdAt,comments,author

# List issues needing triage
gh issue list --repo microsoft/WindowsAppSDK --label "needs-triage" --state open --json number,title,labels

# Export all open issues to JSON
gh issue list --repo microsoft/WindowsAppSDK --state open --limit 1000 --json number,title,labels,reactionGroups,createdAt,comments,author

References

  • Scoring Algorithm Details — Complete scoring methodology
  • Area Contacts — Feature area ownership mapping
  • Report Template — Customizable output template

Other skills for the same job

different authors, same section of the catalogue
D3 Viz
by chrisvoncsefalvay
×3

Creating interactive data visualisations using d3.js. This skill should be used when creating custom charts, graphs, network diagrams, geographic visualisations, or any complex SVG-based data visualisation that requires fine-grained control over visual elements, transitions, or interactions. Use this for bespoke visualisations beyond standard charting libraries, whether in React, Vue, Svelte, vanilla JavaScript, or any other environment.

20k tokens
Astropy
by christophacham
×3

Comprehensive Python library for astronomy and astrophysics. This skill should be used when working with astronomical data including celestial coordinates, physical units, FITS files, cosmological calculations, time systems, tables, world coordinate systems (WCS), and astronomical data analysis. Use when tasks involve coordinate transformations, unit conversions, FITS file manipulation, cosmological distance calculations, time scale conversions, or astronomical data processing.

16k tokens
Instrument Data To Allotrope
by anthropics
vendor ×2

Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when scientists need to standardize instrument data for LIMS systems, data lakes, or downstream analysis. Supports auto-detection of instrument types. Outputs include full ASM JSON, flattened CSV for easy import, and exportable Python code for data engineers. Common triggers include converting instrument files, standardizing lab data, preparing data for upload to LIMS/ELN systems, or generating parser code for production pipelines.

33k tokens scripts
Qutip
by ComeOnOliver
×2

Quantum mechanics simulations and analysis using QuTiP (Quantum Toolbox in Python). Use when working with quantum systems including: (1) quantum states (kets, bras, density matrices), (2) quantum operators and gates, (3) time evolution and dynamics (Schrödinger, master equations, Monte Carlo), (4) open quantum systems with dissipation, (5) quantum measurements and entanglement, (6) visualization (Bloch sphere, Wigner functions), (7) steady states and correlation functions, or (8) advanced methods (Floquet theory, HEOM, stochastic solvers). Handles both closed and open quantum systems across various domains including quantum optics, quantum computing, and condensed matter physics.

27k tokens
Copilot Usage Metrics
by github
vendor ×1

Retrieve and display GitHub Copilot usage metrics for organizations and enterprises using the GitHub CLI and REST API.

1k tokens scripts
Mentoring Juniors
by github
vendor ×1

Socratic mentoring for junior developers and AI newcomers. Guides through questions, never answers. Triggers: "help me understand", "explain this code", "I''m stuck", "Im stuck", "I''m confused", "Im confused", "I don''t understand", "I dont understand", "can you teach me", "teach me", "mentor me", "guide me", "what does this error mean", "why doesn''t this work", "why does not this work", "I''m a beginner", "Im a beginner", "I''m learning", "Im learning", "I''m new to this", "Im new to this", "walk me through", "how does this work", "what''s wrong with my code", "what''s wrong", "can you break this down", "ELI5", "step by step", "where do I start", "what am I missing", "newbie here", "junior dev", "first time using", "how do I", "what is", "is this right", "not sure", "need help", "struggling", "show me", "help me debug", "best practice", "too complex", "overwhelmed", "lost", "debug this", "/socratic", "/hint", "/concept", "/pseudocode". Progressive clue systems, teaching techniques, and success metrics.

4k tokens
Astropy
by K-Dense-AI
×1

Core Python library for astronomy and astrophysics workflows that need Astropy APIs, including units/quantities, coordinates, FITS I/O, tables, time systems, WCS, and cosmology. Use when implementing or debugging astronomical data analysis code with Astropy.

18k tokens
Polars
by K-Dense-AI
×1

High-performance DataFrame library for Python ETL, analytics, and pandas migration. Use for expression-based data manipulation with lazy query optimization, parallel execution, streaming out-of-core processing, Arrow interoperability, and optional GPU execution.

20k tokens

How to use it

Copy the folder

Take microsoft/issue-triage-report from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.