Enhance triage skills with updated scoring, confidence, and P-scale labels#6294
Enhance triage skills with updated scoring, confidence, and P-scale labels#6294lauren-ciha wants to merge 3 commits intomainfrom
Conversation
…abels
Scoring System:
- New weights: reactions=30%, age=30%, comments=30%, severity=10%
- P-scale severity labels: P0=critical, P1=high, P2=medium, P3=low
- Confidence scoring with grep-friendly [confidence:XX] format (0-100)
Label Consolidation:
- Merged Hot + Popular into Popular (>=5 reactions threshold)
Contact Schema:
- Simplified from {primary, secondary} to single {contact} field
- Removed legacy schema backward compatibility
Area Suggestions:
- Get-IssueDetails.ps1 dynamically fetches area labels via Get-RepositoryLabels.ps1
- area-Notifications covers all notification types (toast, badge, push, wns)
- Fixed area-PowerManagement naming
Documentation:
- Added PowerShell examples alongside Bash for confidence filtering
- Updated all SKILL.md files with new configuration details
guimafelipe
left a comment
There was a problem hiding this comment.
As this is a script that we use internally, I don't think any of my comments should be blocking. But maybe they will help making this overall process more maintainable and consistent.
Feel free to take them as suggestions.
|
|
||
| **Rationale**: Active discussions indicate ongoing relevance and potential blockers. | ||
|
|
||
| **Highlight Label**: `📈 Trending` when comments ≥ 5 AND recent activity (shows the issue is heating up NOW) |
There was a problem hiding this comment.
Why are you removing the recent activity part?
|
|
||
| Normalized Score = (Total Score / 100) × 100 | ||
| Total Score = Reactions + Age + Comments + Severity | ||
| = 30 + 30 + 30 + 10 = 100 max |
There was a problem hiding this comment.
I would like to review that later. I feel like severity should have a way bigger impact on the score. If we have a security issue, we want to act on it ASAP regardless of reactions, comments and age.
| reactions = 30 | ||
| age = 25 | ||
| comments = 20 | ||
| severity = 15 | ||
| blockers = 10 | ||
| age = 30 | ||
| comments = 30 | ||
| severity = 10 | ||
| blockers = 0 |
There was a problem hiding this comment.
This is defined multiple times (on the reference markdown and here). Can we have it defined only once in a single source of truth that the script can read from?
| severityLabels = @{ | ||
| critical = @("regression", "crash", "hang", "data-loss", "security", "P0") | ||
| high = @("bug", "P1") | ||
| medium = @("performance", "feature proposal", "feature-proposal", "P2") | ||
| low = @("documentation", "enhancement", "P3") | ||
| } |
There was a problem hiding this comment.
Same as above comment. Having information duplicated multiple times can bloat the files, make it hard for humans to read and also for agents to maintain. If at some point there is a mismatch between the information, we don't know which one the agent will consider the right one.
| "critical": ["regression", "crash", "hang", "data-loss", "security", "P0"], | ||
| "high": ["bug", "P1"], | ||
| "medium": ["performance", "feature proposal", "feature-proposal", "P2"], | ||
| "low": ["documentation", "enhancement", "P3"] |
There was a problem hiding this comment.
I see all of the important data is defined in this json, which is good. Why do we need it hardcoded all over the script again? Can't we just read from the json?
| 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" } | ||
| } | ||
| } | ||
| ``` |
There was a problem hiding this comment.
I like this. Instead of copying the file's content, we reference the file.
| $defaultKeywords = @{ | ||
| 'area-Notifications' = @('notification', 'toast', 'badge', 'push', 'appnotification', 'pushnotification', 'wns') | ||
| 'area-Packaging' = @('msix', 'package', 'deploy', 'install', 'appx', 'deployment') | ||
| 'area-Windowing' = @('window', 'appwindow', 'titlebar', 'backdrop', 'presenter') | ||
| 'area-Widgets' = @('widget', 'dashboard') | ||
| 'area-AppLifecycle' = @('lifecycle', 'activation', 'restart', 'single instance', 'appinstance') | ||
| 'area-PowerManagement' = @('power', 'battery', 'suspend', 'resume', 'powermanager') | ||
| 'area-MRTCore' = @('resource', 'mrt', 'localization', 'pri', 'resourcemanager') | ||
| 'area-DWriteCore' = @('font', 'dwrite', 'text', 'typography') | ||
| 'area-AccessControl' = @('access', 'security', 'token', 'permission') | ||
| 'area-Environment' = @('environment', 'variable', 'env') | ||
| } |
There was a problem hiding this comment.
Should this go in the json file too?
This PR builds upon the issue-triage and feature-area-report skills.
The key changes are:
Validate-FeatureAreaReport.ps1that checks the report against the live GitHub label data usingghcli