安装方式
手动下载安装
下载 ZIP 后解压到技能目录即可安装。若在桌面客户端 WebView中直接下载出现异常,本站会改为提示页 + 原始链接,请按页内说明操作。
下载 ZIP (shub-powershell-reliable-v1.0.0.zip)触发指令
/powershell-reliable
跨平台安装指引
该技能声明兼容以下 1 个平台,将 ZIP 解压到对应目录即可被识别。
unzip shub-powershell-reliable-v1.0.0.zip -d ~/.claude/skills/
mkdir -p 创建;启用 Skill 后请重启对应 Agent 让配置生效。
使用指南
PowerShell 可靠脚本
围绕 PowerShell 可靠脚本:错误处理、模块加载与跨平台(pwsh)差异;执行策略与签名见微软文档。 无需在每次任务前把零散英文说明手工拼进上下文,也 减少 与客户端默认行为脱节的试错;具体命令、钩子与 JSON 参数仍以 ZIP 包内 SKILL.md 为权威。下文结构与站内 MCP CLI 类专题稿相同:何时用、前置、流程、速查与故障。
何时使用
- 错误处理、模块加载与跨平台(pwsh)差异
- 执行策略与签名见微软文档
- 已获取本技能 ZIP,并准备在 Claude Code / OpenClaw 中按 SKILL.md 挂载。
- 希望用中文专题稿快速判断「该不该启用」,再深入英文 SKILL 查参数与边界。
- 需要与团队对齐同一套触发方式、目录约定或回调格式时。
前置条件
- 通用:可运行 Claude Code 或文档要求的客户端;有可读写的项目工作区(或 SKILL.md 指定的沙箱目录)。
- 权威细节:API Key / OAuth、钩子路径、环境变量以 ZIP 内 SKILL.md 为准。
典型流程
- 从 ClawHub / 站内分发获取技能 ZIP,校验版本与校验和(若提供)。
- 阅读 SKILL.md 的安装段落:目录落点、客户端类型(Claude Code / OpenClaw / 脚本)。
- 用文档中的最小示例完成第一次调用(单文件修改、单次查询或单次委派)。
- 确认工作目录、权限边界与输出路径后,再处理多文件或长耗时任务。
- 需要回调 / Webhook / 通知时,按 SKILL.md 配置端点并在测试环境先验通。
与 ZIP / SKILL.md 的关系
站内专题稿与 MCP CLI 类 oss 稿同样:概括何时用、怎么接、怎么排错;命令模板、钩子名、JSON 字段、版本矩阵一律以 ZIP 内 SKILL.md 与 ClawHub 上游为准。
命令示例(摘自包内 SKILL.md)
以下为从上游 SKILL.md(或入库正文)自动抽取的终端/脚本片段;路径、环境变量与参数以当前 ZIP 与官方说明为准。
ClawHub slug:powershell-reliable(安装命令以 SKILL.md / claw CLI 为准)。
mkdir test && cd test && echo done
$ErrorActionPreference = 'Stop'
try {
New-Item -ItemType Directory -Path test -Force
Set-Location test
Write-Host 'done'
} catch {
Write-Error "Failed: $_"
exit 1
}
git commit -m "message"
git commit -Message "message"
# Or use splatting:
$params = @{ Message = "message" }
git commit @params
$path = "C:/Users/name/file.txt"
$path = Join-Path $env:USERPROFILE "file.txt"
# Or use literal paths:
$path = 'C:\Users\name\file.txt'
echo "text" > file.txt
"text" | Out-File -FilePath file.txt -Encoding UTF8
# Start background job
$job = Start-Job -ScriptBlock {
param($arg)
# Long operation
} -ArgumentList $arg
# Wait with timeout
Wait-Job $job -Timeout 300
# Get results
if ($job.State -eq 'Completed') {
Receive-Job $job
} else {
Stop-Job $job
Write-Warning "Job timed out"
}
function Invoke-Retry {
param(
[scriptblock]$Command,
[int]$MaxAttempts = 3,
[int]$DelaySeconds = 2
)
$attempt = 0
while ($attempt -lt $MaxAttempts) {
try {
$attempt++
return & $Command
} catch {
if ($attempt -eq $MaxAttempts) { throw }
Start-Sleep -Seconds $DelaySeconds
}
}
}
# Usage
Invoke-Retry -Command { Invoke-WebRequest -Uri $url } -MaxAttempts 3
站内入库时的触发命令(完整语义见 ZIP):
# 使用本技能时可在对话中引用或执行上述指令;完整参数与示例见下载包内 SKILL.md。
/powershell-reliable
最佳实践
- 先 SKILL.md 再猜参数;站内专题稿不替代 schema 与必填字段说明。
- 委派任务时写清验收标准(命令、文件路径、测试命令),减少来回追问。
- 长任务用文档推荐的回调 / 日志落盘代替高频轮询,省 Token 也省机器负载。
- 多技能同时启用时,注意钩子加载顺序与重复工具调用(以 SKILL.md 冲突说明为准)。
调试与排错
- 打开 stderr 与客户端日志;PTY/tmux 场景同时看面板最后几十行输出。
- 参数错误时对照 SKILL.md 中的 JSON/CLI 示例(引号、转义、工作目录)。
- 网络类失败:查代理、防火墙、MCP 传输方式(stdio / HTTP / SSE)。
速查
| 动作 | 说明 |
|------|------|
| 获取技能包 | ClawHub / 站内 ZIP,核对版本 |
| 权威步骤 | 优先阅读 ZIP 内 SKILL.md |
| 首次试跑 | 使用 SKILL.md 最小示例 |
| 验收 | 对照路径、测试命令或回调负载 |
常见故障
- 无输出或立即退出 → 工作目录错误、依赖未装、或 Claude Code 未登录;按 SKILL.md 自检清单执行。
- 权限被拒绝 → 检查沙箱路径、
--permission-mode与工具白名单。 - 与简介不符 → 以英文 SKILL 与上游仓库为准,站内稿仅作结构化导读。
# PowerShell Reliable Execution
Execute commands reliably on Windows PowerShell. Avoid common pitfalls like `&&` chaining, parameter swallowing, and session interruptions.
## Problem Statement
Windows PowerShell differs from bash in critical ways:
| Issue | Bash | PowerShell | Solution |
|-------|------|------------|----------|
| Command chaining | `cmd1 && cmd2` | `cmd1 -ErrorAction Stop; if ($?) { cmd2 }` | Use semicolons + error handling |
| Parameter parsing | `-arg value` | `-Argument value` (case-insensitive) | Use full parameter names |
| Path separators | `/` | `\` (or `/` in some cmdlets) | Use `Join-Path` |
| Output redirection | `>` `>>` | `>` `>>` (encoding issues) | Use `Out-File -Encoding UTF8` |
| Environment vars | `$VAR` | `$env:VAR` | Use `$env:` prefix |
## Core Patterns
### 1. Safe Command Chaining
**Wrong**:
```powershell
mkdir test && cd test && echo done
```
**Right**:
```powershell
$ErrorActionPreference = 'Stop'
try {
New-Item -ItemType Directory -Path test -Force
Set-Location test
Write-Host 'done'
} catch {
Write-Error "Failed: $_"
exit 1
}
```
### 2. Parameter Safety
**Wrong**:
```powershell
git commit -m "message"
```
**Right**:
```powershell
git commit -Message "message"
# Or use splatting:
$params = @{ Message = "message" }
git commit @params
```
### 3. Path Handling
**Wrong**:
```powershell
$path = "C:/Users/name/file.txt"
```
**Right**:
```powershell
$path = Join-Path $env:USERPROFILE "file.txt"
# Or use literal paths:
$path = 'C:\Users\name\file.txt'
```
### 4. Output Encoding
**Wrong**:
```powershell
echo "text" > file.txt
```
**Right**:
```powershell
"text" | Out-File -FilePath file.txt -Encoding UTF8
```
### 5. Session Continuity
For long-running commands:
```powershell
# Start background job
$job = Start-Job -ScriptBlock {
param($arg)
# Long operation
} -ArgumentList $arg
# Wait with timeout
Wait-Job $job -Timeout 300
# Get results
if ($job.State -eq 'Completed') {
Receive-Job $job
} else {
Stop-Job $job
Write-Warning "Job timed out"
}
```
## Error Recovery
### Retry Pattern
```powershell
function Invoke-Retry {
param(
[scriptblock]$Command,
[int]$MaxAttempts = 3,
[int]$DelaySeconds = 2
)
$attempt = 0
while ($attempt -lt $MaxAttempts) {
try {
$attempt++
return & $Command
} catch {
if ($attempt -eq $MaxAttempts) { throw }
Start-Sleep -Seconds $DelaySeconds
}
}
}
# Usage
Invoke-Retry -Command { Invoke-WebRequest -Uri $url } -MaxAttempts 3
```
### Interruption Recovery
```powershell
# Checkpoint pattern
$checkpointFile = ".checkpoint.json"
if (Test-Path $checkpointFile) {
$state = Get-Content $checkpointFile | ConvertFrom-Json
Write-Host "Resuming from step $($state.step)"
} else {
$state = @{ step = 0 }
}
switch ($state.step) {
0 {
# Step 1
$state.step = 1
$state | ConvertTo-Json | Out-File $checkpointFile
}
1 {
# Step 2
Remove-Item $checkpointFile
}
}
```
## Privacy Security
**All execution is local**:
- NO command logging to external services
- NO credential capture in scripts
- NO automatic upload of execution results
- Sensitive data handled via `[SecureString]`
- Checkpoint files stored in working directory only
**Sensitive Data Filter**:
Before writing any checkpoint or log:
- Exclude `Password`, `Token`, `Secret`, `ApiKey`
- Use `[SecureString]` for credentials
- Never echo sensitive variables
## Executable Completion Criteria
A PowerShell command execution is reliable if and only if:
| Criteria | Verification |
|----------|-------------|
| No `&&` chaining | `Select-String '&&' script.ps1` returns nothing |
| Error handling present | `Select-String 'try|catch|ErrorAction' script.ps1` matches |
| Paths use Join-Path | `Select-String 'Join-Path|\\$env:' script.ps1` matches |
| Output encoding specified | `Select-String 'Out-File.*Encoding' script.ps1` matches |
| Checkpoint for long ops | Checkpoint file pattern present for ops > 60s |
| No hardcoded secrets | `Select-String 'password|token|secret' script.ps1` returns nothing |
## Quick Reference
### Common Cmdlet Mappings
| Task | Bash | PowerShell |
|------|------|------------|
| List files | `ls -la` | `Get-ChildItem -Force` |
| Change dir | `cd /path` | `Set-Location C:\path` |
| Create dir | `mkdir x` | `New-Item -ItemType Directory x` |
| Copy file | `cp a b` | `Copy-Item a b` |
| Move file | `mv a b` | `Move-Item a b` |
| Delete | `rm x` | `Remove-Item x` |
| View file | `cat x` | `Get-Content x` |
| Edit file | `vim x` | `notepad x` |
| Find text | `grep x` | `Select-String x` |
| Pipe | `\|` | `\|` (same) |
| Redirect | `>` | `>` (use Out-File) |
### Splatting Template
```powershell
$params = @{
Path = $filePath
Encoding = 'UTF8'
Force = $true
}
Set-Content @params
```
## References
- `references/privacy-checklist.md` - Privacy security checklist
- Microsoft Docs: [PowerShell Best Practices](https://docs.microsoft.com/powershell)
---
**Execute reliably. Recover gracefully.**