PowerShell Engineer
Assemble a Standard-compliant PowerShell prompt, generate with your Copilot model, and verify the result with PSScriptAnalyzer before you ever see it.
The browser extension moves better prompts into a chat box. This one closes the loop: it reads your workspace, generates against the PowerShell Engineer Standard, runs the analyzer over what came back, feeds the exact violations back to the model, and only then shows you the result — as an edit you review.
The verification loop
READ workspace (manifest, analyzer settings, existing function names)
ASSEMBLE only the Standard sections the task needs — never all ~950 lines
GENERATE your Copilot model, streamed
EXTRACT the PowerShell from the response
VERIFY Invoke-ScriptAnalyzer on a temp file (static — never executes it)
REPAIR feed violations back by rule name and line, max 2 passes
PRESENT apply as a reviewable edit
If the analyzer can't run, the result is labelled unverified — never dressed up as a pass.
Surfaces
@pse chat participant with /script, /module, /plan, /refactor, /error, /adopt. The Standard is guaranteed present because the extension assembles the prompt.
- Language model tools
#pseAnalyze and #pseTest — global, so Copilot's own agent mode can call your verification. pseTest runs Pester and asks before every run because Pester executes code.
- Commands (palette): New Function, Scaffold Module, Refactor Selection to Standard, Adopt Standard in This Workspace.
- Code actions — a lightbulb on any PSScriptAnalyzer diagnostic: Fix with PowerShell Engineer.
/adopt writes AGENTS.md, .github/copilot-instructions.md, .cursor/rules/*.mdc, PSScriptAnalyzerSettings.psd1, and a CI workflow so Copilot, Cursor, and Claude Code follow the Standard with no extension installed at all. It never overwrites a file without asking.
Requirements
- PowerShell (
pwsh 7+ or Windows powershell) on PATH — for verification. Generation works without it; verification is skipped and labelled.
- PSScriptAnalyzer —
Install-Module PSScriptAnalyzer -Scope CurrentUser. The extension never installs modules for you.
- A language model — GitHub Copilot. Without one, the extension assembles the prompt and copies it to your clipboard.
- Pester (optional) — only for
pseTest.
Safety
- PSScriptAnalyzer is static (parses, never executes) — run automatically.
- Pester executes code — never runs without a per-invocation confirmation.
- No file is written outside a reviewable edit. No module is installed for you. In an untrusted workspace, only read-only assembly is available.
- No telemetry.
Privacy
Your prompts go to your configured language model provider under their terms, exactly as if you typed them. Nothing is sent to us. See the privacy policy.
License
CC BY 4.0 — full text in the bundled LICENSE file. Not affiliated with or endorsed by Microsoft. PowerShell is a trademark of Microsoft Corporation.