Home · Modules · Installation · Contributing · GitHub
Contributing
Where code lives
Each module is a self-contained directory under modules/:
modules/<Module>/
├── <Module>.psd1 # manifest and exported members
├── <Module>.psm1 # loader and Export-ModuleMember
├── README.md
├── CHANGELOG.md
└── Public/*.ps1 # one file per topic; functions are dot-sourced
Adding or changing a command
- Add or edit a function under the owning module’s
Public/. - Export it from both the
.psm1Export-ModuleMemberlist and the.psd1FunctionsToExportlist. - Include comment-based help and use
SupportsShouldProcessfor destructive or state-changing operations. - Update the module README command table and add an entry under
[Unreleased]in the module’sCHANGELOG.md.
Do not bump ModuleVersion for a content change. A module’s version changes
only when a release is cut — see Releasing. Between releases the
manifest version stays fixed and changes accumulate under [Unreleased].
Releasing
A release is the only time a ModuleVersion changes:
- Choose the module and its new semantic version.
- Set
ModuleVersionin the.psd1and the**Version:**header in the module README (and the version shown in the root README and documentation site). - Move the module’s
[Unreleased]notes into a dated version section in itsCHANGELOG.md. - Commit, tag the release as
<Module>-v<version>, and publish.
Public-content policy
Public modules must not reference internal-only tooling, private endpoints, organization-specific systems, or credentials. Prefer parameters and environment variables over hardcoded hosts or feeds.
Public modules do not export command aliases. Aliases are a personal
preference and are added downstream by a profile or overlay, not shipped by the
module (so AliasesToExport stays empty and the .psm1 defines no Set-Alias).
Parameter [Alias()] attributes are unaffected — those are part of a command’s
contract, not command aliases.
Validate
.\build\Test-Modules.ps1
This builds every module, validates the manifest, imports and removes it, and scans module sources, documentation, and READMEs for forbidden markers. Fix any reported issue before opening a pull request.