From f1e563efad8cf4ee2f610b8b3c8391159a4d8300 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 18 May 2026 04:41:07 +0000 Subject: [PATCH 01/16] chore: prepare develop for next prerelease --- project.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.json b/project.json index c55a2d6..4a027fb 100644 --- a/project.json +++ b/project.json @@ -1,7 +1,7 @@ { "ProjectName": "NovaModuleTools", "Description": "NovaModuleTools is an enterprise-focused evolution of ModuleTools, designed for large-scale PowerShell projects with a strong emphasis on structure, maintainability, and automated CI/CD pipelines.", - "Version": "3.0.1", + "Version": "3.0.2-preview", "Preamble": [ "Set-StrictMode -Version Latest", "$ErrorActionPreference = 'Stop'" From c6d98104b1c0e04873e723f4a22cf8280dfc9822 Mon Sep 17 00:00:00 2001 From: Stiwi Gabriel Courage Date: Mon, 18 May 2026 09:01:05 +0200 Subject: [PATCH 02/16] fix: set max-width for layout consistency --- docs/assets/site.css | 2 +- tests/DocsSiteLayout.Tests.ps1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/assets/site.css b/docs/assets/site.css index 958fc03..f652c0d 100644 --- a/docs/assets/site.css +++ b/docs/assets/site.css @@ -11,7 +11,7 @@ --outline: rgba(255, 255, 255, 0.12); --shadow: 0 20px 60px rgba(0, 0, 0, 0.28); --radius: 22px; - --max-width: none; + --max-width: 1600px; --anchor-offset: 2.90rem; } diff --git a/tests/DocsSiteLayout.Tests.ps1 b/tests/DocsSiteLayout.Tests.ps1 index c803d21..788029f 100644 --- a/tests/DocsSiteLayout.Tests.ps1 +++ b/tests/DocsSiteLayout.Tests.ps1 @@ -11,7 +11,7 @@ BeforeAll { Describe 'docs site layout guardrails' { It 'keeps wide-screen layout and text containers uncapped in the shared stylesheet' { - $script:siteCssContent | Should -Match '(?s):root\s*\{.*?--max-width:\s*none;' + $script:siteCssContent | Should -Match '(?s):root\s*\{.*?--max-width:\s*1600px;' $script:siteCssContent | Should -Match '(?s)\.guide-hero\s*\{.*?max-width:\s*none;' $script:siteCssContent | Should -Match '(?s)\.guide-content\s+\.content-section\s*>\s*p,\s*\.guide-content\s+\.content-section\s*>\s*ul,\s*\.guide-content\s+\.content-section\s*>\s*ol\s*\{.*?max-width:\s*none;' $script:siteCssContent | Should -Match '(?s)h1\s*\{.*?max-width:\s*none;' From 8e811a963a9c859fa00636f79d25fa4c5a4906c8 Mon Sep 17 00:00:00 2001 From: Stiwi Gabriel Courage Date: Mon, 18 May 2026 14:29:53 +0200 Subject: [PATCH 03/16] fix: simplify path patterns for private scripts - updated path patterns to use globbing for private scripts in project.json and ProjectTemplate.json - adjusted coverage percentage targets in project.json --- project.json | 4 +--- src/resources/ProjectTemplate.json | 4 +--- src/resources/example/project.json | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/project.json b/project.json index 4a027fb..3bd0f7d 100644 --- a/project.json +++ b/project.json @@ -44,9 +44,7 @@ "Enabled": true, "Path": [ "src/public/*.ps1", - "src/private/*.ps1", - "src/private/*/*.ps1", - "src/private/*/*/*.ps1" + "src/private/**/*.ps1" ], "CoveragePercentTarget": 99, "OutputPath": "artifacts/coverage.xml", diff --git a/src/resources/ProjectTemplate.json b/src/resources/ProjectTemplate.json index 8df311c..c2ef080 100644 --- a/src/resources/ProjectTemplate.json +++ b/src/resources/ProjectTemplate.json @@ -27,9 +27,7 @@ "Enabled": false, "Path": [ "src/public/*.ps1", - "src/private/*.ps1", - "src/private/*/*.ps1", - "src/private/*/*/*.ps1", + "src/private/**/*.ps1", "src/classes/*.ps1" ], "CoveragePercentTarget": 90, diff --git a/src/resources/example/project.json b/src/resources/example/project.json index 4b8083f..0476b59 100644 --- a/src/resources/example/project.json +++ b/src/resources/example/project.json @@ -86,9 +86,7 @@ "Enabled": true, "Path": [ "src/public/*.ps1", - "src/private/*.ps1", - "src/private/*/*.ps1", - "src/private/*/*/*.ps1", + "src/private/**/*.ps1", "src/classes/*.ps1" ], "CoveragePercentTarget": 90, From cd40bb6122a0016b9ae48417dd9cda9711949a60 Mon Sep 17 00:00:00 2001 From: Stiwi Gabriel Courage Date: Wed, 20 May 2026 12:14:40 +0200 Subject: [PATCH 04/16] Merge pull request #213 from stiwicourage/feature/212-add-invoke-novaagenticcopilotscaffold-and-nova-copilot-for-applyingupdating-the-agentic-copilot-scaffold-in-existing-projects Add nova copilot command for Agentic Copilot workflow --- .github/agents/docs-site.agent.md | 4 + .../documentation-separation.instructions.md | 5 + .github/skills/docs-site/SKILL.md | 3 + CHANGELOG.md | 6 +- README.md | 13 ++ RELEASE_NOTE.md | 6 +- .../en-US/Deploy-NovaPackage.md | 2 +- .../en-US/Get-NovaProjectInfo.md | 2 +- .../Get-NovaUpdateNotificationPreference.md | 2 +- .../en-US/Initialize-NovaModule.md | 2 +- docs/NovaModuleTools/en-US/Install-NovaCli.md | 2 +- .../Invoke-NovaAgenticCopilotScaffold.md | 207 ++++++++++++++++++ .../NovaModuleTools/en-US/Invoke-NovaBuild.md | 2 +- .../en-US/Invoke-NovaRelease.md | 2 +- .../en-US/New-NovaModulePackage.md | 2 +- .../en-US/Publish-NovaModule.md | 2 +- .../Set-NovaUpdateNotificationPreference.md | 2 +- docs/NovaModuleTools/en-US/Test-NovaBuild.md | 2 +- .../en-US/Update-NovaModuleTools.md | 2 +- .../en-US/Update-NovaModuleVersion.md | 2 +- docs/commands.html | 46 ++++ docs/core-workflows.html | 52 ++++- project.json | 4 +- .../cli/ConvertFromNovaCopilotCliArgument.ps1 | 39 ++++ .../cli/GetNovaCliCommandHelpDefinition.ps1 | 1 + src/private/cli/InvokeNovaCliCommandRoute.ps1 | 3 + .../cli/InvokeNovaCliCopilotCommand.ps1 | 15 ++ ...aAgenticCopilotScaffoldWorkflowContext.ps1 | 106 +++++++++ ...ializeNovaModuleAgenticCopilotScaffold.ps1 | 78 ++++++- ...vokeNovaAgenticCopilotScaffoldWorkflow.ps1 | 69 ++++++ .../InvokeNovaAgenticCopilotScaffold.ps1 | 16 ++ src/resources/cli/NovaCliHelp.txt | 8 +- src/resources/cli/help/copilot.psd1 | 59 +++++ tests/ArchitectureGuardrails.Tests.ps1 | 1 + ...ojectPesterCoverageConfiguration.Tests.ps1 | 15 ++ .../manifest/AssertManifestSchema.Tests.ps1 | 28 ++- ...onvertFromNovaCopilotCliArgument.Tests.ps1 | 31 +++ .../GetNovaCliCommandHelpDefinition.Tests.ps1 | 1 + .../InvokeNovaCliCommandRoute.TestSupport.ps1 | 4 + .../cli/InvokeNovaCliCommandRoute.Tests.ps1 | 6 + ...nvokeNovaCliCopilotCommand.TestSupport.ps1 | 14 ++ .../cli/InvokeNovaCliCopilotCommand.Tests.ps1 | 17 ++ ...oduleHasNoDuplicateFunctionNames.Tests.ps1 | 19 ++ ...matDuplicateFunctionErrorMessage.Tests.ps1 | 67 ++++++ .../GetDuplicateFunctionSourceLine.Tests.ps1 | 33 +++ .../GetTopLevelFunctionAst.Tests.ps1 | 38 ++++ ...icCopilotScaffoldWorkflowContext.Tests.ps1 | 72 ++++++ ...NovaModuleAgenticCopilotScaffold.Tests.ps1 | 56 +++++ ...ticCopilotScaffoldWorkflow.TestSupport.ps1 | 15 ++ ...vaAgenticCopilotScaffoldWorkflow.Tests.ps1 | 113 ++++++++++ ...NovaAgenticCopilotScaffold.TestSupport.ps1 | 17 ++ ...InvokeNovaAgenticCopilotScaffold.Tests.ps1 | 34 +++ 52 files changed, 1315 insertions(+), 32 deletions(-) create mode 100644 docs/NovaModuleTools/en-US/Invoke-NovaAgenticCopilotScaffold.md create mode 100644 src/private/cli/ConvertFromNovaCopilotCliArgument.ps1 create mode 100644 src/private/cli/InvokeNovaCliCopilotCommand.ps1 create mode 100644 src/private/scaffold/GetNovaAgenticCopilotScaffoldWorkflowContext.ps1 create mode 100644 src/private/scaffold/InvokeNovaAgenticCopilotScaffoldWorkflow.ps1 create mode 100644 src/public/InvokeNovaAgenticCopilotScaffold.ps1 create mode 100644 src/resources/cli/help/copilot.psd1 create mode 100644 tests/ProjectPesterCoverageConfiguration.Tests.ps1 create mode 100644 tests/private/cli/ConvertFromNovaCopilotCliArgument.Tests.ps1 create mode 100644 tests/private/cli/InvokeNovaCliCopilotCommand.TestSupport.ps1 create mode 100644 tests/private/cli/InvokeNovaCliCopilotCommand.Tests.ps1 create mode 100644 tests/private/quality/duplicates/FormatDuplicateFunctionErrorMessage.Tests.ps1 create mode 100644 tests/private/quality/duplicates/GetDuplicateFunctionSourceLine.Tests.ps1 create mode 100644 tests/private/quality/duplicates/GetTopLevelFunctionAst.Tests.ps1 create mode 100644 tests/private/scaffold/GetNovaAgenticCopilotScaffoldWorkflowContext.Tests.ps1 create mode 100644 tests/private/scaffold/InvokeNovaAgenticCopilotScaffoldWorkflow.TestSupport.ps1 create mode 100644 tests/private/scaffold/InvokeNovaAgenticCopilotScaffoldWorkflow.Tests.ps1 create mode 100644 tests/public/InvokeNovaAgenticCopilotScaffold.TestSupport.ps1 create mode 100644 tests/public/InvokeNovaAgenticCopilotScaffold.Tests.ps1 diff --git a/.github/agents/docs-site.agent.md b/.github/agents/docs-site.agent.md index 8815a31..fb1d087 100644 --- a/.github/agents/docs-site.agent.md +++ b/.github/agents/docs-site.agent.md @@ -14,6 +14,7 @@ Keep the GitHub Pages documentation under `docs/*.html` accurate, user-focused, - Update `docs/*.html` when end-user workflows, examples, or website wording change. - Preserve the separation between CLI-oriented website docs and PowerShell cmdlet help. - Check whether source, tests, help docs, and website docs still agree after a change. +- 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. ## Inputs to inspect @@ -37,15 +38,18 @@ Keep the GitHub Pages documentation under `docs/*.html` accurate, user-focused, - Treat `docs/*.html` as end-user website docs, not cmdlet help. - Keep CLI and cmdlet surfaces clearly separated. - 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`. +- 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. ## Definition of done - The changed website docs reflect the current behavior. - CLI-oriented docs do not drift into cmdlet-help wording. +- Surface-specific labels, flags, and parameter names match the active website command surface. - Relevant contributor docs and changelog were reviewed for follow-up impact. ## Must not do - Must not mix cmdlet syntax into CLI docs when a CLI variant exists. +- Must not leave shared always-visible HTML copy with both CLI flags and PowerShell parameters when the page already has the command-surface toggle. - Must not use `docs/*.html` as a duplicate of `docs/NovaModuleTools/en-US/*.md`. - Must not leave installation/documentation exceptions implicit; state them clearly. diff --git a/.github/instructions/documentation-separation.instructions.md b/.github/instructions/documentation-separation.instructions.md index 226af0f..e8ff645 100644 --- a/.github/instructions/documentation-separation.instructions.md +++ b/.github/instructions/documentation-separation.instructions.md @@ -20,6 +20,10 @@ NovaModuleTools has multiple documentation surfaces with different audiences. Ke - Do not write cmdlet help markdown as if it were `nova` CLI documentation. - Use CLI syntax in CLI-oriented website docs when a CLI variant exists. - Use cmdlet syntax in help markdown and PowerShell-specific contributor guidance. +- On website pages that support the command-surface toggle, keep surface-specific wording behind the matching visibility gate. + - CLI-only flags, labels, and guidance belong in elements marked with `data-command-visibility="command-line"`. + - PowerShell-only parameters, labels, and guidance belong in elements marked with `data-command-visibility="powershell"`. + - Shared prose should stay surface-neutral instead of mixing `--option` and `-Parameter` spellings in the same always-visible paragraph. ## Allowed exception @@ -33,6 +37,7 @@ NovaModuleTools has multiple documentation surfaces with different audiences. Ke - Does this page describe a `nova` workflow or a PowerShell cmdlet workflow? - If a `nova` command exists, is the website doc using it instead of the cmdlet? - If a cmdlet is shown in website docs, is it there because no CLI variant exists? +- If the page uses the command-surface toggle, do the visible labels, flags, and parameter names match the selected surface? - Would an end user mistake this page for cmdlet help? ## Follow-up expectations diff --git a/.github/skills/docs-site/SKILL.md b/.github/skills/docs-site/SKILL.md index fa78889..ec145ea 100644 --- a/.github/skills/docs-site/SKILL.md +++ b/.github/skills/docs-site/SKILL.md @@ -24,11 +24,13 @@ Use this skill when changing `docs/*.html`, end-user examples, installation guid - Use CLI-oriented examples when the workflow has a `nova` variant. - Mention PowerShell cmdlets only when no CLI equivalent exists for that scenario. - Keep installation guidance explicit about PowerShell-only steps such as `Install-Module`. +- On pages with the command-surface toggle, keep option/parameter wording aligned with the active surface by using `data-command-visibility="command-line"` and `data-command-visibility="powershell"` blocks instead of one shared paragraph that mixes CLI flags with PowerShell parameters. - Recheck the matching command-help markdown when public behavior changes. ## Common pitfalls - Mixing `Get-/Set-/Invoke-/Install-` cmdlets into CLI docs where `nova` exists +- Leaving `--option` text visible in PowerShell mode, or `-Parameter` text visible in command-line mode, because the surrounding prose was not split by `data-command-visibility` - Duplicating cmdlet help text in website docs instead of adapting it for end users - Forgetting that `docs/NovaModuleTools/en-US/*.md` and `docs/*.html` serve different audiences - Updating website docs without reviewing changelog or contributor-doc impact @@ -36,5 +38,6 @@ Use this skill when changing `docs/*.html`, end-user examples, installation guid ## Verification - Read the touched HTML page as an end-user flow +- Toggle the page mentally between PowerShell and command-line surfaces and confirm the visible option/parameter names still match that surface - Check whether the same behavior is documented consistently in help markdown or contributor docs - Use docs-only validation when no executable behavior changed diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b71fb5..b0e30df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ### Added +- Added `Invoke-NovaAgenticCopilotScaffold` and `% nova copilot` for applying or refreshing Nova's managed Agentic Copilot scaffold in an existing project root. + - The workflow reads `ProjectName` and `Description` from `project.json`, requires a `ShortName` on every run for token replacement, and fails clearly when the project metadata or short name is invalid. + - Nova refreshes only the approved managed Agentic Copilot paths under `.github/` plus `AGENTS.md` and `CONTRIBUTING.md`, while `README.md`, `CHANGELOG.md`, and `RELEASE_NOTE.md` are created only when they are missing. + - The new cmdlet and CLI route prompt before overwriting managed scaffold content by default, and support non-interactive execution only through `-OverrideWarning` / `--override-warning` / `-o`. + ### Changed ### Deprecated @@ -433,4 +438,3 @@ This release was yanked because it removed the implicit `Pester` dependency, bef [0.0.6]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.5...Version_0.0.6 [0.0.5]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.4...Version_0.0.5 [0.0.4]: https://github.com/stiwicourage/NovaModuleTools/compare/Version_0.0.3...Version_0.0.4 - diff --git a/README.md b/README.md index 46c2969..5b90aa0 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,19 @@ Direct PowerShell cmdlets such as `Publish-NovaModule`, `Deploy-NovaPackage`, an The module does not export a PowerShell alias named `nova`. Install the bundled launcher with `Install-NovaCli` when you want `% nova ...` available directly from your shell. +### Apply or refresh the Agentic Copilot scaffold + +Use the dedicated scaffold command when you want to add Nova's maintained Agentic Copilot workflow to an existing project, or refresh an older scaffold to Nova's latest managed version: + +```powershell +PS> Invoke-NovaAgenticCopilotScaffold -ShortName NMT +% nova copilot --short-name NMT +``` + +The target directory must contain a valid `project.json`. Nova reads `ProjectName` and `Description` from that file, requires `ShortName` on every run for token replacement, and refreshes only the Nova-managed Agentic Copilot paths under `.github/` plus `AGENTS.md` and `CONTRIBUTING.md`. Existing `README.md`, `CHANGELOG.md`, and `RELEASE_NOTE.md` are preserved and are created only when they are missing. + +By default the scaffold flow prompts before it overwrites the managed paths. Use `-OverrideWarning` or `--override-warning` only when you intentionally want a non-interactive apply. The CLI also supports the short form `% nova copilot -n NMT -o`. Use `-WhatIf` or `--what-if` when you want to preview the operation without changing files. + ### Reload the built module while iterating Use the built output during development so you validate the same shape CI uses: diff --git a/RELEASE_NOTE.md b/RELEASE_NOTE.md index ad8d57a..d318a84 100644 --- a/RELEASE_NOTE.md +++ b/RELEASE_NOTE.md @@ -6,6 +6,11 @@ This file summarizes the release notes for NovaModuleTools. **UNRELEASED** chang ### Added +- Added `Invoke-NovaAgenticCopilotScaffold` and `% nova copilot` for adding or refreshing Nova's managed Agentic Copilot workflow in an existing project. + - The workflow reads `ProjectName` and `Description` from `project.json`, requires an explicit `ShortName` on every run, and stops with a clear validation error when the target project metadata is missing or invalid. + - Nova refreshes only its managed Agentic Copilot files and folders, while `README.md`, `CHANGELOG.md`, and `RELEASE_NOTE.md` are created only when they are missing. + - The command prompts before overwrite by default and supports non-interactive execution only through `-OverrideWarning` / `--override-warning` / `-o`. + ### Changed ### Deprecated @@ -195,4 +200,3 @@ This release was yanked because it removed the implicit `Pester` dependency befo ## [0.0.4] - 2024-06-25 ### Added - First PowerShell Gallery release of NovaModuleTools with the initial module workflow support. - diff --git a/docs/NovaModuleTools/en-US/Deploy-NovaPackage.md b/docs/NovaModuleTools/en-US/Deploy-NovaPackage.md index aaa4dc8..4a6fc55 100644 --- a/docs/NovaModuleTools/en-US/Deploy-NovaPackage.md +++ b/docs/NovaModuleTools/en-US/Deploy-NovaPackage.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/packaging-and-delivery.html#upload' Locale: en-US Module Name: NovaModuleTools ms.date: 04/25/2026 diff --git a/docs/NovaModuleTools/en-US/Get-NovaProjectInfo.md b/docs/NovaModuleTools/en-US/Get-NovaProjectInfo.md index 9f6beab..67168fc 100644 --- a/docs/NovaModuleTools/en-US/Get-NovaProjectInfo.md +++ b/docs/NovaModuleTools/en-US/Get-NovaProjectInfo.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/project-json-reference.html' Locale: en-US Module Name: NovaModuleTools ms.date: 05/06/2026 diff --git a/docs/NovaModuleTools/en-US/Get-NovaUpdateNotificationPreference.md b/docs/NovaModuleTools/en-US/Get-NovaUpdateNotificationPreference.md index 16309cc..047c8da 100644 --- a/docs/NovaModuleTools/en-US/Get-NovaUpdateNotificationPreference.md +++ b/docs/NovaModuleTools/en-US/Get-NovaUpdateNotificationPreference.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/versioning-and-updates.html#notification-preferences' Locale: en-US Module Name: NovaModuleTools ms.date: 04/25/2026 diff --git a/docs/NovaModuleTools/en-US/Initialize-NovaModule.md b/docs/NovaModuleTools/en-US/Initialize-NovaModule.md index ae42d95..88532b2 100644 --- a/docs/NovaModuleTools/en-US/Initialize-NovaModule.md +++ b/docs/NovaModuleTools/en-US/Initialize-NovaModule.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/core-workflows.html#scaffold' Locale: en-US Module Name: NovaModuleTools ms.date: 04/25/2026 diff --git a/docs/NovaModuleTools/en-US/Install-NovaCli.md b/docs/NovaModuleTools/en-US/Install-NovaCli.md index 3a0bb0b..897354e 100644 --- a/docs/NovaModuleTools/en-US/Install-NovaCli.md +++ b/docs/NovaModuleTools/en-US/Install-NovaCli.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/commands.html#setup-and-project' Locale: en-US Module Name: NovaModuleTools ms.date: 04/25/2026 diff --git a/docs/NovaModuleTools/en-US/Invoke-NovaAgenticCopilotScaffold.md b/docs/NovaModuleTools/en-US/Invoke-NovaAgenticCopilotScaffold.md new file mode 100644 index 0000000..649c369 --- /dev/null +++ b/docs/NovaModuleTools/en-US/Invoke-NovaAgenticCopilotScaffold.md @@ -0,0 +1,207 @@ +--- +document type: cmdlet +external help file: NovaModuleTools-Help.xml +HelpUri: 'https://www.novamoduletools.com/core-workflows.html#agentic-copilot' +Locale: en-US +Module Name: NovaModuleTools +ms.date: 05/20/2026 +PlatyPS schema version: 2024-05-01 +title: Invoke-NovaAgenticCopilotScaffold +--- + +# Invoke-NovaAgenticCopilotScaffold + +## SYNOPSIS + +Apply or refresh Nova's managed Agentic Copilot scaffold in an existing project. + +## SYNTAX + +### __AllParameterSets + +```text +Invoke-NovaAgenticCopilotScaffold [[-Path] ] [-ShortName] [-OverrideWarning] + [-WhatIf] [-Confirm] [] +``` + +## DESCRIPTION + +`Invoke-NovaAgenticCopilotScaffold` applies Nova's maintained Agentic Copilot scaffold to an existing project root. + +The command reads `ProjectName` and `Description` from the target `project.json`, requires a `ShortName` on every run for token replacement, and refreshes only Nova-managed Agentic Copilot paths. Existing `README.md`, `CHANGELOG.md`, and `RELEASE_NOTE.md` are preserved and are created only when they are missing. + +By default the workflow shows an overwrite warning before it updates the managed scaffold paths. Use `-OverrideWarning` only when you intentionally want a non-interactive apply or refresh. + +The target path must contain a valid `project.json`. Invalid project metadata or an invalid short name stops the command with a clear validation error. + +## EXAMPLES + +### EXAMPLE 1 + +```text +PS> Invoke-NovaAgenticCopilotScaffold -ShortName NMT +``` + +Apply or refresh the Nova-managed Agentic Copilot scaffold in the current project root after the overwrite warning is confirmed. + +### EXAMPLE 2 + +```text +PS> Invoke-NovaAgenticCopilotScaffold -Path ~/Work/MyModule -ShortName NMT -OverrideWarning +``` + +Apply or refresh the managed scaffold in a specific project root without showing the overwrite warning prompt. + +### EXAMPLE 3 + +```text +PS> Invoke-NovaAgenticCopilotScaffold -ShortName NMT -WhatIf +``` + +Preview the managed scaffold apply workflow without writing or overwriting files. + +## PARAMETERS + +### -Confirm + +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: System.Management.Automation.SwitchParameter +DefaultValue: '' +SupportsWildcards: false +Aliases: +- cf +ParameterSets: +- Name: (All) + Position: Named + IsRequired: false + ValueFromPipeline: false + ValueFromPipelineByPropertyName: false + ValueFromRemainingArguments: false +DontShow: false +AcceptedValues: [] +HelpMessage: '' +``` + +### -OverrideWarning + +Skip the overwrite warning prompt and continue directly with the managed scaffold apply or refresh workflow. + +```yaml +Type: System.Management.Automation.SwitchParameter +DefaultValue: '' +SupportsWildcards: false +Aliases: [] +ParameterSets: +- Name: (All) + Position: Named + IsRequired: false + ValueFromPipeline: false + ValueFromPipelineByPropertyName: false + ValueFromRemainingArguments: false +DontShow: false +AcceptedValues: [] +HelpMessage: '' +``` + +### -Path + +Project root that contains the existing `project.json` file. Defaults to the current location. + +```yaml +Type: System.String +DefaultValue: '' +SupportsWildcards: false +Aliases: [] +ParameterSets: +- Name: (All) + Position: 0 + IsRequired: false + ValueFromPipeline: false + ValueFromPipelineByPropertyName: false + ValueFromRemainingArguments: false +DontShow: false +AcceptedValues: [] +HelpMessage: '' +``` + +### -ShortName + +Short placeholder name used in generated guidance tokens such as `Invoke-*`. Use a value that starts with a letter and contains only letters or numbers. + +```yaml +Type: System.String +DefaultValue: '' +SupportsWildcards: false +Aliases: [] +ParameterSets: +- Name: (All) + Position: 1 + IsRequired: true + ValueFromPipeline: false + ValueFromPipelineByPropertyName: false + ValueFromRemainingArguments: false +DontShow: false +AcceptedValues: [] +HelpMessage: '' +``` + +### -WhatIf + +Runs the command in a mode that only reports what would happen without performing the actions. + +```yaml +Type: System.Management.Automation.SwitchParameter +DefaultValue: '' +SupportsWildcards: false +Aliases: +- wi +ParameterSets: +- Name: (All) + Position: Named + IsRequired: false + ValueFromPipeline: false + ValueFromPipelineByPropertyName: false + ValueFromRemainingArguments: false +DontShow: false +AcceptedValues: [] +HelpMessage: '' +``` + +### CommonParameters + +This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see +[about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216). + +## INPUTS + +### None + +You can't pipe objects to this cmdlet. + +## OUTPUTS + +### None + +This cmdlet does not emit an output object. + +## NOTES + +This workflow does not persist `ShortName` to `project.json` and does not infer it from any existing scaffold files. It refreshes only these Nova-managed paths: + +- `.github/agents/` +- `.github/instructions/` +- `.github/prompts/` +- `.github/skills/` +- `.github/copilot-instructions.md` +- `.github/pull_request_template.md` +- `AGENTS.md` +- `CONTRIBUTING.md` + +`README.md`, `CHANGELOG.md`, and `RELEASE_NOTE.md` are created only when they are missing. + +## RELATED LINKS + +- https://github.com/stiwicourage/NovaModuleTools/blob/main/docs/NovaModuleTools/en-US/Initialize-NovaModule.md +- https://github.com/stiwicourage/NovaModuleTools/blob/main/docs/NovaModuleTools/en-US/Get-NovaProjectInfo.md diff --git a/docs/NovaModuleTools/en-US/Invoke-NovaBuild.md b/docs/NovaModuleTools/en-US/Invoke-NovaBuild.md index 4a20df7..f6c8f37 100644 --- a/docs/NovaModuleTools/en-US/Invoke-NovaBuild.md +++ b/docs/NovaModuleTools/en-US/Invoke-NovaBuild.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/core-workflows.html#build' Locale: en-US Module Name: NovaModuleTools ms.date: 04/25/2026 diff --git a/docs/NovaModuleTools/en-US/Invoke-NovaRelease.md b/docs/NovaModuleTools/en-US/Invoke-NovaRelease.md index 352a37a..9b0683f 100644 --- a/docs/NovaModuleTools/en-US/Invoke-NovaRelease.md +++ b/docs/NovaModuleTools/en-US/Invoke-NovaRelease.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/packaging-and-delivery.html#release' Locale: en-US Module Name: NovaModuleTools ms.date: 05/03/2026 diff --git a/docs/NovaModuleTools/en-US/New-NovaModulePackage.md b/docs/NovaModuleTools/en-US/New-NovaModulePackage.md index 257971b..751e72e 100644 --- a/docs/NovaModuleTools/en-US/New-NovaModulePackage.md +++ b/docs/NovaModuleTools/en-US/New-NovaModulePackage.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/packaging-and-delivery.html#pack' Locale: en-US Module Name: NovaModuleTools ms.date: 04/26/2026 diff --git a/docs/NovaModuleTools/en-US/Publish-NovaModule.md b/docs/NovaModuleTools/en-US/Publish-NovaModule.md index a9271e4..886cca7 100644 --- a/docs/NovaModuleTools/en-US/Publish-NovaModule.md +++ b/docs/NovaModuleTools/en-US/Publish-NovaModule.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/packaging-and-delivery.html#publish' Locale: en-US Module Name: NovaModuleTools ms.date: 04/26/2026 diff --git a/docs/NovaModuleTools/en-US/Set-NovaUpdateNotificationPreference.md b/docs/NovaModuleTools/en-US/Set-NovaUpdateNotificationPreference.md index c84effb..07a1d0f 100644 --- a/docs/NovaModuleTools/en-US/Set-NovaUpdateNotificationPreference.md +++ b/docs/NovaModuleTools/en-US/Set-NovaUpdateNotificationPreference.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/versioning-and-updates.html#notification-preferences' Locale: en-US Module Name: NovaModuleTools ms.date: 04/25/2026 diff --git a/docs/NovaModuleTools/en-US/Test-NovaBuild.md b/docs/NovaModuleTools/en-US/Test-NovaBuild.md index cf54b51..0c3ddd2 100644 --- a/docs/NovaModuleTools/en-US/Test-NovaBuild.md +++ b/docs/NovaModuleTools/en-US/Test-NovaBuild.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/core-workflows.html#test' Locale: en-US Module Name: NovaModuleTools ms.date: 04/26/2026 diff --git a/docs/NovaModuleTools/en-US/Update-NovaModuleTools.md b/docs/NovaModuleTools/en-US/Update-NovaModuleTools.md index e73fc39..de3b66d 100644 --- a/docs/NovaModuleTools/en-US/Update-NovaModuleTools.md +++ b/docs/NovaModuleTools/en-US/Update-NovaModuleTools.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/versioning-and-updates.html#self-update' Locale: en-US Module Name: NovaModuleTools ms.date: 04/25/2026 diff --git a/docs/NovaModuleTools/en-US/Update-NovaModuleVersion.md b/docs/NovaModuleTools/en-US/Update-NovaModuleVersion.md index dfba2f2..7c87e57 100644 --- a/docs/NovaModuleTools/en-US/Update-NovaModuleVersion.md +++ b/docs/NovaModuleTools/en-US/Update-NovaModuleVersion.md @@ -1,7 +1,7 @@ --- document type: cmdlet external help file: NovaModuleTools-Help.xml -HelpUri: '' +HelpUri: 'https://www.novamoduletools.com/versioning-and-updates.html#bump' Locale: en-US Module Name: NovaModuleTools ms.date: 04/25/2026 diff --git a/docs/commands.html b/docs/commands.html index 5e8b863..c9e4f19 100644 --- a/docs/commands.html +++ b/docs/commands.html @@ -208,6 +208,52 @@

Start a new project

See the scaffold guide

+
+

Apply or refresh the copilot workflow

+ +
+

Cmdlet: Invoke-NovaAgenticCopilotScaffold

+
+

Add Nova's maintained Agentic Copilot workflow to an existing project, or + refresh an older Nova-managed scaffold to the current version.

+
    +
  • Use when: the project already exists and you want Nova to add or refresh + the managed Agentic guidance files without recreating the scaffold +
  • +
  • Requires: a valid project.json and an explicit short name + on every run for placeholders such as Invoke-<ShortName>*
  • + +
  • Common parameters: + -ShortName, -Path, -WhatIf, and + -OverrideWarning
  • +
  • Default safety: Nova prompts before overwriting the managed scaffold + paths and only creates README.md, CHANGELOG.md, and + RELEASE_NOTE.md when they are missing +
  • +
+
+
+

Apply the managed scaffold

+

Showing: PowerShell

+
+ +
+
PS> Invoke-NovaAgenticCopilotScaffold -ShortName NMT
+PS> Invoke-NovaAgenticCopilotScaffold -Path ~/Work/MyModule -ShortName NMT -OverrideWarning
+
+
+

See the copilot apply + guide

+
+

Inspect the current project