skills/powershell/SKILL.md
PowerShell 腳本撰寫規範:嚴格模式、錯誤處理、參數宣告、Verb-Noun 命名與 5.1 相容語法邊界。當撰寫或修改 `*.ps1` / `*.psm1` 腳本時自動套用。
npx skillsauth add CloudyWing/ai-dotfiles powershellInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
當撰寫或修改 *.ps1、*.psm1 檔案時,請自動套用以下規範。
powershell.exe 呼叫),必須遵守 5.1 語法邊界,並在腳本開頭以 #Requires -Version 5.1 標明。目標包含 5.1 時,下列 7+ 語法禁止使用:
&&、|| → 改用 if ($?) 或檢查 $LASTEXITCODE。? :、null 合併 ??、null 條件 ?. → 改用 if/else 與明確的 $null 檢查。ForEach-Object -Parallel。Get-Content -AsByteStream → 5.1 改用 -Encoding Byte。$IsWindows、$IsLinux(5.1 不存在,引用會因 StrictMode 報錯)。僅目標 7+ 的腳本不受此限,允許使用上述語法。
腳本開頭必須宣告嚴格模式與錯誤偏好:
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
可預期且需處理的失敗,以 try/catch 包覆並在 catch 中給出具體錯誤訊息;不可吞掉例外後靜默繼續。
呼叫原生執行檔(git、dotnet 等)後,必須檢查 $LASTEXITCODE,失敗時終止或回報;原生命令失敗不會觸發 $ErrorActionPreference = 'Stop'。
腳本以 exit 0 / exit 1 明確回傳結束碼,供 CI 與呼叫端判斷成敗。
[CmdletBinding()] 搭配 param() 區塊,不讀取 $args。[Parameter(Mandatory)],可枚舉值用 [ValidateSet()],路徑類參數視需要加 [ValidateScript({ Test-Path $_ })]。SupportsShouldProcess 並在執行點呼叫 $PSCmdlet.ShouldProcess(),使呼叫端可用 -WhatIf 預演。[CmdletBinding(SupportsShouldProcess)]
param(
[Parameter(Mandatory)]
[string]$TargetPath,
[ValidateSet('Install', 'Uninstall')]
[string]$Mode = 'Install'
)
Get-Verb 列出的核准動詞(如 Get-、Set-、New-、Remove-、Test-、Install-)。ls、cat、%、?),一律寫完整 cmdlet 名稱,確保可讀性與跨平台一致。Write-Host,函式的回傳資料直接輸出物件(隱式 output)。兩者不可混用,避免狀態訊息污染管線回傳值。Write-Warning,除錯細節用 Write-Verbose(搭配 [CmdletBinding()] 由 -Verbose 控制),不以 Write-Host 模擬。$null 或加 | Out-Null。Join-Path,不手動串接分隔符。$PSScriptRoot,不依賴執行時的工作目錄。$null 時將 $null 放在運算子左側(if ($null -eq $value)),避免集合比較的語意陷阱。Read-Host、Get-Credential、確認提示);需要確認行為時改以參數(如 -Force)控制。tools
產生或補齊 .gitattributes,統一行尾處理、二進位識別與 lock files 標記,保留既有自訂偏好。
development
產生或補齊前端 Lint 設定(Prettier + ESLint Flat Config),統一格式化與程式碼品質規則,保留既有自訂偏好。
testing
依據事實校閱報告修改技術文件:以事實層為不可違反的約束,由改檔者負責表達層的措辭與行文連貫。Use when the user asks to apply fact-check results to a document, or to edit a document based on a previously produced fact-check-report.md.
data-ai
多份資料檔整合流程。當需要將兩份以上的資料檔(如 JSON、CSV)合併、補齊闕漏欄位或去重成單一檔案時使用。以 dry-run、筆數核對與抽樣比對降低整合錯誤。