Quality
The strongest, least contested. Generic prompts produce Write-Host for data, no -WhatIf, no pipeline support. Two thirds of GPT-4o's PowerShell fails the analyzer. Lead with this for practitioners.
PS C:\> Get-SystemMap
The one artifact is AGENTS.md — the PowerShell Engineer Standard. The model is the demo. The benchmark is the moat, because models age out in a year and yardsticks do not.
The problem, measured
ShouldProcess. Near zero on pipeline support.Models are decent at spotting what is present and terrible at noticing what is absent. A linter finds what is there. Only a standard tells a model what should have been.
Every figure above is from K. Zhang et al., Lightweight Yet Secure: Secure Scripting Language Generation via Lightweight LLMs (arXiv:2601.06419): the >60%-insecure result in the abstract, 34% compliance / two-thirds-violate in §4.2 and Table III, ~50% of The Stack in §3.1, and the 3% ShouldProcess-detection score in Table XI.
The thesis
Two ways the Standard reaches a model
| Mode | How | Cost / call | Always current? | Works everywhere? |
|---|---|---|---|---|
| Attached | Standard in the system prompt | ~15,000 tokens | Yes, instantly | Needs a prompt field |
| Adopted | Files committed to the repo | 0 (agent reads it) | Yes | Any agent that reads AGENTS.md |
Adopted is /adopt: it writes AGENTS.md, Cursor rules, Copilot instructions, analyzer settings, and a CI action. Cheapest to build, most durable, and requires nobody to install anything.
The four value arguments
The strongest, least contested. Generic prompts produce Write-Host for data, no -WhatIf, no pipeline support. Two thirds of GPT-4o's PowerShell fails the analyzer. Lead with this for practitioners.
The sharpest technical argument, and one nobody else can make: your own Standard is what makes API use expensive. ~15,000 tokens, re-sent every call, tripling cost. Commit it to the repo instead and agents read it for free.
True at volume, false for casuals. Most people pay $20/mo flat, and subscriptions beat API pricing below ~5M input tokens/month. Say so before someone else does.
The unbeatable one, and the reason to lead for regulated buyers. No script leaves the building. Works air-gapped, on a plane, when procurement says no, when the vendor has an outage.
Generation and repair are different products
| GPT-4o | Small tuned model | |
|---|---|---|
| Generation (functional) | 42% | 24% |
| Repair (fix success) | 54.8% | 87.8% |
| First attempt | After one repair | |
|---|---|---|
| Arm A (no Standard) | 17.2 | 26.9 |
| Arm B (Standard in context) | 45.6 | 54.2 |
Adding PSScriptAnalyzer to GPT-4o took fix success from 54.8% to 93.5%. The repair pass alone is worth ~8.6 points. If a loop is worth more than the training it would replace, that is a product finding on its own — and it is exactly the thesis the VS Code extension is built on.
GPT-4o and small-model figures from Zhang et al., arXiv:2601.06419: 42% generation and 54.8% unguided repair for GPT-4o, ~24% generation for a lightweight base model, 87.8% for the fine-tuned model (Tables III, VI, VII), and 54.8%→93.5% once PSScriptAnalyzer feedback is added (Table VII). The Arm A / Arm B rows are this project's own measurements, not from the study.
The measurement spine & the routing architecture
scoring/
parse gate · surface validator · analyzer
AST checks · voice lint · style checks
│
┌────────┬───────┴───────┬───────────┐
│ │ │ │
dataset VS Code PSEval MCP server
filter repair loop benchmark any agent
any agent → MCP: generate_powershell(task)
│
├─ generate locally 0 tokens, offline
├─ scoring/ verifies local, static, safe
├─ repair pass local
│
├─ clean → return "47 lines, 0 violations" ~20 tok
└─ failed → escalate with analyzer output $$$
The surface validator is the novel piece. Walk the AST, resolve every command and parameter against the user's real installed modules, reject anything invented. Shipped standalone it becomes Test-PSESurface. That changes the claim from "our model hallucinates less" to "our toolchain makes hallucination detectable" — which covers every model, frontier ones included.
Get the tools
Status, honestly
| The Standard (AGENTS.md) | Shipped v1.1.0, MIT |
| Custom GPT | Shipped #2 PowerShell GPT, 5,000+ conversations |
| VS Code extension | Shipped |
| Chrome extension | Shipped |
| Firefox extension | Shipping |
| Scorer + surface validator | Built 259 tests, version-aware, live Windows manifests |
| Arm A / Arm B baseline | Measured Arm B = 45.6 first attempt, 54.2 after repair |
| working-with-ai.md · Manifesto | Written |
| PSEval benchmark | Held-out set frozen not published; field survey unrun |
| Analyzer custom rules · GitHub Action · MCP server · Gallery module · Domain packs | Planned |
"$Path: $_" fails to parse; needs ${Path}. Section 15.1's own guidance walks models into it. 13% of all candidates..EXAMPLE from splatting; §17.1 still enforces a line limit — and splatting was the mechanism for shortening lines.~120 characters. The tilde cannot be mechanized.These are findings the scorer surfaces on its own — the clearest demonstration of the feedback loop working.
What is durable
The Standard, PSEval, and the surface validator. Those get cited, forked, and built on. A model exists for a year. A yardstick is a thing other people are measured by.
The single most valuable unbuilt artifact is the benchmark run across the whole field — every serious community and frontier PowerShell model on one table. A benchmark carrying only your own model looks self-serving; a field survey does not, and the person who ran it owns the yardstick regardless of where any single model places.