Skip to content

Commit 32a0db2

Browse files
authored
Merge pull request #210 from stiwicourage/develop
## Summary - Prepares the `develop -> main` release candidate for the next stable cut after `2.4.0`, with `develop` currently at `2.4.1-preview`. - Release impact is **both prereleases and stable releases**: - the change set is already the active prerelease line on `develop` - merging to `main` promotes it into the next stable release - `Publish.yml` branch roles remain unchanged (`main` = stable publish/release, `develop` = prerelease publish) - Main changes in the diff: - adds an optional Agentic Copilot starter package to `Initialize-NovaModule` / `% nova init` - moves Nova’s own tests to source-mirrored, dot-source-first coverage with enforced `Pester.CodeCoverage.CoveragePercentTarget` - switches CI/CodeScene coverage handling to JaCoCo `artifacts/coverage.xml` - refreshes `.github/` agent/prompt/skill guidance plus README/CONTRIBUTING/help/site docs to match the new workflow - Changelog and release notes already describe the intended unreleased behavior and align with the branch diff. ## Affected area - [x] `nova` CLI or command routing - [x] Public PowerShell cmdlet behavior - [x] Scaffolding or `project.json` handling - [x] Build, test, analyzer, coverage, or CI helper flow - [ ] Package, raw upload, or package metadata workflow - [x] Publish, release, or GitHub Actions automation - [ ] Self-update or notification preference behavior - [x] Contributor documentation (`README.md`, `CONTRIBUTING.md`, repository workflow docs) - [x] End-user docs (`docs/*.html`) - [x] Command help (`docs/NovaModuleTools/en-US/*.md`) - [x] `src/resources/example/` - [x] Dependency or manifest changes (`project.json`, workflow dependencies, release tooling) - [ ] Security-sensitive change - [ ] Documentation-only change - [ ] Other ## Review guidance - Start with the release-facing behavior and validation path: - `src/private/scaffold/`, `src/resources/agentic-copilot/`, and `src/resources/ProjectTemplate.json` - `src/private/quality/`, `scripts/build/ci/Invoke-NovaModuleToolsCI.ps1`, `scripts/build/ci/Invoke-CodeSceneAnalysis.ps1`, and `.github/workflows/Tests.yml` - `CHANGELOG.md`, `RELEASE_NOTE.md`, `README.md`, and `CONTRIBUTING.md` - Primary changed areas: - scaffold/guidance generation under `.github/`, `src/resources/agentic-copilot/`, and `src/private/scaffold/` - test/coverage migration across `tests/public/`, `tests/private/**`, and `project.json` - CI coverage/reporting updates in `.github/workflows/Tests.yml` and `scripts/build/ci/` - Trade-offs / follow-up: - this release removes many legacy broad coverage suites in favor of mirrored per-file tests, so reviewer confidence should come from the new targeted suites and CI artifact behavior - `Publish.yml` semantics were reviewed but are not materially changed by this diff; release risk is in the changed inputs to that pipeline, not in branch-role policy ## Validation - [x] `Invoke-NovaBuild` - [x] `Test-NovaBuild` - [x] `./scripts/build/Invoke-ScriptAnalyzerCI.ps1` - [x] `./scripts/build/ci/Invoke-NovaModuleToolsCI.ps1` - [ ] Targeted Nova workflow validated (`% nova build`, `% nova test`, `% nova merge`, `% nova deploy`, `% nova publish`, `% nova release`, `% nova update`, `% nova notification`, or `% nova init` as relevant) - [x] Docs/example only; executable validation not needed Validation notes: ```text Analysis-only release prep; no commands were executed in this session. Most important validation implied by the diff: - verify Test-NovaBuild now enforces project.json coverage target and emits JaCoCo at artifacts/coverage.xml - verify .github/workflows/Tests.yml + .github/actions/check-coverage now consume **/coverage.xml successfully - verify Invoke-CodeSceneAnalysis.ps1 uploads normalized JaCoCo coverage and only sends branch-coverage when present - verify scaffold flows for Initialize-NovaModule / nova init, including optional Agentic Copilot starter content and .gitignore update behavior - verify release/publish/version regression coverage in: - tests/public/InvokeNovaRelease.Tests.ps1 - tests/public/PublishNovaModule.Tests.ps1 - tests/public/UpdateNovaModuleVersion.Tests.ps1 - tests/private/release/*.Tests.ps1 - tests/Invoke-NovaModuleToolsCI.Tests.ps1 - tests/CodeSceneAnalysis.Tests.ps1 ``` ## Documentation and release follow-up - [x] `README.md` reviewed and updated if contributor workflow, architecture, CI, release, or automation changed - [x] `CONTRIBUTING.md` reviewed and updated if contribution expectations or review guidance changed - [x] `CHANGELOG.md` reviewed and updated if the change matters to users, maintainers, or contributors - [x] `RELEASE_NOTE.md` reviewed and updated if the change affects public cmdlet usage, CLI usage, configuration semantics, or migration expectations - [x] `docs/NovaModuleTools/en-US/` help updated if a public command or CLI behavior changed - [x] `docs/*.html` updated if end-user workflows or examples changed - [x] `src/resources/example/` reviewed and updated if the real-world project layout, package model, or upload workflow changed - [ ] No documentation, changelog, release-note, or example updates were needed ## Maintainability, compatibility, and risk - [x] Code Health / maintainability impact considered - [x] No breaking change - [ ] Breaking change - [ ] Security-sensitive change - [x] CI, workflow, or release-pipeline impact - [ ] Dependency-review impact Risk, rollout, or rollback notes: ```text Highest release risk is operational, not semantic: - coverage/reporting moved to JaCoCo artifacts/coverage.xml, so reviewers should watch CI artifact production and CodeScene gate/upload behavior closely - the branch diff is large and heavily test-focused; regressions are most likely to show up in scaffold generation, mirrored-test loading, or coverage/reporting paths - Publish.yml branch semantics remain main=stable and develop=prerelease; when this lands on main, stable release finalization and develop prerelease reseeding will rely on that existing automation - rollback is straightforward at the release-prep level: revert the merge or disable the release if CI shows coverage/scaffold/release-path regressions before publish ``` > [!IMPORTANT] > Do not use a public pull request to disclose a vulnerability before coordinated handling. > Use the private reporting path in `SECURITY.md` for new security issues.
2 parents eba2ae4 + 8422ae7 commit 32a0db2

573 files changed

Lines changed: 17813 additions & 18446 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.codescene/code-health-rules.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"usage": "Persist this file inside your repositories as .codescene/code-health-rules.json Keep the rules you want to override, remove the rest for simplicity and an easy overview.Override the code health rules by changing the default 1.0 value to a lower relative weight. A value of 0.0 disables the rule. A value of 0.5 still implies a code health hit but only at 50% of the default impact. Note that you can specify multiple rule sets and use the matching-content-path to control to which parts or languages the rules apply. This makes it possible to differentiate between test vs application code, or tailor rules to specific languages. In case multiple rule sets match a piece of content, then we prioritize the first mathcing set of rules.",
2+
"usage": "Keep the rules you want to override, remove the rest for simplicity and an easy overview. Override the code health rules by changing the default 1.0 value to a lower relative weight. A value of 0.0 disables the rule. A value of 0.5 still implies a code health hit but only at 50% of the default impact. Note that you can specify multiple rule sets and use the matching-content-path to control to which parts or languages the rules apply. This makes it possible to differentiate between test vs application code, or tailor rules to specific languages. In case multiple rule sets match a piece of content, then we prioritize the first matching set of rules.",
33
"rule_sets": [
44
{
55
"thresholds": [

.github/actions/check-coverage/action.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,27 @@ runs:
2323
unzip -oq "$(pwd)/cs-coverage.zip"
2424
chmod +x "$(pwd)/cs-coverage"
2525
26+
- name: Normalize JaCoCo coverage paths
27+
shell: bash
28+
run: |
29+
set -euo pipefail
30+
shopt -s globstar nullglob
31+
files=( ${{ inputs.coverage-files }} )
32+
if [ ${#files[@]} -eq 0 ]; then
33+
echo "No coverage files matched '${{ inputs.coverage-files }}' for normalization."
34+
exit 0
35+
fi
36+
37+
for file in "${files[@]}"; do
38+
pwsh -NoLogo -NoProfile -File ./scripts/build/ci/Repair-CodeSceneJaCoCoCoverage.ps1 -Path "$file"
39+
done
40+
2641
- name: Run CodeScene coverage gate check
2742
shell: bash
2843
env:
2944
CS_PROJECT_URL: ${{ inputs.project-url }}
3045
CS_ACCESS_TOKEN: ${{ inputs.access-token }}
3146
run: |
3247
set -euo pipefail
33-
find "$(pwd)" -name '*.cobertura.xml' -print
48+
find "$(pwd)" -name 'coverage.xml' -print
3449
"$(pwd)/cs-coverage" check --verbose --coverage-files "${{ inputs.coverage-files }}"

.github/agents/architect.agent.md

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,21 @@ description: Designs and scopes NovaModuleTools changes through a discussion-fir
77

88
## Purpose
99

10-
Design or reshape changes that cross public commands, private helper boundaries, workflows, documentation layers, or
11-
release automation.
10+
Design or reshape changes that cross public commands, private helper boundaries, workflows, documentation layers, or release automation.
1211

1312
## Responsibilities
1413

15-
- Default new work to analysis first: clarify the problem, scope, risks, affected layers, validation needs, and
16-
documentation impact before implementation starts.
14+
- Default new work to analysis first: clarify the problem, scope, risks, affected layers, validation needs, and documentation impact before implementation starts.
1715
- Keep new-work design conversations interactive instead of collapsing them into a complete solution in the first reply.
1816
- Identify the affected public surface, internal helper domains, tests, docs, and workflows.
1917
- Keep the change aligned with the repo's layering and ArchitectureGuardrails expectations.
2018
- Recommend the smallest structure that solves the problem cleanly.
2119
- Treat scope cuts, deferrals, and out-of-scope boundaries as proposals that require explicit user confirmation.
22-
- Once the discussion is sufficiently scoped, produce an issue-ready change design with acceptance criteria,
23-
out-of-scope boundaries, and a GitHub issue draft.
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:
22+
- design package plus GitHub issue draft
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.
2425

2526
## Inputs to inspect
2627

@@ -36,11 +37,12 @@ release automation.
3637
## Skills to use
3738

3839
- `/powershell-module-development`
39-
- `/github-actions`
4040
- `/release-and-changelog`
41+
- `/markdown-authoring`
42+
- `/building-maintainable-code`
43+
- `/github-actions`
4144
- `/codescene-quality`
4245
- `/guiding-refactoring-with-code-health`
43-
- `/markdown-authoring`
4446

4547
## Constraints
4648

@@ -49,24 +51,27 @@ release automation.
4951
- Preserve the public/private command model and CLI vs PowerShell distinction.
5052
- Avoid introducing new abstractions unless the current structure clearly duplicates or conflicts.
5153
- Do not edit repository files unless the user explicitly asks to move from design into implementation.
52-
- Do not finalize the full design package until the user says the discussion is done, or you explicitly ask whether you
53-
should finalize it now.
54+
- 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.
55+
- 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.
5456
- Do not finalize out-of-scope decisions unless the user has explicitly confirmed them.
5557

5658
## Definition of done
5759

5860
- The affected layers and files are clearly identified.
5961
- The scoped implementation approach matches existing repo structure.
6062
- Validation, documentation impact, and follow-on agent ownership are called out explicitly.
61-
- A GitHub issue draft is ready to paste or create from the final output once the discussion phase is complete.
63+
- If the user chooses full finalization, a GitHub issue draft is ready to paste or create from the final output.
64+
- If the user chooses design-package-only finalization, the output is clearly resumable later from an `Open questions /
65+
resume here` section.
66+
- Finalization output is copy-ready Markdown that applies the project `markdown-authoring` skill.
6267

6368
## Must not do
6469

6570
- Must not rewrite the release pipeline casually.
6671
- Must not invent new build or test tools.
6772
- Must not bypass established adapters or shared helpers without a strong reason.
6873
- Must not create or edit repository files when the task is still in design mode.
69-
- Must not return a full implementation plan or finished issue draft in the first reply when the user is clearly asking
70-
for a design discussion.
71-
- Must not decide on its own that requested work is out of scope and then finalize the design without the user's
72-
confirmation.
74+
- Must not return a full implementation plan or finished issue draft in the first reply when the user is clearly asking for a design discussion.
75+
- Must not leave the user guessing whether the final output is a handoff document, paste-ready issue text, or both.
76+
- Must not return finalization Markdown that skips the project `markdown-authoring` guidance.
77+
- Must not decide on its own that requested work is out of scope and then finalize the design without the user's confirmation.

.github/agents/docs-site.agent.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ description: Keeps NovaModuleTools website documentation accurate and clearly se
77

88
## Purpose
99

10-
Keep the GitHub Pages documentation under `docs/*.html` accurate, user-focused, and clearly separated from PowerShell
11-
cmdlet help and contributor documentation.
10+
Keep the GitHub Pages documentation under `docs/*.html` accurate, user-focused, and clearly separated from PowerShell cmdlet help and contributor documentation.
1211

1312
## Responsibilities
1413

@@ -28,7 +27,7 @@ cmdlet help and contributor documentation.
2827

2928
## Skills to use
3029

31-
- `/docs-site-html`
30+
- `/docs-site`
3231
- `/markdown-authoring`
3332
- `/powershell-module-development`
3433
- `/release-and-changelog`
@@ -37,8 +36,7 @@ cmdlet help and contributor documentation.
3736

3837
- Treat `docs/*.html` as end-user website docs, not cmdlet help.
3938
- 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
41-
installing NovaModuleTools with `Install-Module`.
39+
- 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`.
4240

4341
## Definition of done
4442

.github/agents/powershell-developer.agent.md

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,27 @@ Implement PowerShell command and helper changes in the NovaModuleTools style.
1313

1414
- Change the relevant public command and private helper flow.
1515
- Keep public files delegating and internal helpers domain-aligned.
16-
- Add or update tests and documentation for the changed behavior.
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.
19+
- Use `.github/instructions/code-quality-matrix.instructions.md` as the best-effort source-code maintainability guidance while shaping `src/**/*.ps1`.
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 tests and valid PlatyPS-compatible help docs for the changed behavior, using the Microsoft.PowerShell.PlatyPS cmdlets instead of hand-written help structure.
22+
- Every new public entry point must add its matching help file in the same change.
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.
1724

1825
## Inputs to inspect
1926

2027
- The relevant file in `src/public/`
21-
- Matching helpers in `src/private/build|cli|package|quality|release|scaffold|shared|update/`
28+
- Matching helpers in `src/private/`
2229
- Matching test files in `tests/`
2330
- `project.json`
2431

2532
## Skills to use
2633

2734
- `/powershell-module-development`
2835
- `/pester-testing`
36+
- `/building-maintainable-code`
2937
- `/codescene-quality`
3038
- `/guiding-refactoring-with-code-health`
3139
- `/safeguarding-ai-generated-code`
@@ -36,10 +44,20 @@ Implement PowerShell command and helper changes in the NovaModuleTools style.
3644
- Keep `ShouldProcess` behavior where the command already supports it.
3745
- Keep raw infrastructure calls behind approved adapters.
3846
- Preserve existing command names, warning semantics, and output shape.
47+
- 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+
- 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.
49+
- Validate Nova-managed project tests through `Test-NovaBuild`; do not call `Invoke-Pester` directly.
50+
- 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.
3951

4052
## Definition of done
4153

4254
- Production code and tests both reflect the intended behavior.
55+
- Build output still comes from Nova-generated `dist/` files, not hand-authored module files in `src/`.
56+
- 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.
57+
- Every new public entry point has its matching help file.
58+
- Project test validation ran through `Test-NovaBuild`.
59+
- Any ScriptAnalyzer findings reported by `run.ps1` or `Invoke-ScriptAnalyzerCI.ps1` are resolved.
60+
- Every changed or generated text file has been checked and ends with exactly one trailing newline and no extra blank lines at the bottom.
4361
- Docs/changelog review is complete.
4462
- The relevant validation commands have been run.
4563

@@ -48,3 +66,4 @@ Implement PowerShell command and helper changes in the NovaModuleTools style.
4866
- Must not mix PowerShell cmdlet UX and `nova` CLI UX.
4967
- Must not add silent fallbacks for invalid or risky behavior.
5068
- Must not duplicate helpers that already exist elsewhere in the repo.
69+
- Must not introduce PowerShell 7.x-only constructs into a `5.1` project unless guarded multi-version support is explicitly part of the change.

.github/agents/release-manager.agent.md

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ Handle versioning, changelog shaping, release-flow documentation, and publish au
1414
- Verify how a change affects stable vs prerelease behavior.
1515
- Keep `CHANGELOG.md` accurate and release-ready.
1616
- Review workflow, docs, and versioning implications together.
17-
- Produce a release-ready summary that follows `.github/pull_request_template.md` when a release preparation summary is
18-
requested.
17+
- Produce a release-ready summary that follows `.github/pull_request_template.md` when a release preparation summary is requested.
18+
- When the release scope is unclear (for example whether the change targets a stable bump, a prerelease, or both), ask one clarifying question before proceeding instead of guessing.
1919

2020
## Inputs to inspect
2121

@@ -30,21 +30,18 @@ Handle versioning, changelog shaping, release-flow documentation, and publish au
3030

3131
- `/release-and-changelog`
3232
- `/markdown-authoring`
33-
- `/github-actions`
3433
- `/pester-testing`
34+
- `/github-actions`
3535

3636
## Constraints
3737

3838
- Treat release automation as high-risk.
3939
- Keep Keep a Changelog structure intact.
40-
- Use only the official Keep a Changelog section types in `CHANGELOG.md` and `RELEASE_NOTE.md`: `Added`, `Changed`,
41-
`Deprecated`, `Removed`, `Fixed`, and `Security`.
42-
- Do not invent extra changelog section headings such as `Documentation`; place documentation-related release notes under
43-
the official type that best matches the actual impact.
40+
- Use only the official Keep a Changelog section types in `CHANGELOG.md` and `RELEASE_NOTE.md`: `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, and `Security`.
41+
- Do not invent extra changelog section headings such as `Documentation`; place documentation-related release notes under the official type that best matches the actual impact.
4442
- Distinguish contributor docs from end-user docs.
4543
- Treat `.github/pull_request_template.md` as the authoritative format for structured release summaries.
46-
- When the release summary is returned as Markdown or copy-ready UI output, it must follow the `markdown-authoring`
47-
skill (`.github/skills/markdown-authoring/SKILL.md`).
44+
- When the release summary is returned as Markdown or copy-ready UI output, it must follow the `markdown-authoring` skill (`.github/skills/markdown-authoring/SKILL.md`).
4845

4946
## Definition of done
5047

.github/agents/reviewer.agent.md

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,23 @@ Review changes for correctness, maintainability, test coverage, workflow safety,
1414
- Start with the highest-risk workflow or public behavior surface.
1515
- Check for missing tests, doc drift, changelog gaps, and CI/release side effects.
1616
- Use the PR template categories as the review frame.
17-
- Treat CodeScene maintainability and changed-code coverage results as release-blocking signals unless risk is accepted
18-
explicitly.
19-
- If local CodeScene tooling is unavailable, continue the review with normal validation and rely on PR/CI as the
20-
effective CodeScene gate.
17+
- When the review scope is genuinely ambiguous (for example which subset of files to focus on, or whether a borderline behavior change is intentional), ask one clarifying question before proceeding instead of guessing.
18+
- Treat CodeScene maintainability and changed-code coverage results as release-blocking signals unless risk is accepted explicitly.
19+
- If local CodeScene tooling is unavailable, continue the review with normal validation and rely on PR/CI as the effective CodeScene gate.
2120
- Check whether website docs preserve the CLI-vs-cmdlet separation when `docs/*.html` or help markdown changed.
21+
- Check that Nova projects still use generated `dist/` module files instead of hand-written source `.psm1` or module `.psd1` files.
22+
- Check changed PowerShell code, tests, and examples against `project.json` `Manifest.PowerShellHostVersion`; flag PowerShell 7.x-only constructs in projects that target `5.1` unless the change explicitly adds guarded compatibility handling.
23+
- Check that public commands/classes have matching valid PlatyPS-compatible help and that new source files have source-mirrored tests. Flag help files under `docs/NovaModuleTools/en-US/` that look like plain Markdown, break the required PlatyPS section order, or would fail `Test-MarkdownCommandHelp` / `Import-MarkdownCommandHelp`.
24+
- Flag any new public entry point that does not add its matching help file in the same change.
25+
- Flag help files where `external help file` contains a command name instead of the module name. The correct value is `NovaModuleTools-Help.xml`; a per-command name like `Get-Something-Help.xml` means the help was generated without the built module imported.
26+
- Check analyzer changes and PowerShell validation flow against `.github/instructions/psscriptanalyzer.instructions.md`. Flag direct `Invoke-ScriptAnalyzer` usage that bypasses repository-approved settings or wrapper semantics without a clear reason.
27+
- Review changed `src/**/*.ps1` against `.github/instructions/code-quality-matrix.instructions.md` and `tests/**/*.ps1` against `.github/instructions/testing-policy.instructions.md`; flag new or heavily changed code that ignores those maintainability rules without a clear, explicit reason.
28+
- Flag public files that do not keep exactly one top-level function, and flag private files that group multiple externally called functions instead of limiting extra functions to related same-file top-level support helpers. Also flag file/function name mismatches for public commands or externally called private helpers, and flag nested function declarations inside PowerShell functions.
29+
- Flag broad catch-all test files when focused source-mirrored tests would make ownership clearer.
30+
- Flag Nova-managed validation that bypasses `Test-NovaBuild` with direct `Invoke-Pester`.
31+
- Flag any PSScriptAnalyzer rule excludes or suppressions; the code should be fixed instead.
32+
- Flag unresolved ScriptAnalyzer findings from `run.ps1` or `Invoke-ScriptAnalyzerCI.ps1`; they should be fixed instead of deferred.
33+
- Flag every changed or generated text file if they do not exactly have one trailing newline with no extra blank lines at the bottom.
2234

2335
## Inputs to inspect
2436

@@ -31,11 +43,12 @@ Review changes for correctness, maintainability, test coverage, workflow safety,
3143

3244
- `/codescene-quality`
3345
- `/safeguarding-ai-generated-code`
34-
- `/docs-site-html`
46+
- `/building-maintainable-code`
47+
- `/docs-site`
3548
- `/markdown-authoring`
3649
- `/pester-testing`
37-
- `/github-actions`
3850
- `/release-and-changelog`
51+
- `/github-actions`
3952

4053
## Constraints
4154

0 commit comments

Comments
 (0)