Thanks for your interest in contributing! This document outlines how to set up your development environment and the tools we use.
| Tool | Version | Installation |
|---|---|---|
| PowerShell | 7.1+ | brew install powershell (macOS) |
| just | latest | brew install just (macOS) |
| Tool | Purpose |
|---|---|
| Docker | Run the module in a container |
We use just as a task runner.
The default task is to run everything
justTesting — Pester
Tests are located in the tests/ directory. We use Pester v5+ for unit testing.
just testDocumentation — PlatyPS
Cmdlet documentation is generated from code comments using PlatyPS and published to GitHub Pages.
just help-updateDocumentation lives in docs/.
Run just help-update after adding or renaming parameters — it syncs structural metadata (types, parameter sets, aliases) while preserving hand-written descriptions. CI enforces docs are in sync.
Changes not handled by PlatyPS may require manual updates to specific markdown files.
We use two tools for security and code quality:
| Tool | Purpose | When |
|---|---|---|
| PSScriptAnalyzer | PowerShell linting & best practices | Local + CI |
| CodeQL | Security vulnerability scanning | CI only |
just lint # Run PSScriptAnalyzer locally
just lint-verbose # Show detailed resultsConfiguration is in PSScriptAnalyzerSettings.ps1.
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes
- Run
just checkto verify tests pass and no lint errors - Run
just help-updateif you added/modified cmdlets - Commit your changes
- Open a Pull Request
- Follow PowerShell Best Practices
- Use approved verbs for cmdlet names (
Get-Verbto see the list) - Add tests for new functionality
- Avoid inline commenting (except when necessary); instead, prefer intention-revealing code. Often a well-named function removes the need for a comment.
