Skip to content

Commit 4058efc

Browse files
Group module standards with reference documentation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent 779132c commit 4058efc

13 files changed

Lines changed: 96 additions & 107 deletions

docs/content/Modules/Catalog/index.md

Lines changed: 0 additions & 23 deletions
This file was deleted.

docs/content/Modules/index.md

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
1-
# Module development foundations
1+
# Modules
22

3-
Process-PSModule is the framework for building, testing, versioning, documenting, and publishing PowerShell modules. These foundations define the repository, source, test, and release conventions that the framework supports and validates.
3+
This page indexes modules maintained in the PSModule organization and what each module does.
44

5-
Start with the [Process-PSModule overview](../index.md) to understand the workflow. Use these pages when creating or maintaining a module that runs through it.
5+
Modules are separate from the [Process-PSModule framework](../index.md). Use the framework documentation to build and release a module; use this page to discover the modules available to install and use.
66

7-
| Page | Use it for |
8-
| --- | --- |
9-
| [Repository Standard](Repository-Standard.md) | Creating a module repository with the required metadata, files, and framework wiring. |
10-
| [PowerShell module standard](Standards.md) | Structuring source code, designing functions, and applying module-specific conventions. |
11-
| [Module types](Module-Types.md) | Applying conventions for integration (API) and data modules. |
12-
| [Test Specification](Test-Specification.md) | Writing consistent, comprehensive Pester tests for module functions. |
13-
| [Versioning](Versioning.md) | Choosing semantic version changes from the module's public API impact. |
7+
## Scope
8+
9+
Each module page should capture:
10+
11+
- purpose and problem statement
12+
- install and import baseline
13+
- key exported capabilities
14+
- owner and maintenance notes
15+
- lifecycle status
16+
17+
## Module index generation
18+
19+
The module list and linked module pages are generated from PSModule repository metadata and README content, then refreshed automatically.
20+
21+
<!-- MODULE_CATALOG_START -->
22+
23+
<!-- MODULE_CATALOG_END -->

docs/content/get-started/module-bootstrap.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ A brand-new module usually has a small **load-bearing core**: the piece(s) every
99

1010
## Identify the load-bearing core first
1111

12-
What counts as "load-bearing" follows the module's archetype from [Module types](../Modules/Module-Types.md):
12+
What counts as "load-bearing" follows the module's archetype from [Module types](../reference/module-types.md):
1313

1414
- **Data modules** — the conversion pivot: `ConvertFrom-<Format>` / `ConvertTo-<Format>` (and whatever parser/serializer they wrap). Every other function (`Import-`, `Export-`, `Format-`, `Merge-`, ...) is built on top of this pivot and is meaningless without it.
1515
- **Integration (API) modules** — a [`Context`](https://github.com/PSModule/Context)-backed credential/config store, the client setup that uses it, and at least one API function that consumes the context end-to-end. Every other API function needs the same context and client to do anything.
@@ -25,7 +25,7 @@ Scope the integration branch to exactly that core, not to everything planned for
2525

2626
## After the core lands
2727

28-
Once the core has merged as `v1.0.0`, ordinary [SemVer](../Modules/Versioning.md) applies: a new function built on the stable core is a **minor** bump, a fix is a **patch** bump, and only a change to the core's own contract (signature, exported class shape, behavior) is a **major** bump. No special versioning exception is needed once the core is in place — the bootstrap phase exists only to get that core to a first release quickly.
28+
Once the core has merged as `v1.0.0`, ordinary [SemVer](../reference/versioning.md) applies: a new function built on the stable core is a **minor** bump, a fix is a **patch** bump, and only a change to the core's own contract (signature, exported class shape, behavior) is a **major** bump. No special versioning exception is needed once the core is in place — the bootstrap phase exists only to get that core to a first release quickly.
2929

3030
```mermaid
3131
gitGraph

docs/content/guides/validating-before-review.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ Do not repeat the shared workflow here. Follow the shared branch → draft PR
1717

1818
Check:
1919

20-
- the module still follows the right archetype from [Module types](../Modules/Module-Types.md)
21-
- the change respects the layout, private-helper boundaries, context rules, and SOLID guidance in [PowerShell module standard](../Modules/Standards.md)
20+
- the module still follows the right archetype from [Module types](../reference/module-types.md)
21+
- the change respects the layout, private-helper boundaries, context rules, and SOLID guidance in [PowerShell module standard](../reference/powershell-module-standard.md)
2222
- the function belongs in this module instead of a different module, a shared helper, or a follow-up issue
2323

2424
A human contributor or agent should be able to explain why this change belongs in this module, in this shape, without inventing new local rules.
@@ -29,8 +29,8 @@ Do not repeat the shared workflow here. Follow the shared branch → draft PR
2929

3030
Check:
3131

32-
- `README.md` still answers the start-page questions and reflects any user-visible behavior, prerequisites, or setup changes from [Repository Standard](../Modules/Repository-Standard.md#readme-default)
33-
- the relevant public command-group overview page (`src/functions/public/<Group>/<Group>.md`) exists or is updated when the change affects that group's purpose or usage, per [PowerShell module standard](../Modules/Standards.md#repository-layout)
32+
- `README.md` still answers the start-page questions and reflects any user-visible behavior, prerequisites, or setup changes from [Repository Standard](../reference/repository-standard.md#readme-default)
33+
- the relevant public command-group overview page (`src/functions/public/<Group>/<Group>.md`) exists or is updated when the change affects that group's purpose or usage, per [PowerShell module standard](../reference/powershell-module-standard.md#repository-layout)
3434
- any module-level documentation under `docs/` or other published surfaces is updated when the change adds or changes guidance that should not live only in comment-based help
3535

3636
If the change teaches the user something new, confirm that the user can discover it from the published documentation surfaces, not only from the diff.
@@ -42,7 +42,7 @@ Do not repeat the shared workflow here. Follow the shared branch → draft PR
4242
Check:
4343

4444
- public functions live under `src/functions/public/<Group>/` and private helpers live under `src/functions/private/<Group>/`
45-
- file placement, grouping, and exported surface match [Structuring your module](structuring-your-module.md) and the layout rules in [PowerShell module standard](../Modules/Standards.md#repository-layout)
45+
- file placement, grouping, and exported surface match [Structuring your module](structuring-your-module.md) and the layout rules in [PowerShell module standard](../reference/powershell-module-standard.md#repository-layout)
4646
- there are no nested helper functions, multi-function files, or naming shortcuts that break the "one declaration per file" rule
4747

4848
This step is about shape, not behavior: the goal is that a reader or tool can find the module surface and its helpers exactly where PSModule expects them.
@@ -66,7 +66,7 @@ Do not repeat the shared workflow here. Follow the shared branch → draft PR
6666
Check:
6767

6868
- advanced-function structure, parameter typing and validation, `ShouldProcess`, output behavior, and error handling align with [MSX PowerShell](https://msx.no/docs/Coding-Standards/PowerShell/) and [MSX PowerShell Functions](https://msx.no/docs/Coding-Standards/PowerShell/Functions/)
69-
- the code also satisfies the PSModule-specific conventions in [PowerShell module standard](../Modules/Standards.md), especially around private helpers, context handling, and repository layout
69+
- the code also satisfies the PSModule-specific conventions in [PowerShell module standard](../reference/powershell-module-standard.md), especially around private helpers, context handling, and repository layout
7070
- PSScriptAnalyzer warnings are addressed or intentionally justified, but review does not stop there; also look for awkward parameter design, leaky transport details, non-idiomatic output, or code that technically passes lint but is not good PowerShell
7171

7272
PSScriptAnalyzer is part of the validation loop, not the whole loop.
@@ -87,8 +87,8 @@ Do not repeat the shared workflow here. Follow the shared branch → draft PR
8787

8888
- [MSX Workflow Build step](https://msx.no/docs/Ways-of-Working/Workflow/#build)
8989
- [MSX Implement guidance](https://msx.no/docs/Agents/implement/)
90-
- [PowerShell module standard](../Modules/Standards.md)
91-
- [Module types](../Modules/Module-Types.md)
90+
- [PowerShell module standard](../reference/powershell-module-standard.md)
91+
- [Module types](../reference/module-types.md)
9292
- [Structuring your module](structuring-your-module.md)
93-
- [Repository Standard](../Modules/Repository-Standard.md)
93+
- [Repository Standard](../reference/repository-standard.md)
9494
- [MSX Coding Standards](https://msx.no/docs/Coding-Standards/)

docs/content/guides/versioning-and-releases.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,4 @@ pattern used for larger efforts.
7474

7575
- [Your first release](../get-started/your-first-release.md) — the pull request flow end-to-end.
7676
- [Pipeline stages](../reference/pipeline-stages.md#publish-module) — what the publish job does.
77-
- [Versioning](../Modules/Versioning.md) — the PSModule versioning policy.
77+
- [Versioning](../reference/versioning.md) — the PSModule versioning policy.

docs/content/index.md

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,6 @@ New to Process-PSModule? Work through these in order.
2525
| [Repository setup](get-started/repository-setup.md) | Configure GitHub Pages, the PowerShell Gallery API key, permissions, and the caller workflow. |
2626
| [Your first release](get-started/your-first-release.md) | The pull request flow, version labels, and what happens on merge. |
2727

28-
## Module development foundations
29-
30-
The framework automates a module's lifecycle; these conventions define the module it builds and releases.
31-
32-
| Page | Description |
33-
| --- | --- |
34-
| [Module development foundations](Modules/index.md) | The full set of module-authoring conventions supported by the framework. |
35-
| [Repository Standard](Modules/Repository-Standard.md) | Required repository files, metadata, onboarding, and workflow wiring. |
36-
| [PowerShell module standard](Modules/Standards.md) | Source layout, function design, and module-specific implementation conventions. |
37-
| [Module types](Modules/Module-Types.md) | Conventions for integration (API) and data modules. |
38-
| [Test Specification](Modules/Test-Specification.md) | Consistent Pester test structure and coverage expectations. |
39-
| [Versioning](Modules/Versioning.md) | Semantic version changes based on public API impact. |
40-
4128
## Guides
4229

4330
Task-oriented deep dives into the pipeline's functionality.
@@ -54,10 +41,16 @@ Task-oriented deep dives into the pipeline's functionality.
5441

5542
## Reference
5643

57-
Look up the exact contract.
44+
Look up the framework's exact contracts and the module-development standards it supports.
5845

5946
| Page | Description |
6047
| --- | --- |
48+
| [Module development foundations](reference/module-development-foundations.md) | The full set of module-authoring conventions supported by the framework. |
49+
| [Repository Standard](reference/repository-standard.md) | Required repository files, metadata, onboarding, and workflow wiring. |
50+
| [PowerShell module standard](reference/powershell-module-standard.md) | Source layout, function design, and module-specific implementation conventions. |
51+
| [Module types](reference/module-types.md) | Conventions for integration (API) and data modules. |
52+
| [Test Specification](reference/test-specification.md) | Consistent Pester test structure and coverage expectations. |
53+
| [Versioning](reference/versioning.md) | Semantic version changes based on public API impact. |
6154
| [Settings](reference/settings.md) | Every available setting in `.github/PSModule.yml` and the full defaults. |
6255
| [Workflow inputs](reference/workflow-inputs.md) | Inputs, secrets, and permissions of the reusable workflow. |
6356
| [Pipeline stages](reference/pipeline-stages.md) | The job-by-job breakdown, from Plan through Publish Docs. |
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Module development foundations
2+
3+
Process-PSModule is the framework for building, testing, versioning, documenting, and publishing PowerShell modules. These foundations define the repository, source, test, and release conventions that the framework supports and validates.
4+
5+
Start with the [Process-PSModule overview](../index.md) to understand the workflow. Use these pages when creating or maintaining a module that runs through it.
6+
7+
| Page | Use it for |
8+
| --- | --- |
9+
| [Repository Standard](repository-standard.md) | Creating a module repository with the required metadata, files, and framework wiring. |
10+
| [PowerShell module standard](powershell-module-standard.md) | Structuring source code, designing functions, and applying module-specific conventions. |
11+
| [Module types](module-types.md) | Applying conventions for integration (API) and data modules. |
12+
| [Test Specification](test-specification.md) | Writing consistent, comprehensive Pester tests for module functions. |
13+
| [Versioning](versioning.md) | Choosing semantic version changes from the module's public API impact. |
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Module types
22

33
Most PSModule modules fall into one of a few archetypes. The general rules in
4-
[PowerShell module standard](Standards.md) and [MSX PowerShell Standards](https://msx.no/docs/Coding-Standards/PowerShell/) always apply; this
4+
[PowerShell module standard](powershell-module-standard.md) and [MSX PowerShell Standards](https://msx.no/docs/Coding-Standards/PowerShell/) always apply; this
55
page adds the conventions that are specific to a module's type so that modules of the same kind feel
66
the same to use.
77

@@ -41,7 +41,7 @@ or hide this abstraction is a design choice:
4141

4242
- **Private transport** (common): Keep REST, GraphQL, and HTTP helpers private. Public functions
4343
accept resolved inputs and typed objects. This follows the Dependency Inversion rule from
44-
[Standards](Standards.md#solid-applied) applied to the network boundary.
44+
[Standards](powershell-module-standard.md#solid-applied) applied to the network boundary.
4545
- **Public transport**: Expose REST or GraphQL functions publicly for power users or module
4646
composition.
4747
- **Public Context**: Expose the `Context` module as public so users can configure and manage
@@ -102,5 +102,5 @@ The `Hashtable` module demonstrates the full set: `ConvertFrom-Hashtable`, `Conv
102102

103103
## Where this connects
104104

105-
- [PowerShell module standard](Standards.md): layout, private functions, and the mandatory context parameter.
106-
- [Repository Standard](Repository-Standard.md): repository files, README shape, and agent onboarding.
105+
- [PowerShell module standard](powershell-module-standard.md): layout, private functions, and the mandatory context parameter.
106+
- [Repository Standard](repository-standard.md): repository files, README shape, and agent onboarding.
File renamed without changes.

docs/content/Modules/Repository-Standard.md renamed to docs/content/reference/repository-standard.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This is the PSModule organization's Repository Standard. It applies to the PSMod
44

55
This standard operates at the same altitude as the [MSX Enterprise Repository Standard](https://msx.no/docs/Ways-of-Working/Repository-Standard/): MSX sets the enterprise-wide default, and this standard adds to and adjusts that default for PowerShell module repositories. Rules this standard does not change are inherited from the MSX default; where this standard adds or overrides a rule, it governs PowerShell module repositories.
66

7-
The implementation standard still lives in [PowerShell module standard](Standards.md). Type-specific conventions for integration (API) and data modules live in [Module types](Module-Types.md). This page covers the repository standard for module repositories: files, metadata, README shape, release integration, placeholder handling, shared community files, and managed-file distribution.
7+
The implementation standard still lives in [PowerShell module standard](powershell-module-standard.md). Type-specific conventions for integration (API) and data modules live in [Module types](module-types.md). This page covers the repository standard for module repositories: files, metadata, README shape, release integration, placeholder handling, shared community files, and managed-file distribution.
88

99
## Scope
1010

@@ -106,7 +106,7 @@ Module repositories use the PSModule framework layout:
106106
| `tests/` | Pester tests and test data. |
107107
| `icon/` | Module icon assets. |
108108

109-
Detailed source layout rules live in [PowerShell module standard](Standards.md#repository-layout).
109+
Detailed source layout rules live in [PowerShell module standard](powershell-module-standard.md#repository-layout).
110110

111111
### Caller workflow and reusable workflow
112112

@@ -227,7 +227,7 @@ Dependabot PRs still go through normal review. Automated dependency updates are
227227

228228
Dependabot's valid `package-ecosystem` values are enumerated in its configuration parser ([`common/lib/dependabot/config/file.rb`](https://github.com/dependabot/dependabot-core/blob/main/common/lib/dependabot/config/file.rb)) and listed in the [Dependabot options reference](https://docs.github.com/en/code-security/reference/supply-chain-security/dependabot-options-reference#package-ecosystem). Configure only values from that list: `powershell` is not among them, and an unsupported value makes `.github/dependabot.yml` invalid, which puts the repository's whole Dependabot configuration at risk, including the `github-actions` entry that does work.
229229

230-
PowerShell module dependencies are therefore declared with `#Requires -Modules` in the function files that use them, as described in [PowerShell module standard](Standards.md), and the build collects them into the compiled manifest. Keeping those declarations current is a review responsibility.
230+
PowerShell module dependencies are therefore declared with `#Requires -Modules` in the function files that use them, as described in [PowerShell module standard](powershell-module-standard.md), and the build collects them into the compiled manifest. Keeping those declarations current is a review responsibility.
231231

232232
A PowerShell ecosystem is proposed in [dependabot/dependabot-core#15501](https://github.com/dependabot/dependabot-core/issues/15501) and implemented in [dependabot/dependabot-core#15666](https://github.com/dependabot/dependabot-core/pull/15666), covering PowerShell's native declarations — `#Requires -Modules` in `.ps1` and `.psm1` files, and `RequiredModules` in a `.psd1` manifest — resolved against the PowerShell Gallery. Adopt it once it ships and `powershell` appears in the options reference, updating this section and the `dependabot.yml` that `Template-PSModule` distributes together.
233233

@@ -379,7 +379,7 @@ Default expectations:
379379
- Source changes under `src/` are module-impacting and should trigger the full module workflow.
380380
- README and documentation changes should update the site without pretending to be module API changes.
381381

382-
See [Versioning](Versioning.md) for semantic version rules and [PowerShell module standard](Standards.md#cicd-pipeline) for the Process-PSModule pipeline.
382+
See [Versioning](versioning.md) for semantic version rules and [PowerShell module standard](powershell-module-standard.md#cicd-pipeline) for the Process-PSModule pipeline.
383383

384384
## Template maintenance
385385

0 commit comments

Comments
 (0)