skills/powershell-windows/SKILL.md
Padrões de PowerShell no Windows. Armadilhas críticas, sintaxe de operadores, tratamento de erros.
npx skillsauth add lucasfdigital/orchard powershell-windowsInstall 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.
Padrões críticos e armadilhas para o PowerShell no Windows.
| ❌ Errado | ✅ Correto |
| :--- | :--- |
| if (Test-Path "a" -or Test-Path "b") | if ((Test-Path "a") -or (Test-Path "b")) |
| if (Get-Item $x -and $y -eq 5) | if ((Get-Item $x) -and ($y -eq 5)) |
Regra: Cada chamada de cmdlet DEVE estar entre parênteses ao usar operadores lógicos.
| Propósito | ❌ NÃO Use | ✅ Use | | :--- | :--- | :--- | | Sucesso | ✅ ✓ | [OK] [+] | | Erro | ❌ ✗ 🔴 | [!] [X] | | Aviso | ⚠️ 🟡 | [*] [WARN] | | Info | ℹ️ 🔵 | [i] [INFO] | | Progresso | ⏳ | [...] |
Regra: Use apenas caracteres ASCII em scripts PowerShell.
| ❌ Errado | ✅ Correto |
| :--- | :--- |
| $array.Count -gt 0 | $array -and $array.Count -gt 0 |
| $text.Length | if ($text) { $text.Length } |
| ❌ Errado | ✅ Correto |
| :--- | :--- |
| "Value: $($obj.prop.sub)" | Armazene em uma variável primeiro |
Padrão:
$value = $obj.prop.sub
Write-Output "Value: $value"
| Valor | Uso | | :--- | :--- | | Stop | Desenvolvimento (falha rápida) | | Continue | Scripts de produção | | SilentlyContinue | Quando erros são esperados |
return dentro do bloco try.finally para limpeza (cleanup).try/catch.| Padrão | Uso |
| :--- | :--- |
| Caminho literal | C:\Users\User\file.txt |
| Caminho de variável | Join-Path $env:USERPROFILE "file.txt" |
| Caminho relativo | Join-Path $ScriptDir "data" |
Regra: Use Join-Path para segurança entre plataformas.
| Operação | Sintaxe |
| :--- | :--- |
| Array vazio | $array = @() |
| Adicionar item | $array += $item |
| ArrayList add | $list.Add($item) | Out-Null |
| ❌ Errado | ✅ Correto |
| :--- | :--- |
| ConvertTo-Json | ConvertTo-Json -Depth 10 |
Regra: Sempre especifique o -Depth para objetos aninhados.
| Operação | Padrão |
| :--- | :--- |
| Leitura | Get-Content "file.json" -Raw | ConvertFrom-Json |
| Escrita | $data | ConvertTo-Json -Depth 10 | Out-File "file.json" -Encoding UTF8 |
| Mensagem de Erro | Causa | Correção | | :--- | :--- | :--- | | "parameter 'or'" | Falta de parênteses | Envolva os cmdlets em () | | "Unexpected token" | Caractere Unicode | Use apenas ASCII | | "Cannot find property" | Objeto nulo | Verifique se é nulo primeiro | | "Cannot convert" | Incompatibilidade de tipo | Use .ToString() |
# Modo estrito
Set-StrictMode -Version Latest
$ErrorActionPreference = "Continue"
# Caminhos
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
# Principal
try {
# Lógica aqui
Write-Output "[OK] Pronto"
exit 0
}
catch {
Write-Warning "Erro: $_"
exit 1
}
Lembre-se: O PowerShell possui regras de sintaxe únicas. Parênteses, uso apenas de ASCII e verificações de nulo não são negociáveis.
development
Princípios de teste de aplicações web. E2E, Playwright, estratégias de auditoria profunda.
development
Revisar o código da UI para conformidade com as Web Interface Guidelines. Use quando solicitado para "revisar minha UI", "checar acessibilidade", "auditar design", "revisar UX" ou "verificar meu site em relação às melhores práticas".
testing
Princípios avançados de análise de vulnerabilidade. OWASP 2025, Segurança da Cadeia de Suprimentos (Supply Chain), mapeamento de superfície de ataque e priorização de riscos.
testing
Padrões e princípios de teste. Estratégias de testes unitários, de integração e mocking.