Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a5d684e
Update Generate-FeatureAreaReport.ps1 to only search for area-* featu…
lauren-ciha Mar 12, 2026
f609318
Add Validate-FeatureAreaReport.ps1 to issue-triage-report skill
lauren-ciha Mar 12, 2026
38546c3
Enhance triage skills with updated scoring, confidence, and P-scale l…
lauren-ciha Mar 12, 2026
daea0a8
Revert trending criteria to include recency as a scoring factor
lauren-ciha Mar 25, 2026
ed67604
Remove copy of ScoringConfig.json in favor of the filepath
lauren-ciha Mar 25, 2026
cdc1dff
ReportLib.ps1: Remove defaults in Get-ScoringConfig and rely on Scori…
lauren-ciha Mar 25, 2026
5490f94
ReportLib.ps1: Remove defaults in Get-IssueScore and rely on ScoringC…
lauren-ciha Mar 25, 2026
6615e89
ReportLib.ps1: Update Get-AreaContacts to rely on area-contacts.json,…
lauren-ciha Mar 25, 2026
dde45e7
GetHighlightScore.ps1: Use Get-Issue score for calculation. Let this …
lauren-ciha Mar 25, 2026
8a6b589
ReportLib.ps1: Remove unused thresholds assignment from Get-IssueScore
lauren-ciha Mar 25, 2026
4e71811
Skills: updates the label fetching code so Get-RepositoryLabels.ps1 i…
lauren-ciha Mar 25, 2026
f9be683
Create area-keywords.json
lauren-ciha Mar 25, 2026
763cff9
Update Get-IssueDetails.ps1 to reference area labels json
lauren-ciha Mar 25, 2026
0e62693
Enforce trending_days recency check for Trending highlight label
lauren-ciha Mar 25, 2026
eed2b88
Update scoring-algorithm.md to walk through scripts and config files
lauren-ciha Mar 25, 2026
2a2225e
Remove sample json with hardcoded weight values
lauren-ciha Mar 25, 2026
2047dbd
Correct Validate-FeatureAreaReport.ps1 to use PSScriptRoot instead of…
lauren-ciha Mar 30, 2026
c3dca67
Remove security label from issue-triage-report skill
lauren-ciha Apr 2, 2026
4b890e2
Remove keyword classification on area labels and replace with agent i…
lauren-ciha Apr 2, 2026
e64177c
Clean up block word matching in ReportLib.ps1
lauren-ciha Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 43 additions & 20 deletions .github/skills/issue-triage-report/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@ The area contacts file maps feature areas to team members. This file is **requir
{
"areaContacts": {
"area-FeatureName": {
"primary": "Primary Contact Name",
"secondary": "Secondary Contact or null",
"contact": "Contact Name",
"notes": "Optional notes"
}
},
Expand Down Expand Up @@ -180,28 +179,37 @@ Retrieve or update the area-to-contact mapping configuration.

Issues are scored (0-100) based on multiple factors. See [scoring-algorithm.md](./references/scoring-algorithm.md) for complete details.

Each score includes a confidence value `[confidence:XX]` indicating data reliability (grep-friendly format).

### Quick Reference: Score Factors

| Factor | Weight | Description |
|--------|--------|-------------|
| **Reactions** | 30 | Total reactions (👍, ❤️, 🚀, etc.) indicate community interest |
| **Age** | 25 | Older untriaged issues get higher priority |
| **Comments** | 20 | Active discussion indicates importance |
| **Severity** | 15 | Labels like `bug`, `regression`, `crash` increase score |
| **Blockers** | 10 | Issues blocking other work get prioritized |
| **Age** | 30 | Older untriaged issues get higher priority |
| **Comments** | 30 | Active discussion indicates importance |
| **Severity** | 10 | Labels like `bug`, `regression`, `crash`, `P0`-`P3` increase score |

### Severity Label Tiers

| Tier | Labels | Score |
|------|--------|-------|
| Critical | `regression`, `crash`, `hang`, `data-loss`, `P0` | 100% |
| High | `bug`, `P1` | 80% |
| Medium | `performance`, `feature proposal`, `P2` | 50% |
| Low | `documentation`, `enhancement`, `P3` | 20% |

### Highlight Labels (Output)

The report adds reason labels to highlighted issues:

| Label | Meaning |
|-------|---------|
| `🔥 Hot` | High reaction count (community demand) |
| `🌟 Popular` | High reaction count (≥5 reactions) |
| `⏰ Aging` | Open > 90 days without triage |
| `🐛 Regression` | Marked as regression or recent breakage |
| `🚧 Blocker` | Blocking other issues or teams |
| `📈 Trending` | High comment activity recently |
| ` Popular` | Feature proposal with significant support |
| `📈 Trending` | High comment activity (≥10 comments) |

## Report Output Format

Expand All @@ -210,8 +218,8 @@ The report adds reason labels to highlighted issues:
```markdown
| Feature Area | Area Contact | Open | Triage | Proposals | Closed | Highlights |
|--------------|--------------|------|--------|-----------|--------|------------|
| area-Notification | Notifications Owner | 34 | 8 | 11 | 0 | 🔥 [#2894](link) Hot, ⏰ [#3001](link) Aging |
| area-Widgets | Widgets Owner | 21 | 10 | 4 | 0 | 📈 [#3958](link) Trending |
| area-Notification | Contact Name | 34 | 8 | 11 | 0 | 🌟 [#2894](link) [confidence:85], ⏰ [#3001](link) [confidence:72] |
| area-Widgets | Contact Name | 21 | 10 | 4 | 0 | 📈 [#3958](link) [confidence:68] |
```

### Special Status Indicators
Expand All @@ -226,7 +234,15 @@ The report adds reason labels to highlighted issues:

### Area Contacts

Contact mappings are stored in [area-contacts.md](./references/area-contacts.md). Update this file when team assignments change.
Contact mappings are stored in [area-contacts.json](./references/area-contacts.json). Update this file when team assignments change.

```json
{
"areaContacts": {
"area-FeatureName": { "contact": "Contact Name", "notes": "Optional notes" }
}
}
```

### Custom Scoring Weights

Expand All @@ -236,15 +252,22 @@ Modify scoring weights in `./scripts/ScoringConfig.json`:
{
"weights": {
"reactions": 30,
"age": 25,
"comments": 20,
"severity": 15,
"blockers": 10
"age": 30,
"comments": 30,
"severity": 10,
"blockers": 0
},
"thresholds": {
"hot_reactions": 10,
"aging_days": 90,
"trending_comments": 5
"trending_comments": 10,
"trending_days": 14,
"popular_reactions": 5
},
"severityLabels": {
"critical": ["regression", "crash", "hang", "data-loss", "P0"],
"high": ["bug", "P1"],
"medium": ["performance", "feature proposal", "feature-proposal", "P2"],
"low": ["documentation", "enhancement", "P3"]
}
}
```
Expand All @@ -262,8 +285,8 @@ Modify scoring weights in `./scripts/ScoringConfig.json`:
## Common Commands Reference

```powershell
# List all area labels
gh label list --repo microsoft/WindowsAppSDK --search "area-" --json name
# 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$comment": "Area contacts configuration. Create your own copy at .user/issue-triage-report/area-contacts.json with actual team contacts.",
"areaContacts": {
"area-ExampleFeature": { "primary": "Primary Contact Name", "secondary": null },
"area-AnotherFeature": { "primary": "Primary Contact", "secondary": "Secondary Contact" },
"area-FeatureWithNotes": { "primary": "Contact Name", "secondary": null, "notes": "Special handling notes" }
"area-ExampleFeature": { "contact": "Contact Name" },
"area-AnotherFeature": { "contact": "Contact Name", "notes": "Optional notes about this area" },
"area-FeatureWithNotes": { "contact": "Contact Name", "notes": "Special handling notes" }
},
"specialAreas": {
"triageOnly": ["area-TriageOnlyExample"],
Expand Down
Loading