This document describes PowerToys' automated community engagement systems and contributor recognition practices. It covers the FabricBot automation that manages issues and pull requests, the stale issue management workflow, special commands available to maintainers and contributors, and how the project formally recognizes community contributions.
For information about filing issues and creating pull requests, see Issue and Pull Request Templates. For general contribution guidelines and development workflow, see the main Contributing Guide().
PowerToys uses the Microsoft GitHub Policy Service bot (commonly called "FabricBot") to automate issue and pull request management. The bot's behavior is defined declaratively in the repository's policy configuration file.
The automation system consists of two main components:
Sources: .github/policies/resourceManagement.yml1-258
FabricBot monitors specific events and executes actions based on pattern matching and conditions. Key event responders include:
| Event Type | Condition | Action | Purpose |
|---|---|---|---|
Issue_Comment + Created | Author comments + has Needs-Author-Feedback label | Remove Needs-Author-Feedback, add Needs-Triage and Needs-Team-Response | Re-engage team when author provides requested information |
Issue_Comment or Issues | Any activity on issue with Status-No recent activity | Remove Status-No recent activity label | Clear stale marker when discussion resumes |
Pull_Request | PR opened | Add Status-In progress label | Track active development work |
Issue_Comment | Any comment posted | Run cleanEmailReply action | Remove email signature artifacts from comments |
Sources: .github/policies/resourceManagement.yml59-106
Maintainers and collaborators can use special commands in issue/PR comments to trigger automated workflows. These commands are implemented as FabricBot event responders that match comment text patterns.
Command Details:
/bugreport or /reportbug
Member, Owner, or Collaborator associationNeeds-Author-Feedback labelNeeds-Triage and Needs-Team-Response labels/feedbackhub
Owner, Member, or Collaborator associationResolution-Please File on Feedback Hub label/dup or /duplicate (with issue number or URL)
/dup(licate|e)?(\s+of)?\s+(#[\d]+|https)Resolution-Duplicate label/needinfo
Needs-Author-Feedback label/helped
Resolution-Helped User label/loc
Owner or Member association (internal team only)Loc-Sent To Team labelSources: .github/policies/resourceManagement.yml108-235 doc/devdocs/commands.md1-24
PowerToys uses a three-stage workflow to manage inactive issues, ensuring that issues requiring author feedback don't remain open indefinitely.
FabricBot runs scheduled searches every hour at 6:00 AM/PM to identify and act on stale issues:
Stage 1: Mark as Stale (5 days of inactivity)
isIssue and isOpenNeeds-Author-Feedback labelStatus-No recent activity labelnoActivitySince: 5 daysStatus-No recent activity labelStage 2: Close Stale Issue (10 days total inactivity)
isIssue and isOpenNeeds-Author-Feedback AND Status-No recent activity labelsnoActivitySince: 5 days (5 additional days after stale marking)Stage 3: Close Duplicate Issues (1 day after marking)
isIssue and isOpenResolution-Duplicate labelnoActivitySince: 1 daySources: .github/policies/resourceManagement.yml9-58
PowerToys maintains formal recognition of significant community contributions through the COMMUNITY.md file, which serves as a permanent record of contributors who have made substantial impacts on the project.
PowerToys recognizes contributors who have made significant, sustained contributions. These are documented in COMMUNITY.md8-83 with specific attribution for their work:
| Contributor | GitHub Handle | Major Contributions |
|---|---|---|
| Christian Gaarden Gaardmark | @cgaarden | Created New+ utility |
| Damien Leroy | @damienleroy | Developed and contributed Quick Accent |
| David Rayment | @daverayment | Peek features and bug fixes |
| Davide Giacometti | @davidegiacometti | Multiple utilities, features, ARM64 porting |
| Heiko | @htcfreek | Extensive triaging and issue management |
| Jiลรญ Polรกลกek | @jiripolasek | Command Palette features (drag & drop, themes, extensions) |
| Joe Finney | @TheJoeFin | Text Extractor development |
| Martin Chrzan | @martinchrzan | Color Picker utility |
| Michael Clayton | @mikeclayton | Mouse Jump tool and FancyMouse utility |
| Noraa Junker | @Noraa-Junker | File Explorer preview handlers, triaging |
Sources: COMMUNITY.md8-83
PowerToys acknowledges open-source projects that served as foundations for utilities:
Sources: COMMUNITY.md84-98
The COMMUNITY.md file is manually maintained by the PowerToys core team. Updates typically occur:
Sources: COMMUNITY.md1-236
FabricBot includes pattern matching to detect when contributors express interest in helping with issues, automatically providing guidance.
Pattern Matching:
"I(( would|'d) (like|love|be happy)| want) (to help|helping|to contribute|contributing|to implement|implementing|to fix|fixing)"Automated Response:
"Hi! Your last comment indicates to our system, that you might want to contribute to this feature/fix this bug. Thank you! Please make us aware on our <FileRef file-url="https://github.com/microsoft/PowerToys/blob/6c691f59/\"Would you like to contribute to PowerToys?" thread" undefined file-path=""Would you like to contribute to PowerToys?" thread">Hii as we don't see all the comments.
I'm a bot (beep!) so please excuse any mistakes I may make"
Sources: .github/policies/resourceManagement.yml236-244 CONTRIBUTING.md34-36
PowerToys uses a comprehensive labeling system to track issue states, categories, and resolution status. FabricBot automatically manages many of these labels based on activity.
| Label Category | Examples | Automated By FabricBot |
|---|---|---|
| Triage Status | Needs-Triage, Needs-Team-Response, Needs-Author-Feedback | โ Yes |
| Activity Status | Status-No recent activity, Status-In progress | โ Yes |
| Issue Type | Issue-Bug, Issue-Feature, Issue-Translation, Issue-Docs | โ Manual (via issue templates) |
| Resolution | Resolution-Duplicate, Resolution-Helped User, Resolution-Please File on Feedback Hub | โ Yes (via commands) |
| Localization | Area-Localization, Issue-Translation, Loc-Sent To Team | โ Partial |
| Module/Product | Product-Workspaces, Product-PowerRename, etc. | โ Partial (based on templates) |
FabricBot can automatically apply product-specific labels based on issue template selections:
Sources: .github/policies/resourceManagement.yml245-255 .github/ISSUE_TEMPLATE/bug_report.yml44-86
The community recognition and automation system integrates with PowerToys' broader GitHub infrastructure to create a cohesive contribution experience.
Critical automation files are protected via CODEOWNERS to prevent accidental changes:
# Protect .github folder except spell-check rules
/.github/ @microsoft/powertoys-code-owners
/.github/actions/spell-check/
# Locking down pipeline folder
/.pipelines/ @microsoft/powertoys-code-owners
Changes to resourceManagement.yml and other policy files require review from @microsoft/powertoys-code-owners team members.
Sources: .github/CODEOWNERS1-17
FabricBot automation works in conjunction with structured issue templates to ensure consistent issue filing:
Bug Reports (.github/ISSUE_TEMPLATE/bug_report.yml):
Feature Requests (.github/ISSUE_TEMPLATE/feature_request.yml):
Translation Issues (.github/ISSUE_TEMPLATE/translation_issue.yml):
Area-Localization, Issue-Translation/loc command escalates to internal teamSources: .github/ISSUE_TEMPLATE/bug_report.yml1-134 .github/ISSUE_TEMPLATE/feature_request.yml1-28 .github/ISSUE_TEMPLATE/translation_issue.yml1-84
FabricBot automatically marks PRs with Status-In progress label when opened, helping track active development work:
Sources: .github/policies/resourceManagement.yml97-101
PowerToys' community recognition system combines automated tools with human curation:
/bugreport, /dup, /helped, etc.) provide maintainers with quick response toolsThis multi-layered approach enables PowerToys to maintain high-quality community engagement at scale while recognizing the individuals and projects that make it possible.
Sources: COMMUNITY.md1-236 .github/policies/resourceManagement.yml1-258 CONTRIBUTING.md1-73 README.md314-316
Refresh this wiki
This wiki was recently refreshed. Please wait 4 days to refresh again.