Thank you for your interest in contributing to Power Platform ToolBox! This document provides guidelines and instructions for contributing.
Be respectful and considerate of others. We aim to build a welcoming and inclusive community.
If you find a bug, please create an issue with:
- A clear title and description
- Steps to reproduce the issue
- Expected vs actual behavior
- Screenshots if applicable
- Your environment (OS, Node version, etc.)
Feature suggestions are welcome! Please create an issue describing:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
- Why this would be valuable to users
Important
All pull request submitted should be for the dev branch
- Fork the repository
- Create a new branch following the naming convention:
- For new features:
feature/<short-description>(e.g.,feature/add-connection-export) - For bug fixes:
fix/<issue-description>(e.g.,fix/tool-loading-error) - For documentation:
docs/<description>(e.g.,docs/update-api-guide) - For refactoring:
refactor/<description>(e.g.,refactor/tool-manager) - For chores/maintenance:
chore/<description>(e.g.,chore/update-dependencies)
- For new features:
- Make your changes
- Run tests and linting:
pnpm run lint && pnpm run build - Commit your changes with a descriptive message following conventional commits format
- Push to your fork:
git push origin <branch-name> - Create a pull request with a clear title and description:
- PR Title format:
[Type] Brief description(e.g.,[Feature] Add connection export functionality) - PR Types:
[Feature],[Fix],[Docs],[Refactor],[Chore],[Test] - Include a description of what changed and why
- Reference any related issues using
#issue-number
- PR Title format:
Checkout TOOLBOX_DEV.md for more information.
- Use TypeScript for all new code
- Follow existing code style and conventions
- Add comments for complex logic
- Use meaningful variable and function names
- Keep functions small and focused
- Enable strict mode
- Avoid using
anywhen possible - Define interfaces for complex objects
- Export types that may be used by tools
Use the following prefixes for branch names:
feat/- For new features (e.g.,feat/add-connection-export)fix/- For bug fixes (e.g.,fix/tool-loading-error)docs/- For documentation changes (e.g.,docs/update-api-guide)refactor/- For code refactoring (e.g.,refactor/tool-manager)chore/- For maintenance tasks (e.g.,chore/update-dependencies)test/- For test additions or updates (e.g.,test/add-unit-tests)
Follow the Conventional Commits specification:
Format: <type>(<scope>): <subject>
Examples:
feat: add connection export functionalityfeat(tools): add tool verification systemfix: resolve tool loading error on startupfix(connections): handle invalid connection URLsdocs: update README with new API examplesdocs(api): add missing type definitionsstyle: format code according to ESLint rulesrefactor: restructure tool manager for better maintainabilityrefactor(auth): simplify authentication flowtest: add unit tests for settings managerchore: update dependencies to latest versionschore(build): update TypeScript configuration
Types:
feat- New featuresfix- Bug fixesdocs- Documentation changesstyle- Code style changes (formatting, etc.)refactor- Code refactoring without changing functionalitytest- Test additions or updateschore- Maintenance tasks, dependency updates, build changesperf- Performance improvementsci- CI/CD changes
Currently, we're establishing the testing infrastructure. When adding new features:
- Consider how it can be tested
- Manually test your changes
- Document test scenarios
When adding new features:
- Update README.md if it affects user-facing functionality
- Update TOOLBOX_DEV.md for ToolBox related changes
- Update ARCHITECTURE.md for architectural changes
- Add inline code comments for complex logic
- Update type definitions in
packages/types/& publish a new version to npm
All documentation files are located in the docs/ directory.
- PR --> dev branch --> automated nightly pre-release
- Testing performed on the new changes
- dev branch --> main branch --> automated release
If you have questions, feel free to:
- Open an issue for discussion
- Reach out to maintainers
Thank you for contributing!