You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Rename README showcase heading Capabilities -> Usage (Examples allowed); disallow Capabilities and add to README validation.
- Each repo stands on its own: carries own governance files, no reliance on org .github fallback; README has no Contributing section (repo ships self-contained CONTRIBUTING.md).
- Add agent onboarding files (AGENTS.md, CLAUDE.md, .github/copilot-instructions.md) to required files + Distributor mandatory sets, pointing to PSModule/docs and MSXOrg/docs.
- Placeholder guard: a module exporting any real command is not a placeholder.
- Modern PowerShell only: minimum 7.6, track current + LTS; drop 5.1 accommodation.
- New Module-Types.md (integration/API + data modules) + Naming.md rules (REST->verb, ConvertTo/From + Format/Import/Export); Hashtable is the data-module reference; Context for user + module settings.
Copy file name to clipboardExpand all lines: src/docs/PowerShell/Modules/Repository-Defaults.md
+32-13Lines changed: 32 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
This page defines the default repository contract for PowerShell module repositories in the PSModule organization. It describes what a newly created or maintained module repository should look like before module-specific code, tests, documentation, and managed repository files are considered.
4
4
5
-
The implementation standard still lives in [PowerShell module standard](Standards.md). This page covers repository defaults: files, metadata, README shape, release integration, placeholder handling, shared community files, and managed-file distribution.
5
+
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 repository defaults: files, metadata, README shape, release integration, placeholder handling, shared community files, agent onboarding files, and managed-file distribution.
6
6
7
7
## Scope
8
8
@@ -62,10 +62,13 @@ Module repositories use the PSModule framework layout:
62
62
| ---- | --------------- |
63
63
|`README.md`| Concise start page for the module. |
64
64
|`LICENSE`| Repository license. PSModule module repositories default to MIT unless a different license is explicitly decided. |
65
-
|`CONTRIBUTING.md`|Contribution workflow or a repository-level pointer to the organization contribution guide. |
65
+
|`CONTRIBUTING.md`|Self-contained contribution workflow for this repository. Does not rely on an organization-level fallback. |
66
66
|`SECURITY.md`| Security support policy and private vulnerability reporting instructions. |
67
67
|`SUPPORT.md`| Support expectations and where users ask for help. |
68
68
|`CODE_OF_CONDUCT.md`| Community conduct expectations. |
69
+
|`AGENTS.md`| Agent onboarding entry point. Points agents to the PSModule and MSX documentation for the why, how, and what. |
70
+
|`CLAUDE.md`| Claude Code entry point. Imports `AGENTS.md` so Claude reads the same instructions. |
71
+
|`.github/copilot-instructions.md`| VS Code and GitHub Copilot repository instructions. Points to the same documentation. |
|`.github/dependabot.yml`| Dependency and supply-chain update configuration. |
@@ -102,10 +105,13 @@ Required baseline files for module repositories:
102
105
| ---- | ------------------ |
103
106
|`README.md`| Repository landing page and evergreen context for humans and agents. |
104
107
|`LICENSE`| Clear legal terms for reuse, packaging, and redistribution. |
105
-
|`CONTRIBUTING.md`|Shared contribution workflow and expectations. |
108
+
|`CONTRIBUTING.md`|Self-contained contribution workflow and expectations for this repository. |
106
109
|`SECURITY.md`| Private vulnerability reporting and latest-version support policy. |
107
110
|`SUPPORT.md`| Support channel and issue-routing expectations. |
108
111
|`CODE_OF_CONDUCT.md`| Community participation rules. |
112
+
|`AGENTS.md`| Cross-tool agent instructions pointing to the PSModule and MSX documentation. |
113
+
|`CLAUDE.md`| Claude Code entry point that imports `AGENTS.md`. |
114
+
|`.github/copilot-instructions.md`| VS Code and GitHub Copilot repository instructions pointing to the documentation. |
109
115
|`.github/dependabot.yml`| Supply-chain maintenance for GitHub Actions and PowerShell dependencies. |
110
116
|`.github/CODEOWNERS`| Review routing for source, docs, and GitHub workflow files. |
111
117
|`.github/pull_request_template.md`| Consistent PR Manager-style PR descriptions and change classification. |
@@ -118,6 +124,18 @@ Required baseline files for module repositories:
118
124
119
125
Repositories can add local files, but they should not remove these baseline files unless the repository is explicitly outside the module standard.
120
126
127
+
Each repository must stand on its own. It carries its own copy of every file above and does not depend on the organization `.github` fallback: that fallback is only surfaced in GitHub's web UI, and agents, linters, and local tooling do not read it.
128
+
129
+
## Agent onboarding files
130
+
131
+
Every repository must be usable by an agent that has never seen it before, without special configuration. Each repository carries its own agent entry points that *point to* the authoritative documentation instead of restating it:
132
+
133
+
-`AGENTS.md` — the cross-tool entry point, read by the GitHub Copilot coding agent, VS Code, and other AGENTS.md-aware tools. It names what the repository is in a line or two and points to the PSModule documentation (`https://psmodule.io`, source in [`PSModule/docs`](https://github.com/PSModule/docs)) for the module's why/how/what, and to the MSX documentation (`https://msxorg.github.io/docs`, source in [`MSXOrg/docs`](https://github.com/MSXOrg/docs)) for organization-level principles and ways of working.
134
+
-`CLAUDE.md` — a thin file that imports `AGENTS.md` with `@AGENTS.md` so Claude Code reads the same instructions. Claude-specific notes, if any, go below the import.
135
+
-`.github/copilot-instructions.md` — repository instructions for VS Code and GitHub Copilot that point to the same documentation.
136
+
137
+
These files are the agent equivalent of the README: pointers, not copies. Keep them short so the linked documentation stays the single source of truth. Like the other governance files, they live in the repository itself so it can stand on its own.
138
+
121
139
## Managed file distribution
122
140
123
141
Shared files should be treated as managed files. The current distribution service is [`PSModule/Distributor`](https://github.com/PSModule/Distributor). It keeps source file sets under `Repos/{Type}/{Selection}/` and syncs those files into repositories through pull requests.
@@ -133,7 +151,7 @@ The current Distributor model is subscription-based:
133
151
Two follow-up Distributor capabilities define the desired direction:
134
152
135
153
-**Global file sets** should allow common file sets such as `.gitattributes`, `.gitignore`, and `License` to be defined once and made available to all repository types while still requiring subscription.
136
-
-**Mandatory file sets** should allow organization-critical files such as `SECURITY.md`, `CODE_OF_CONDUCT.md`, `CONTRIBUTING.md`, and supply-chain configuration to be pushed to applicable repositories without each repository having to subscribe manually.
154
+
-**Mandatory file sets** should allow organization-critical files such as `SECURITY.md`, `CODE_OF_CONDUCT.md`, `CONTRIBUTING.md`, the agent onboarding files (`AGENTS.md`, `CLAUDE.md`, `.github/copilot-instructions.md`), and supply-chain configuration to be pushed to applicable repositories without each repository having to subscribe manually.
137
155
138
156
Until mandatory file sets exist, repository owners are still responsible for ensuring the required common files exist. Distributor is the preferred implementation mechanism; this document is the standard that says what must exist and why.
139
157
@@ -180,7 +198,7 @@ The README answers these questions, in this order:
180
198
| What is it? | Name the module and define its scope in one short paragraph. |
181
199
| Why should I care? | State the value or kind of task the module makes easier. |
182
200
| How do I get it? | Show the PowerShell Gallery install and import commands. |
183
-
| How does it work? | Show one to three representative capabilities or usage examples. |
201
+
| How does it work? | Show one to three representative usage examples. |
184
202
| How do I get more info? | Link to generated module documentation and PowerShell help. |
185
203
186
204
Module installation examples must use PSResourceGet:
Use this section as a short showcase and introduction to how the module works. Show the most important things the module makes possible with one to three realistic examples.
230
+
Use this section as a short showcase and introduction to how the module works. Show the most important things the module makes possible with one to three realistic examples; `### Example: <scenario>` subsections are fine when you have more than one.
213
231
214
-
The goal is discovery and marketing, not exhaustive command documentation. A reader should understand why the module exists and what kind of tasks it helps with.
232
+
The goal is discovery, not exhaustive command documentation. A reader should understand why the module exists and what kind of tasks it helps with.
215
233
216
234
```powershell
217
235
# Replace this with a real example that demonstrates the module's value.
In the documentation examples, replace `<Command>` with a real command exported by the module, for example `Get-Help -Name Get-GitHubRepository -Examples`, so the snippet runs as written. Do not ship placeholder tokens such as `'CommandName'` or `<CommandName>` as if they were runnable commands.
234
252
235
-
Implemented modules must include the capabilities or usage showcase before the documentation link. Keep it focused on discovery: show one to three representative outcomes, not every command, parameter, or edge case. A landing page with only an installation snippet and a documentation link is not enough for a module that has working commands.
253
+
Implemented modules must include the `## Usage` showcase before the documentation link. Keep it focused on discovery: show one to three representative outcomes, not every command, parameter, or edge case. A landing page with only an installation snippet and a documentation link is not enough for a module that has working commands. Do not title this section `## Capabilities`; use `## Usage` (or `## Examples`).
236
254
237
255
Keep, trim, or relocate content — do not delete it:
238
256
239
-
- **Keep on the landing page:** the overview, prerequisites and requirements (PowerShell version, supported platforms, module or native dependencies), installation, the capabilities showcase, and the short operational notes a reader needs before first use.
257
+
- **Keep on the landing page:** the overview, prerequisites and requirements (PowerShell version, supported platforms, module or native dependencies), installation, the usage showcase, and the short operational notes a reader needs before first use.
240
258
- **Trim:** exhaustive command inventories, parameter tables, and repetitive examples that differ only by a parameter. These come from comment-based help — point to `Get-Help` and the documentation site instead of restating them.
241
259
- **Relocate only to a published home — never drop:** long-form guides and unique conceptual content (authentication and setup walkthroughs, deep operational detail, end-to-end scenarios) may move out of the README only into a surface that is actually published: a command group's overview page under `src/functions/public/<Group>/<Group>.md`, or comment-based help. A bare top-level `docs/` folder is not published by the current docs build, so moving content there drops it from the site. When there is no published home for it yet, keep the full content in the README. A longer landing page is acceptable and expected for feature-rich modules; do not shorten by deleting.
242
260
243
261
Retain upstream attribution and licensing context. Credit, acknowledgements, donation notes, and third-party license notices for wrapped or bundled work must stay in the README, or move to a clearly linked place. The rule below about community and policy sections does not apply to attribution the project is expected to carry.
244
262
245
263
README pages should not duplicate generated command documentation. Do not add full command inventories, parameter tables, or long reference sections when those details are already produced from comment-based help.
246
264
247
-
Do not add a community-fileor policy link section by default. Readers can find standard repository files such as `LICENSE`, `CONTRIBUTING.md`, `SECURITY.md`, and `CODE_OF_CONDUCT.md` through GitHub conventions and the repository file tree. Link them only when the module has an unusual rule the user must know before using it, or when it carries required upstream attribution.
265
+
Do not add a community-file, policy, or Contributing link section to the README by default, and do not add a `## Contributing` section. Each repository carries its own `CONTRIBUTING.md`, `SECURITY.md`, `SUPPORT.md`, and `CODE_OF_CONDUCT.md`; readers and tools find them through the repository file tree and GitHub renders them in its UI. The README links or restates them only when the module has an unusual rule the user must know before using it, or when it carries required upstream attribution.
248
266
249
267
## Placeholder and in-progress repositories
250
268
@@ -280,13 +298,14 @@ Before opening a README-only PR, check that the README follows the default and d
`Template-PSModule` is the exception: it intentionally keeps `{{ NAME }}` and `{{ DESCRIPTION }}` tokens because those are template inputs.
288
307
289
-
For an implemented module, also confirm the README keeps a capabilities or usage showcase and that any unique content removed from the previous version — prerequisites, setup or authentication guidance, operational notes, or upstream attribution — was relocated to `docs/`, `examples/`, or comment-based help rather than deleted.
308
+
For an implemented module, also confirm the README keeps a `## Usage`showcase and that any unique content removed from the previous version — prerequisites, setup or authentication guidance, operational notes, or upstream attribution — was relocated to a published surface (`src/functions/public/<Group>/<Group>.md`, `examples/`, or comment-based help) rather than deleted.
Copy file name to clipboardExpand all lines: src/docs/PowerShell/Modules/index.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,6 +22,7 @@ Version increments are driven by PR labels (`Major`, `Minor`, `Patch`, `Prerelea
22
22
23
23
-**[Repository Defaults](Repository-Defaults.md)** — Required repository defaults for PSModule PowerShell module repos, including README shape, placeholder handling, metadata, and documentation ownership.
24
24
-**[Standards](Standards.md)** — Repository layout, naming, style, parameter design, comment-based help, and SOLID applied to PowerShell modules.
25
+
-**[Module types](Module-Types.md)** — Type-specific conventions for integration (API) modules and data modules, including function-to-REST naming and using Context for user and module settings.
25
26
-**[Test Specification](Test-Specification.md)** — How we write Pester tests: structure, hierarchy, and naming conventions.
26
27
-**[Versioning](Versioning.md)** — How changes to the public interface determine the SemVer version bump.
0 commit comments