Overview
PowerToys welcomes contributions from the community! Whether you’re fixing bugs, adding features, improving documentation, or helping with translations, your contributions make PowerToys better for everyone. Before you start contributing, please read this guide to understand our process and expectations.Getting Started
Before You Begin
Please follow this important rule to ensure efficient collaboration: This helps:- Avoid duplicate work
- Ensure alignment with project goals
- Get early feedback on your approach
- Prevent wasted effort
Finding Issues to Work On
- Browse existing issues: Check the GitHub issues page
- Look for “Help Wanted” label: Visit Issues labeled Help Wanted
- Comment before starting: Post on the “Would you like to contribute to PowerToys?” thread
Indicating Interest
To show which issues are important to you:- Click the [+😊] button and the 👍 icon on the issue
- Avoid comments like “+1” or “me too” (they create noise)
Types of Contributions
Code Contributions
Contribute bug fixes, new features, or improvements to existing utilities. Process:- File or find an issue describing the problem
- Discuss the approach with the team
- Get approval before writing code
- Submit a pull request
Documentation
Help improve guides, tutorials, and API documentation. What you can do:- Fix typos and clarify existing docs
- Add examples and tutorials
- Improve developer documentation
- Update outdated information
Translations
Localization is handled exclusively by Microsoft’s internal localization team. Community PRs for translations are not accepted.
- File an issue using the translation issue template
- Include the incorrect text and suggested correction
- Specify the language and utility affected
Development Setup
Prerequisites
- Operating System: Windows 10 April 2018 Update (version 1803) or newer
- Visual Studio: Visual Studio 2026 (recommended) or Visual Studio 2022 17.4+
- Required Workloads:
- Desktop Development with C++
- WinUI application development
- .NET desktop development
- Windows 10 SDK (10.0.22621.0)
- Windows 11 SDK (10.0.26100.3916)
- .NET 8 SDK
- Long paths enabled in Windows
Setting Up Your Development Environment
Fork and Clone
- Fork the PowerToys repository on GitHub
- Clone your fork locally:
Run Setup Script
Run the automated setup script (recommended):This script will:
- Enable Windows long path support (requires admin)
- Enable Windows Developer Mode (requires admin)
- Install required Visual Studio components
- Initialize git submodules
Building PowerToys
Using Visual Studio
- Open
PowerToys.slnxin Visual Studio - Select
ReleaseorDebugfrom the Solution Configuration dropdown - Press
Ctrl+Shift+Bor select Build > Build Solution - Find binaries in
x64\Release\orx64\Debug\
Some modules (PowerRename, ImageResizer, File Explorer extensions) require building and installing the full installer to function properly.
Using Command Line
PowerToys provides build scripts intools\build\:
Running Tests
Run Tests
Use Visual Studio Test Explorer:
- Press
Ctrl+E, Tto open Test Explorer - Click “Run All” to execute tests
vstest.console.exe from command lineUI Tests (Optional)
For UI testing:
- Install WinAppDriver v1.2.1
- Enable Developer Mode in Windows Settings
- Run UI test projects from Test Explorer
Pull Request Guidelines
Before Submitting a PR
PR Preparation Checklist
PR Preparation Checklist
1. Ensure Builds Succeed
1. Ensure Builds Succeed
- Build locally with no errors
- Verify exit code is 0
- Check
build.<config>.<platform>.errors.logfor issues
2. Test Your Changes
2. Test Your Changes
- Add or update unit tests
- Run all relevant tests locally
- Verify functionality manually
- Test on different Windows versions if applicable
3. Follow Coding Standards
3. Follow Coding Standards
- Match existing code style
- Follow coding guidelines
- Add XML documentation for public APIs
- Use meaningful variable names
4. Update Documentation
4. Update Documentation
- Update relevant README files
- Add inline code comments for complex logic
- Update developer docs if needed
PR Template Requirements
When opening a PR, complete the following sections:- Summary: Brief description of changes
- Closes: Link to related issue(s)
- Communication: Confirm discussion with core contributors
- Tests: Indicate tests added/updated and passing
- Localization: Confirm localizable strings
- Dev docs: Note documentation updates
- Validation: Describe how you tested the changes
PR Process
Linking Issues
Use closing keywords in your PR description:Coding Guidelines
General Principles
- Follow existing patterns: Match the style of surrounding code
- Package functionality: Create well-defined library interfaces
- Use classes: Organize code into classes with clear responsibilities
- Add tests: Include unit tests for new functionality
Code Style
PowerToys follows specific style conventions:- C++: Follow Microsoft style with 4-space indentation
- C#: Use .NET conventions with PascalCase for public members
- XAML: Use consistent spacing and naming
Logging and Telemetry
- C++: Use
spdlogfor logging - C#: Use the
Loggerclass fromCommon.UI - Telemetry: Use
Telemetry::namespace for metrics - Log Levels: Use appropriate levels (Error, Warning, Info, Debug, Trace)
Best Practices
Write Clear Code
Use descriptive names and add comments for complex logic
Test Thoroughly
Include unit tests and manual validation for all changes
Keep PRs Focused
One logical change per PR makes review easier
Document Changes
Update docs when changing behavior or adding features
Code of Conduct
This project has adopted the Microsoft Open Source Code of Conduct.Our Standards
- Be respectful: Treat all contributors with respect
- Be collaborative: Work together to solve problems
- Be inclusive: Welcome newcomers and diverse perspectives
- Be professional: Keep discussions focused and constructive
Reporting Issues
If you experience or witness unacceptable behavior:- Review the Code of Conduct FAQ
- Contact opencode@microsoft.com
Becoming a Collaborator
Active community contributors may be invited to join the PowerToys team as formal collaborators. How to become a collaborator:- Make consistent, quality contributions
- File helpful bug reports and suggestions
- Review pull requests
- Help other community members
- Update documentation
Resources
Developer Docs
Comprehensive developer documentation
GitHub Issues
Browse and file issues
Help Wanted
Find issues ready for contribution
Community
Meet the PowerToys community
Getting Help
If you need assistance:- Questions: File an issue with your question
- Bug reports: Use the bug report template
- Feature requests: Use the feature request template
- General discussion: Join conversations in existing issues
Microsoft support is limited to the resources provided in this documentation and on GitHub. For support policy details, see SUPPORT.md.