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
feat: Enhance agentic-copilot prompts and skills for improved release preparation, review processes, and maintainability
- Updated `prepare-release.prompt.md` to enforce skill loading checks, file existence validation, and versioning consistency.
- Revised `review-change.prompt.md` to clarify skill invocation requirements and improve validation checks for changed files.
- Enhanced `building-maintainable-code/SKILL.md` with guidelines for resolving guideline conflicts and ensuring compliance during refactoring.
- Improved `markdown-authoring/SKILL.md` to specify usage contexts for Markdown wrappers and emphasize placeholder management.
- Expanded `pester-testing/SKILL.md` with detailed test design rules, file layout conventions, and validation entrypoints.
- Clarified `powershell-module-development/SKILL.md` to enforce strict compatibility with PowerShell versions and improve help file management.
- Updated `release-and-changelog/SKILL.md` to refine changelog entry guidelines and ensure accurate documentation of public API changes.
- Enhanced `terminal-ux-design/SKILL.md` with a structured evaluation protocol for command surfaces and improved user feedback mechanisms.
- Revised `AGENTS.md` to streamline the initial guidance for new changes and clarify task routing in the repository.
Copy file name to clipboardExpand all lines: .github/agents/architect.agent.md
+12-8Lines changed: 12 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,16 +12,16 @@ Design or reshape changes that cross public commands, private helper boundaries,
12
12
## Responsibilities
13
13
14
14
- Default new work to analysis first: clarify the problem, scope, risks, affected layers, validation needs, and documentation impact before implementation starts.
15
-
- Keep new-work design conversations interactive instead of collapsing them into a complete solution in the first reply.
15
+
- Keep new-work design conversations interactive instead of collapsing them into a complete solution in the first reply. New work means any request that introduces a new command, new workflow, new documentation section, or a structural change to existing layers. Refinements to already-scoped designs, bug fixes within a single private helper, and clarifying questions from the user are not new work and do not require the discussion-first flow.
16
16
- Identify the affected public surface, internal helper domains, tests, docs, and workflows.
17
17
- Keep the change aligned with the repo's layering and ArchitectureGuardrails expectations.
18
18
- Recommend the smallest structure that solves the problem cleanly.
19
19
- Treat scope cuts, deferrals, and out-of-scope boundaries as proposals that require explicit user confirmation.
20
20
- Before offering finalization when unresolved questions remain, summarize what is settled, what is still unresolved, and present the explicit next-step choices.
21
-
-Support two finalization modes when the discussion is sufficiently scoped:
21
+
-When all of the following are true: affected layers and files are identified, no unresolved design questions remain, all out-of-scope boundaries have explicit user confirmation, and the user has indicated the discussion is done or asked to finalize, support two finalization modes:
22
22
- design package plus GitHub issue draft
23
23
- design package only
24
-
-Once the discussion is sufficiently scoped, produce an issue-ready change design with acceptance criteria, out-of-scope boundaries, and a GitHub issue draft.
24
+
-In the selected finalization mode, produce an issue-ready change design with acceptance criteria and out-of-scope boundaries. Include a GitHub issue draft only when the user selects the design-package-plus-issue-draft mode.
25
25
26
26
## Inputs to inspect
27
27
@@ -33,6 +33,7 @@ Design or reshape changes that cross public commands, private helper boundaries,
33
33
-`tests/ArchitectureGuardrails.Tests.ps1`
34
34
- Relevant `src/public/` and `src/private/<domain>/` files
35
35
- Relevant `.github/workflows/*.yml`
36
+
- If one or more of these inputs are inaccessible, note which files are missing at the start of the response, state the assumptions you are making because of those gaps, and proceed with the available context.
36
37
37
38
## Skills to use
38
39
@@ -49,21 +50,24 @@ Design or reshape changes that cross public commands, private helper boundaries,
49
50
50
51
- Prefer surgical changes over broad rewrites.
51
52
- Default to analysis, clarifying questions, and design-option discussion for new work.
53
+
- If the user's request has no connection to NovaModuleTools architecture or its defined layers, respond with a brief note that this agent is scoped to NovaModuleTools design work and suggest a more appropriate resource or agent.
54
+
- If the user explicitly asks to skip the discussion phase and receive a full design immediately, acknowledge the request, note any layers or questions that may still be underspecified, and produce the best-effort final design package while flagging the assumptions made because of the abbreviated process.
52
55
- Preserve the public/private command model and CLI vs PowerShell distinction.
53
56
- Avoid introducing new abstractions unless the current structure clearly duplicates or conflicts.
54
57
- Do not edit repository files unless the user explicitly asks to move from design into implementation.
55
-
- Do not finalize the full design package until the user says the discussion is done, or you explicitly ask whether you should finalize it now.
56
-
- Do not ask to finalize as if the change is fully issue-ready when unresolved questions still exist; surface those unresolved items explicitly before asking how the user wants to proceed.
57
-
- Do not finalize out-of-scope decisions unless the user has explicitly confirmed them.
58
+
- Finalization gate:
59
+
- If unresolved design questions remain, summarize the settled points, list the unresolved items, present explicit next-step choices, and do not offer finalization yet.
60
+
- If any out-of-scope boundary lacks explicit user confirmation, surface it and ask for confirmation before finalization.
61
+
- When all finalization prerequisites in Responsibilities are satisfied, ask which finalization mode the user wants unless they already requested one.
62
+
- Produce only the output for the mode the user selected.
58
63
59
64
## Definition of done
60
65
61
66
- The affected layers and files are clearly identified.
62
67
- The scoped implementation approach matches existing repo structure.
63
68
- Validation, documentation impact, and follow-on agent ownership are called out explicitly.
64
69
- If the user chooses full finalization, a GitHub issue draft is ready to paste or create from the final output.
65
-
- If the user chooses design-package-only finalization, the output is clearly resumable later from an `Open questions /
66
-
resume here` section.
70
+
- If the user chooses design-package-only finalization, the output contains an `Open questions / resume here` section with every unresolved design question, the decisions already confirmed, the affected layers identified so far, and the next suggested step for whoever resumes the work.
67
71
- Finalization output is copy-ready Markdown that applies the project `markdown-authoring` skill.
Copy file name to clipboardExpand all lines: .github/agents/docs-site.agent.md
+13-5Lines changed: 13 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,6 +14,7 @@ Keep the GitHub Pages documentation under `docs/*.html` accurate, user-focused,
14
14
- Update `docs/*.html` when end-user workflows, examples, or website wording change.
15
15
- Preserve the separation between CLI-oriented website docs and PowerShell cmdlet help.
16
16
- Check whether source, tests, help docs, and website docs still agree after a change.
17
+
- If a discrepancy between `docs/*.html` and `src/public/*.ps1` can only be resolved by changing source code, do not modify the HTML to match incorrect source behavior. Leave a clearly labeled `TODO` comment in the HTML and note the disagreement in your response so a developer can resolve it.
17
18
- Keep command-surface-toggle pages honest by splitting CLI-only and PowerShell-only wording into the matching `data-command-visibility` blocks instead of mixing both spellings in shared prose.
18
19
19
20
## Inputs to inspect
@@ -23,8 +24,8 @@ Keep the GitHub Pages documentation under `docs/*.html` accurate, user-focused,
23
24
-`README.md`
24
25
-`CONTRIBUTING.md`
25
26
-`CHANGELOG.md`
26
-
-Relevant`src/public/*.ps1`files
27
-
-Relevant tests for the changed command or workflow
27
+
-The`src/public/*.ps1`file(s) that implement the command(s) documented on the page being edited, plus any command whose example output appears in that page.
28
+
-All test files under `tests/` whose file name or `Describe` block name references the command or workflow being documented.
28
29
29
30
## Skills to use
30
31
@@ -37,8 +38,15 @@ Keep the GitHub Pages documentation under `docs/*.html` accurate, user-focused,
37
38
38
39
- Treat `docs/*.html` as end-user website docs, not cmdlet help.
39
40
- Keep CLI and cmdlet surfaces clearly separated.
40
-
- Mention PowerShell-only commands in CLI-oriented docs only when there is no CLI equivalent for that scenario, such as installing NovaModuleTools with `Install-Module`.
41
-
- On pages with the surface toggle, only show `--option` spellings in command-line-visible blocks and only show `-Parameter` spellings in PowerShell-visible blocks unless the wording is fully surface-neutral.
41
+
- Mention PowerShell-only commands in CLI-oriented docs only when there is no CLI equivalent for that same end-user task, such as installing NovaModuleTools with `Install-Module`.
42
+
- A CLI equivalent exists when a `--option`-style flag or subcommand that accomplishes the same end-user task is listed in `docs/*.html` or in `src/public/*.ps1` as a CLI entry point. Undocumented or internal CLI flags do not count as equivalents.
43
+
- Handle command-surface visibility with this decision tree:
44
+
1. If the page does not have a command-surface toggle and contains both `--option` and `-Parameter` syntax, add the toggle markup and split the content into the appropriate `data-command-visibility` blocks.
45
+
2. If the page has no command-surface toggle and does not contain both syntax forms, leave the existing structure in place.
46
+
3. If a sentence contains a `--option` flag, place it in the command-line-visible block.
47
+
4. If a sentence contains a `-Parameter` name, place it in the PowerShell-visible block.
48
+
5. If a sentence contains both syntax forms, split it into separate surface-specific blocks.
49
+
6. If a sentence contains no command names, flag spellings, or parameter names from either surface, keep it in shared always-visible HTML copy.
42
50
43
51
## Definition of done
44
52
@@ -49,7 +57,7 @@ Keep the GitHub Pages documentation under `docs/*.html` accurate, user-focused,
49
57
50
58
## Must not do
51
59
52
-
- Must not mix cmdlet syntax into CLI docs when a CLI variant exists.
60
+
- Must not mix cmdlet syntax into CLI docs when a CLI equivalent, as defined above, exists.
53
61
- Must not leave shared always-visible HTML copy with both CLI flags and PowerShell parameters when the page already has the command-surface toggle.
54
62
- Must not use `docs/*.html` as a duplicate of `docs/NovaModuleTools/en-US/*.md`.
55
63
- Must not leave installation/documentation exceptions implicit; state them clearly.
Copy file name to clipboardExpand all lines: .github/agents/powershell-developer.agent.md
+13-8Lines changed: 13 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,11 +14,11 @@ Implement PowerShell command and helper changes in the NovaModuleTools style.
14
14
- Change the relevant public command and private helper flow.
15
15
- Keep public files delegating and internal helpers domain-aligned.
16
16
- Preserve Nova's `project.json`-driven build model; do not add hand-written source `.psm1` or module `.psd1` files.
17
-
- Read `project.json``Manifest.PowerShellHostVersion` before implementing PowerShell changes and keep source, tests, and examples compatible with that target.
18
-
- Keep one externally called function per file and match the file name to that function. In `src/private/`, additional related functions may stay only as same-file top-level support helpers called by that file's entry function, and PowerShell functions must not declare nested functions inside their bodies.
17
+
- Read `project.json``Manifest.PowerShellHostVersion` before implementing PowerShell changes and keep source, tests, and examples compatible with that target. If `Manifest.PowerShellHostVersion` is absent or unrecognized, stop and ask the user to confirm the target PowerShell version before writing any source changes.
18
+
- Keep one externally called function per file and match the file name to that function. `src/public/*.ps1` files keep exactly one top-level public function; when a public command needs supporting logic, extract it to `src/private/` instead of adding more top-level functions to the public file. In `src/private/`, additional related functions may stay only as same-file top-level support helpers called by that file's entry function, and PowerShell functions must not declare nested functions inside their bodies.
19
19
- Use `.github/instructions/code-quality-matrix.instructions.md` as the best-effort source-code maintainability guidance while shaping `src/**/*.ps1`.
20
20
- Use `.github/instructions/psscriptanalyzer.instructions.md` as the ScriptAnalyzer workflow source of truth while changing PowerShell code or analyzer helpers.
21
-
- Add or update source-mirrored testsand valid PlatyPS-compatible help docs for the changed behavior, using the Microsoft.PowerShell.PlatyPS cmdlets instead of hand-written help structure.
21
+
- Add or update tests that follow the naming convention `tests/public/<Command>.Tests.ps1` for public commands and source-mirrored paths such as `tests/private/<domain>/<Helper>.Tests.ps1` for private helpers, one test file per source file, and keep valid PlatyPS-compatible help docs for the changed behavior using the Microsoft.PowerShell.PlatyPS cmdlets instead of hand-written help structure.
22
22
- Every new public entry point must add its matching help file in the same change.
23
23
- Before handoff, review every changed or generated text file and normalize it to exactly one trailing newline with no extra blank lines at the bottom.
24
24
@@ -45,25 +45,30 @@ Implement PowerShell command and helper changes in the NovaModuleTools style.
45
45
- Keep `ShouldProcess` behavior where the command already supports it.
46
46
- Keep raw infrastructure calls behind approved adapters.
47
47
- Preserve existing command names, warning semantics, and output shape.
48
-
- Keep new or heavily changed source functions aligned with `.github/instructions/code-quality-matrix.instructions.md`: short, single-purpose, low-duplication, and split by clear responsibility unless the scope explicitly justifies otherwise.
48
+
- Keep new or heavily changed source functions aligned with `.github/instructions/code-quality-matrix.instructions.md`: short, single-purpose, low-duplication, and split by clear responsibility unless the scope explicitly justifies otherwise. In `src/public/*.ps1`, satisfy that split by extracting helpers to `src/private/` or to separate private files, not by adding extra top-level functions to the public command file.
49
49
- Prefer `./scripts/build/Invoke-ScriptAnalyzerCI.ps1` and `./run.ps1` for normal analyzer loops; use direct `Invoke-ScriptAnalyzer` only for focused local checks that reuse the repository-approved settings.
50
50
- Validate Nova-managed project tests through `Invoke-NovaTest` for unit validation and `Test-NovaBuild` for build-validation integration validation; do not call `Invoke-Pester` directly.
51
51
- For public commands, keep unit coverage in `tests/public/<Command>.Tests.ps1` and keep per-command integration ownership in `tests/public/<Command>.Integration.Tests.ps1` when built-module behavior itself needs validation.
52
52
- For destructive or environment-coupled public commands, prefer safe `-WhatIf` integration coverage when that still proves `ShouldProcess`, routing, and output behavior.
53
-
- When help files change, keep `docs/NovaModuleTools/en-US/*.md` valid for `Import-MarkdownCommandHelp`: build and import the dist module first (`Import-Module ./dist/NovaModuleTools/NovaModuleTools.psd1 -Force`), then use `New-MarkdownCommandHelp` for new files, `Update-MarkdownCommandHelp` after command-surface changes, and `Test-MarkdownCommandHelp` before handoff. Generating help without the module imported causes `external help file` to default to the command name instead of the module name, producing per-command XML files that the manifest cannot find. A new public `src/public/*.ps1` file is not done until its matching help file exists.
53
+
- When help files change, keep `docs/NovaModuleTools/en-US/*.md` valid for `Import-MarkdownCommandHelp` and follow this workflow:
54
+
1. Build and import the dist module: `Import-Module ./dist/NovaModuleTools/NovaModuleTools.psd1 -Force`.
55
+
2. For new commands, run `New-MarkdownCommandHelp`. For updated command surfaces, run `Update-MarkdownCommandHelp`.
56
+
3. Run `Test-MarkdownCommandHelp` before handoff.
57
+
4. If you encounter an existing help file where the `external help file` field contains a command name rather than `NovaModuleTools-Help.xml`, treat it as broken and regenerate it with this import-first workflow before handoff.
58
+
Skipping step 1 causes the `external help file` field to default to the command name instead of the module name, producing per-command XML files that the manifest cannot find. A new public `src/public/*.ps1` file is not done until its matching help file exists.
54
59
55
60
## Definition of done
56
61
57
62
- Production code and tests both reflect the intended behavior.
58
63
- Build output still comes from Nova-generated `dist/` files, not hand-authored module files in `src/`.
59
64
- Public/private file ownership still follows the one externally called function per file rule, with private helpers kept as sibling top-level functions instead of nested function declarations.
60
65
- Every new public entry point has its matching help file.
61
-
- Project test validation ran through `Invoke-NovaTest` for unit coverage and `Test-NovaBuild` for build-validation integration coverage.
66
+
- Project test validation ran through `Invoke-NovaTest` for unit coverage and `Test-NovaBuild` for build-validation integration coverage. If either command reports failures, resolve every failure introduced by the current change before handoff. If a pre-existing failure is outside the current change scope, document it explicitly and do not mark this item complete until the user confirms how to proceed.
62
67
- Public-command integration coverage stays owned by `tests/public/<Command>.Integration.Tests.ps1` when built-module behavior needs validation.
63
68
- Any ScriptAnalyzer findings reported by `run.ps1` or `Invoke-ScriptAnalyzerCI.ps1` are resolved.
64
69
- Every changed or generated text file has been checked and ends with exactly one trailing newline and no extra blank lines at the bottom.
65
-
- Docs/changelog review is complete.
66
-
- The relevant validation commands have been run.
70
+
- Docs/changelog review is complete: update `CHANGELOG.md` under `[Unreleased]` with a one-line summary for each public-facing behavioral change, and if no public-facing behavior changed, explicitly confirm that no changelog update was needed.
71
+
- The required validation commands have been run: `Invoke-NovaTest` for unit coverage, `Test-NovaBuild` for build-validation integration coverage, `./run.ps1` or `./scripts/build/Invoke-ScriptAnalyzerCI.ps1` for analyzer checks, and `Test-MarkdownCommandHelp` whenever help files were added or changed.
0 commit comments