This skill should be used when writing, reviewing, or refactoring PowerShell scripts and cmdlets. It enforces idiomatic PowerShell practices including approved verb-noun naming, parameter validation, pipeline support, ShouldProcess for destructive operations, correct message stream usage, structured object output, and comment-based help documentation.
Get-Verb approved verbs; never use non-standard verbs or aliases in scripts.[PSCustomObject] to the pipeline; never use Write-Host for data.ValueFromPipeline / ValueFromPipelineByPropertyName with Begin/Process/End.SupportsShouldProcess + ConfirmImpact to any function that modifies system state.ValidateSet, ValidateRange, ValidateScript, ValidatePattern on all parameters..SYNOPSIS, .DESCRIPTION, .PARAMETER, .EXAMPLE.Load these files on demand based on the task:
references/naming-parameters-pipeline.md — Verb-Noun naming, variable casing, no-aliases rule, parameter design, pipeline patterns, PassThru pattern.references/error-handling-advanced-patterns.md — ShouldProcess, ConfirmImpact levels, message streams, try/catch patterns, splatting, dynamic parameters, tab completion.references/help-testing-quick-reference.md — Comment-based help template, Pester test structure, test checklist, quick reference tables.[CmdletBinding()].naming-parameters-pipeline.md to verify verb, variable casing, and pipeline wiring.Process block for pipeline items, return [PSCustomObject], add ShouldProcess for mutations.error-handling-advanced-patterns.md for try/catch and stream patterns.help-testing-quick-reference.md for help template and Pester test structure.Get-Verb: Get / Set / New / Remove / Update / Invoke[ValidateSet], [ValidateRange], [ValidateScript][Parameter(ValueFromPipeline)] + Process block-PassThru is specified[CmdletBinding(SupportsShouldProcess)] + ShouldProcessWrite-Verbose; never Write-Host for operational messages$params = @{...}; Cmdlet @params<# .SYNOPSIS .DESCRIPTION .EXAMPLE #> inside function