This page documents the GitHub issue templates, pull request template, automated bot policies, and slash-command system used to manage contributions and bug reports in the PowerToys repository. For general contributing philosophy and workflow (filing issues before starting work, spec requirements, etc.), see the parent page 8 - Contributing to PowerToys.
The repository disables blank (free-form) issues entirely. When a contributor opens a new issue, GitHub presents a structured template chooser. The configuration is defined in .github/ISSUE_TEMPLATE/config.yml1-9
This directs users to documentation before they can file a blank issue, reducing noise from questions that are already answered.
The four active issue templates are:
| Template file | Display name | Auto-applied labels |
|---|---|---|
bug_report.yml | ๐ท๏ธ Bug report | Issue-Bug, Needs-Triage |
feature_request.yml | โญ Feature or enhancement request | Needs-Triage |
translation_issue.yml | ๐ Localization/Translation issue | Issue-Bug, Area-Localization, Issue-Translation, Needs-Triage |
documentation-issue.yml | ๐ Documentation Issue | Issue-Docs, Needs-Triage |
Sources: .github/ISSUE_TEMPLATE/config.yml1-9 .github/ISSUE_TEMPLATE/bug_report.yml1-6 .github/ISSUE_TEMPLATE/feature_request.yml1-6 .github/ISSUE_TEMPLATE/translation_issue.yml1-8 .github/ISSUE_TEMPLATE/documentation-issue.yml1-5
Defined in .github/ISSUE_TEMPLATE/bug_report.yml this template enforces structured data collection before submission.
Required fields:
| Field ID | Type | Purpose |
|---|---|---|
version | input | PowerToys version (e.g. 0.87.0) |
installed | dropdown (multi) | Installation method |
| (no id) | dropdown (multi) | Affected area(s) |
| (no id) | textarea | Steps to reproduce |
Optional fields:
| Field ID | Type | Purpose |
|---|---|---|
| (no id) | textarea | Expected behavior |
| (no id) | textarea | Actual behavior |
additionalInfo | textarea | OS version, .NET version, locale, elevation state |
| (no id) | textarea | Other interacting software |
The template opens with two inline markdown blocks. The first asks users to search for existing issues. The second lists currently known high-volume issues to suppress duplicate reports .github/ISSUE_TEMPLATE/bug_report.yml7-16
The installation method dropdown includes:
GitHub, PowerToys auto-update, Microsoft Store, WinGet, Chocolatey, Scoop, Dev build in Visual Studio, OtherThe affected area dropdown covers every shipped module, plus cross-cutting areas like General, Installer, Settings, and System tray interaction .github/ISSUE_TEMPLATE/bug_report.yml49-84
Sources: .github/ISSUE_TEMPLATE/bug_report.yml1-133
Defined in .github/ISSUE_TEMPLATE/feature_request.yml this template is intentionally lightweight. It requires only two fields:
| Field | Required | Description |
|---|---|---|
| Description of the new feature / enhancement | Yes | What the expected behavior is |
| Scenario when this would be used? | Yes | Why it matters to a power user's workflow |
| Supporting information | No | Links, research, data |
A trailing markdown block reminds contributors: "Please limit one request per issue." .github/ISSUE_TEMPLATE/feature_request.yml25-27
The template sets the GitHub issue type to Feature .github/ISSUE_TEMPLATE/feature_request.yml3
Sources: .github/ISSUE_TEMPLATE/feature_request.yml1-28
Defined in .github/ISSUE_TEMPLATE/translation_issue.yml this template captures enough context for the internal Microsoft localization team to act on a report. Community PRs for localization are not accepted; only issue reports are.
All fields are required except the "why" explanation:
| Field | Required | Description |
|---|---|---|
| PowerToys version | Yes | input |
| Utility with translation issue | Yes | dropdown โ same module list as bug report |
| Language affected | Yes | input (e.g. German) |
| Actual phrase(s) | Yes | What the incorrect text says; screenshot encouraged |
| Expected phrase(s) | Yes | What the correct text should be |
| Why the current translation is wrong | Yes | Justification |
Sources: .github/ISSUE_TEMPLATE/translation_issue.yml1-84
Defined in .github/ISSUE_TEMPLATE/documentation-issue.yml this is the simplest template. It has a single required textarea field: "Describe the requested doc changes".
Auto-applied labels: Issue-Docs, Needs-Triage.
Sources: .github/ISSUE_TEMPLATE/documentation-issue.yml1-13
Defined in .github/pull_request_template.md every new PR is pre-filled with the following structure:
PR Checklist items:
| Checklist item | Notes |
|---|---|
Closes: #xxx | Links the PR to a resolved issue |
| Communication | Work has been agreed with core contributors |
| Tests | Added/updated and all pass |
| Localization | All user-facing strings are localizable |
| Dev docs | Added/updated |
| New binaries โ JSON for signing | `.pipelines/ESRPSigning_core.json` |
| New binaries โ WXS for installer | `installer/PowerToysSetup/Product.wxs` |
| New binaries โ YML for CI (test projects) | `.pipelines/ci/templates/build-powertoys-steps.yml` |
| New binaries โ YML for signed pipeline | `.pipelines/release.yml` |
| Documentation updated | File a PR on the docs repo and link it |
The new-binaries section is the most operationally complex. Adding a binary requires updating four separate files to keep signing, packaging, and CI consistent. See 5.4 - Build and Deployment Pipeline and 5.4.2 - Code Signing and Verification for details on those pipeline files.
Sources: .github/pull_request_template.md1-25
The repository uses the Microsoft GitHub Policy Service bot, configured in .github/policies/resourceManagement.yml The bot runs scheduled searches and responds to events in real time.
Stale issue flow diagram:
Sources: .github/policies/resourceManagement.yml10-58
The bot runs hourly (hour: 6) and executes three scheduled searches:
| Filter | Condition | Action |
|---|---|---|
Open issue + Needs-Author-Feedback + Status-No recent activity + no activity 5 days | โ | closeIssue |
Open issue + Needs-Author-Feedback + no activity 5 days + no Status-No recent activity | โ | Add Status-No recent activity label + post stale comment |
Open issue + Resolution-Duplicate + no activity 1 day | โ | Post duplicate comment + closeIssue |
Sources: .github/policies/resourceManagement.yml10-58
Bot commands are triggered by comments containing specific patterns. They are restricted to repository members, owners, or collaborators (except the contribution-detection responder, which applies to all users).
Slash command reference:
The following diagram maps each slash command to the bot's label and action sequence:
Sources: .github/policies/resourceManagement.yml59-244 doc/devdocs/commands.md1-34
The full command list with patterns and descriptions:
| Command | Pattern (regex) | Restricted | Effect |
|---|---|---|---|
/bugreport / /reportbug | \/(bugreport|reportbug) | Member/Owner/Collaborator | Requests bug report ZIP; adds Needs-Author-Feedback |
/feedbackHub | \/feedback[H|h]ub | Owner/Member/Collaborator | Redirects to Windows Feedback Hub; closes issue |
/dup / /duplicate | \/dup(licate|e)?(\s+of)?\s+(\#[\d]+|https) | Owner/Member/Collaborator | Marks as duplicate; closes issue |
/needinfo | \/needinfo | Owner/Member/Collaborator | Requests more info from author |
/helped | \/helped | Owner/Member/Collaborator | Resolves issue as user was helped; closes |
/loc | \/loc\b | Owner/Member | Forwards localization issue to internal team |
Sources: .github/policies/resourceManagement.yml107-235 doc/devdocs/commands.md4-13
Beyond slash commands, the bot responds to structural events:
| Trigger | Condition | Action |
|---|---|---|
Issue_Comment created by issue author | Issue has Needs-Author-Feedback and is open | Remove Needs-Author-Feedback; add Needs-Triage + Needs-Team-Response |
| Any issue activity | Issue has Status-No recent activity and is not closed | Remove Status-No recent activity |
Any Issue_Comment | Issue has Status-No recent activity | Remove Status-No recent activity |
Pull_Request opened | โ | Add Status-In progress label |
Issue_Comment on any issue | โ | cleanEmailReply (strips email reply artifacts) |
Issues opened | Body matches Area(s) with issue?\nWorkspaces regex | Add Product-Workspaces label |
Issue_Comment expressing intent to contribute | Pattern match on phrasing | Post link to <FileRef file-url="https://github.com/microsoft/PowerToys/blob/6c691f59/\"Would you like to contribute?" thread" undefined file-path=""Would you like to contribute?" thread">Hii |
Sources: .github/policies/resourceManagement.yml59-256
The following diagram maps the key files in this system to their roles and interactions:
Sources: .github/ISSUE_TEMPLATE/bug_report.yml1-6 .github/ISSUE_TEMPLATE/feature_request.yml1-6 .github/ISSUE_TEMPLATE/translation_issue.yml1-8 .github/ISSUE_TEMPLATE/documentation-issue.yml1-5 .github/ISSUE_TEMPLATE/config.yml1-9 .github/pull_request_template.md1-25 .github/policies/resourceManagement.yml1-256
Refresh this wiki
This wiki was recently refreshed. Please wait 4 days to refresh again.