mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-03 09:46:54 +02:00
Add Review and Fix prompts for acceleration github issues (#43419)
## Summary of the Pull Request This PR adds comprehensive GitHub PR review tooling infrastructure to improve review efficiency through incremental review capabilities. The tooling consists of PowerShell scripts that detect changes between review iterations, enabling reviewers to focus only on modified files, and AI prompt templates for structured PR and issue reviews. **Key additions:** - `.github/review-tools/`: PowerShell scripts for incremental PR review detection - `.github/prompts/`: AI prompt templates for PR reviews, issue reviews, and issue fixes - Copilot instructions documentation for review tools integration ## PR Checklist - [ ] Closes: #xxx - [x] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Tests:** Added/updated and all pass (N/A - tooling scripts with manual validation) - [x] **Localization:** All end-user-facing strings can be localized (N/A - development tooling only) - [x] **Dev docs:** Added/updated (comprehensive documentation in `review-tools.instructions.md`) - [ N/A ] **New binaries:** Added on the required places (N/A - PowerShell scripts, no binaries) - [ N/A ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx (N/A - internal development tooling) ## Detailed Description of the Pull Request / Additional comments ### Review Tools Added (`.github/review-tools/`) **Core Scripts:** 1. **`Get-PrIncrementalChanges.ps1`** (173 lines) - Compares last reviewed commit SHA with current PR head to identify incremental changes. Returns JSON with changed files, new commits, and review recommendations. Handles scenarios: first review, no changes, force-push detection, and incremental changes. 2. **`Test-IncrementalReview.ps1`** (170 lines) - Helper script to preview incremental review detection before running full review. Displays colored console output showing current vs last reviewed SHAs, changed files, new commits, and recommended review strategy. 3. **`Migrate-ReviewToIncrementalFormat.ps1`** (206 lines) - One-time migration script to add review metadata sections to existing `00-OVERVIEW.md` files, enabling incremental review functionality for legacy PR reviews. 4. **`Get-GitHubRawFile.ps1`** (91 lines) - Downloads file content from GitHub repository at specific git reference for baseline comparison during reviews. Supports optional line numbering. 5. **`Get-GitHubPrFilePatch.ps1`** (79 lines) - Fetches unified diff (patch) for a specific file in a pull request using GitHub API. 6. **`review-tools.instructions.md`** (355 lines) - Comprehensive documentation covering script usage, workflow integration, error handling, best practices, and AI integration examples. Serves as Copilot instructions for the review tools. ### AI Prompt Templates Added (`.github/prompts/`) 1. **`review-pr.prompt.md`** (200 lines) - Structured prompt for comprehensive PR reviews with incremental review support 2. **`review-issue.prompt.md`** (158 lines) - Template for systematic issue analysis and triage 3. **`fix-issue.prompt.md`** (71 lines) - Guided workflow for implementing issue fixes 4. **Minor updates** to `create-commit-title.prompt.md` and `create-pr-summary.prompt.md` for consistency ### Key Features **Incremental Review Flow:** - Initial review (iteration 1): Creates overview with metadata including HEAD SHA - Subsequent reviews (iteration 2+): Reads last reviewed SHA, detects changes, reviews only modified files - Smart step filtering: Skips irrelevant review steps based on file types changed (e.g., skip Localization if no `.resx` files changed) **Error Handling:** - Detects force-push scenarios (last reviewed SHA no longer in history) - Validates GitHub CLI authentication - Provides detailed error messages with actionable solutions - Exit code 1 on errors for automation compatibility **Integration:** - Works with GitHub CLI (`gh`) for API access - JSON output for programmatic consumption - Designed for AI-powered review systems (Copilot integration) - Metadata tracking for context-aware suggestions ## Validation Steps Performed **Manual Testing:** 1. ✅ Verified all PowerShell scripts follow PSScriptAnalyzer rules 2. ✅ Tested `Get-PrIncrementalChanges.ps1` with various scenarios: - First review (no previous SHA) - No changes (SHA matches current) - Force-push detection (SHA not in history) - Incremental changes (multiple commits and files) 3. ✅ Validated `Test-IncrementalReview.ps1` output formatting and accuracy 4. ✅ Confirmed `Migrate-ReviewToIncrementalFormat.ps1` adds metadata without corrupting existing reviews 5. ✅ Tested GitHub API integration with `Get-GitHubRawFile.ps1` and `Get-GitHubPrFilePatch.ps1` 6. ✅ Verified documentation accuracy and completeness in `review-tools.instructions.md` 7. ✅ Validated prompt templates follow PowerToys repo conventions from `.github/copilot-instructions.md` **Dependencies Verified:** - Requires PowerShell 7+ (or Windows PowerShell 5.1+) - Requires GitHub CLI (`gh`) installed and authenticated - All scripts include comprehensive help documentation (`Get-Help` support) **No Automated Tests:** These are development/CI tooling scripts used by maintainers for PR reviews. Manual validation appropriate as they interact with live GitHub API and require human judgment for review quality assessment.
This commit is contained in:
158
.github/prompts/review-issue.prompt.md
vendored
Normal file
158
.github/prompts/review-issue.prompt.md
vendored
Normal file
@@ -0,0 +1,158 @@
|
||||
---
|
||||
mode: 'agent'
|
||||
model: Claude Sonnet 4.5
|
||||
description: "You are github issue review and planning expertise, Score (0–100) and write one Implementation Plan. Outputs: overview.md, implementation-plan.md."
|
||||
---
|
||||
|
||||
# GOAL
|
||||
For **#{{issue_number}}** produce:
|
||||
1) `Generated Files/issueReview/{{issue_number}}/overview.md`
|
||||
2) `Generated Files/issueReview/{{issue_number}}/implementation-plan.md`
|
||||
|
||||
## Inputs
|
||||
figure out from the prompt on the
|
||||
|
||||
# CONTEXT (brief)
|
||||
Ground evidence using `gh issue view {{issue_number}} --json number,title,body,author,createdAt,updatedAt,state,labels,milestone,reactions,comments,linkedPullRequests`, and download the image for understand the context of the issue more.
|
||||
Locate source code in current workspace, but also free feel to use via `rg`/`git grep`. Link related issues/PRs.
|
||||
|
||||
# OVERVIEW.MD
|
||||
## Summary
|
||||
Issue, state, milestone, labels. **Signals**: 👍/❤️/👎, comment count, last activity, linked PRs.
|
||||
|
||||
## At-a-Glance Score Table
|
||||
Present all ratings in a compact table for quick scanning:
|
||||
|
||||
| Dimension | Score | Assessment | Key Drivers |
|
||||
|-----------|-------|------------|-------------|
|
||||
| **A) Business Importance** | X/100 | Low/Medium/High | Top 2 factors with scores |
|
||||
| **B) Community Excitement** | X/100 | Low/Medium/High | Top 2 factors with scores |
|
||||
| **C) Technical Feasibility** | X/100 | Low/Medium/High | Top 2 factors with scores |
|
||||
| **D) Requirement Clarity** | X/100 | Low/Medium/High | Top 2 factors with scores |
|
||||
| **Overall Priority** | X/100 | Low/Medium/High/Critical | Average or weighted summary |
|
||||
| **Effort Estimate** | X days (T-shirt) | XS/S/M/L/XL/XXL/Epic | Type: bug/feature/chore |
|
||||
| **Similar Issues Found** | X open, Y closed | — | Quick reference to related work |
|
||||
| **Potential Assignees** | @username, @username | — | Top contributors to module |
|
||||
|
||||
**Assessment bands**: 0-25 Low, 26-50 Medium, 51-75 High, 76-100 Critical
|
||||
|
||||
## Ratings (0–100) — add evidence & short rationale
|
||||
### A) Business Importance
|
||||
- Labels (priority/security/regression): **≤35**
|
||||
- Milestone/roadmap: **≤25**
|
||||
- Customer/contract impact: **≤20**
|
||||
- Unblocks/platform leverage: **≤20**
|
||||
### B) Community Excitement
|
||||
- 👍+❤️ normalized: **≤45**
|
||||
- Comment volume & unique participants: **≤25**
|
||||
- Recent activity (≤30d): **≤15**
|
||||
- Duplicates/related issues: **≤15**
|
||||
### C) Technical Feasibility
|
||||
- Contained surface/clear seams: **≤30**
|
||||
- Existing patterns/utilities: **≤25**
|
||||
- Risk (perf/sec/compat) manageable: **≤25**
|
||||
- Testability & CI support: **≤20**
|
||||
### D) Requirement Clarity
|
||||
- Behavior/repro/constraints: **≤60**
|
||||
- Non-functionals (perf/sec/i18n/a11y): **≤25**
|
||||
- Decision owners/acceptance signals: **≤15**
|
||||
|
||||
## Effort
|
||||
Days + **T-shirt** (XS 0.5–1d, S 1–2, M 2–4, L 4–7, XL 7–14, XXL 14–30, Epic >30).
|
||||
Type/level: bug/feature/chore/docs/refactor/test-only; severity/value tier.
|
||||
|
||||
## Suggested Actions
|
||||
Provide actionable recommendations for issue triage and assignment:
|
||||
|
||||
### A) Requirement Clarification (if Clarity score <50)
|
||||
**When Requirement Clarity (Dimension D) is Medium or Low:**
|
||||
- Identify specific gaps in issue description: missing repro steps, unclear expected behavior, undefined acceptance criteria, missing non-functional requirements
|
||||
- Draft 3-5 clarifying questions to post as issue comment
|
||||
- Suggest additional information needed: screenshots, logs, environment details, OS version, PowerToys version, error messages
|
||||
- If behavior is ambiguous, propose 2-3 interpretation scenarios and ask reporter to confirm
|
||||
- Example questions:
|
||||
- "Can you provide exact steps to reproduce this issue?"
|
||||
- "What is the expected behavior vs. what you're actually seeing?"
|
||||
- "Does this happen on Windows 10, 11, or both?"
|
||||
- "Can you attach a screenshot or screen recording?"
|
||||
|
||||
### B) Correct Label Suggestions
|
||||
- Analyze issue type, module, and severity to suggest missing or incorrect labels
|
||||
- Recommend labels from: `Issue-Bug`, `Issue-Feature`, `Issue-Docs`, `Issue-Task`, `Priority-High`, `Priority-Medium`, `Priority-Low`, `Needs-Triage`, `Needs-Author-Feedback`, `Product-<ModuleName>`, etc.
|
||||
- If Requirement Clarity is low (<50), add `Needs-Author-Feedback` label
|
||||
- If current labels are incorrect or incomplete, provide specific label changes with rationale
|
||||
|
||||
### C) Find Similar Issues & Past Fixes
|
||||
- Search for similar issues using `gh issue list --search "keywords" --state all --json number,title,state,closedAt`
|
||||
- Identify patterns: duplicate issues, related bugs, or similar feature requests
|
||||
- For closed issues, find linked PRs that fixed them: check `linkedPullRequests` in issue data
|
||||
- Provide 3-5 examples of similar issues with format: `#<number> - <title> (closed by PR #<pr>)` or `(still open)`
|
||||
|
||||
### D) Identify Subject Matter Experts
|
||||
- Use git blame/log to find who fixed similar issues in the past
|
||||
- Search for PR authors who touched relevant files: `git log --all --format='%aN' -- <file_paths> | sort | uniq -c | sort -rn | head -5`
|
||||
- Check issue/PR history for frequent contributors to the affected module
|
||||
- Suggest 2-3 potential assignees with context: `@<username> - <reason>` (e.g., "fixed similar rendering bug in #12345", "maintains FancyZones module")
|
||||
|
||||
### E) Semantic Search for Related Work
|
||||
- Use semantic_search tool to find similar issues, code patterns, or past discussions
|
||||
- Search queries should include: issue keywords, module names, error messages, feature descriptions
|
||||
- Cross-reference semantic results with GitHub issue search for comprehensive coverage
|
||||
|
||||
**Output format for Suggested Actions section in overview.md:**
|
||||
```markdown
|
||||
## Suggested Actions
|
||||
|
||||
### Clarifying Questions (if Clarity <50)
|
||||
Post these questions as issue comment to gather missing information:
|
||||
1. <question>
|
||||
2. <question>
|
||||
3. <question>
|
||||
|
||||
**Recommended label**: `Needs-Author-Feedback`
|
||||
|
||||
### Label Recommendations
|
||||
- Add: `<label>` - <reason>
|
||||
- Remove: `<label>` - <reason>
|
||||
- Current labels are appropriate ✓
|
||||
|
||||
### Similar Issues Found
|
||||
1. #<number> - <title> (<state>, closed by PR #<pr> on <date>)
|
||||
2. #<number> - <title> (<state>)
|
||||
...
|
||||
|
||||
### Potential Assignees
|
||||
- @<username> - <reason>
|
||||
- @<username> - <reason>
|
||||
|
||||
### Related Code/Discussions
|
||||
- <semantic search findings>
|
||||
```
|
||||
|
||||
# IMPLEMENTATION-PLAN.MD
|
||||
1) **Problem Framing** — restate problem; current vs expected; scope boundaries.
|
||||
2) **Layers & Files** — layers (UI/domain/data/infra/build). For each, list **files/dirs to modify** and **new files** (exact paths + why). Prefer repo patterns; cite examples/PRs.
|
||||
3) **Pattern Choices** — reuse existing; if new, justify trade-offs & transition.
|
||||
4) **Fundamentals** (brief plan or N/A + reason):
|
||||
- Performance (hot paths, allocs, caching/streaming)
|
||||
- Security (validation, authN/Z, secrets, SSRF/XSS/CSRF)
|
||||
- G11N/L10N (resources, number/date, pluralization)
|
||||
- Compatibility (public APIs, formats, OS/runtime/toolchain)
|
||||
- Extensibility (DI seams, options/flags, plugin points)
|
||||
- Accessibility (roles, labels, focus, keyboard, contrast)
|
||||
- SOLID & repo conventions (naming, folders, dependency direction)
|
||||
5) **Logging & Exception Handling**
|
||||
- Where to log; levels; structured fields; correlation/traces.
|
||||
- What to catch vs rethrow; retries/backoff; user-visible errors.
|
||||
- **Privacy**: never log secrets/PII; redaction policy.
|
||||
6) **Telemetry (optional — business metrics only)**
|
||||
- Events/metrics (name, when, props); success signal; privacy/sampling; dashboards/alerts.
|
||||
7) **Risks & Mitigations** — flags/canary/shadow-write/config guards.
|
||||
8) **Task Breakdown (agent-ready)** — table (leave a blank line before the header so Markdown renders correctly):
|
||||
|
||||
| Task | Intent | Files/Areas | Steps | Tests (brief) | Owner (Agent/Human) | Human interaction needed? (why) |
|
||||
|---|---|---|---|---|---|---|
|
||||
|
||||
9) **Tests to Add (only)**
|
||||
- **Unit**: targets, cases (success/edge/error), mocks/fixtures, path, notes.
|
||||
- **UI** (if applicable): flows, locator strategy, env/data/flags, path, flake mitigation.
|
||||
Reference in New Issue
Block a user