mcpField
W
windows-shell-reliability

windows-shell-reliability

github.com/sickn33開発48.7k73 回インストール今日更新
リポジトリ

windows-shell-reliability について

Windows の PowerShell と CMD でコマンド、スクリプト、自動化を安定して実行するためのスキルです。Windows 環境の開発やデバッグ向けに、文字コード、パス、dotnet CLI、エラー対応を扱います。

主な機能

  1. 01リダイレクトと文字コードの処理
  2. 02空白を含むパスの引用
  3. 03PowerShell と CMD のコマンド選択
  4. 04dotnet CLI のビルドとログの改善
  5. 05環境変数や長いパスの問題の調査

活用シーン

  1. 01リダイレクトした出力の文字化け修正
  2. 02空白を含むパスからの実行やビルド
  3. 03PowerShell スクリプトでの堅牢なファイル操作
  4. 04PATH、権限、長いパスのエラー調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill windows-shell-reliability

インストール後、Claude Code で/windows-shell-reliabilityを入力して読み込まれたか確認します。

詳細

Windows シェルの信頼性に関するパターン

PowerShell と CMD を介して Windows でコマンドを実行する際のベストプラクティスです。

使用する場面

Windows システムで実行するスクリプトや自動化の開発、デバッグを行うとき、特にファイルパス、文字エンコーディング、標準的な CLI ツールを扱う場合に、このスキルを使用します。


1. エンコーディングとリダイレクト

重大:PowerShell のバージョンによるリダイレクトの違い

古い Windows PowerShell のリリースでは、ネイティブコマンドの出力が書き換えられ、その後の処理に支障をきたす場合があります。PowerShell 7.4 以降では、標準出力をリダイレクトする際にバイトストリームが保持されるため、UTF-8 変換の回避策は、古いシェルの動作に対処する場合や、すでに読み取れなくなっているログファイルを扱う場合にのみ適用してください。

問題症状解決策
dotnet > log.txt古い Windows PowerShell で view_file が失敗する`Get-Content log.txt
npm run > log.txtエラーを含む UTF-8 テキストログが必要`npm run ... 2>&1

ルール: PowerShell 7.4 以降では、そのままネイティブのリダイレクトを使用し、古い Windows PowerShell のリダイレクトによってログが読み取れなくなった場合にのみ、明示的な UTF-8 変換を使用します。


2. パスとスペースの扱い

重大:引用符で囲む

Windows のパスにはスペースが含まれることがよくあります。

❌ 誤り✅ 正しい
dotnet build src/my project/file.fsprojdotnet build "src/my project/file.fsproj"
& C:\Path With Spaces\bin.exe& "C:\Path With Spaces\bin.exe"

ルール: スペースが含まれる可能性のある絶対パスと相対パスは、必ず引用符で囲みます。

呼び出し演算子(&)

PowerShell では、実行ファイルのパスが引用符で始まる場合、必ず & 演算子を使用します。

パターン:

& "C:\Program Files\dotnet\dotnet.exe" build ...

3. バイナリとコマンドレットでよくある落とし穴

操作❌ CMD スタイル✅ PowerShell での選択肢
削除del /f /q fileRemove-Item -Force file
コピーcopy a bCopy-Item a b
移動move a bMove-Item a b
ディレクトリの作成mkdir folderNew-Item -ItemType Directory -Path folder

ヒント: PowerShell で ls、cat、cp などの CLI エイリアスを使うのは通常問題ありませんが、スクリプトでは完全なコマンドレットを使うほうが堅牢です。


4. Dotnet CLI の信頼性

ビルド速度と一貫性
コンテキストコマンド理由
高速な反復dotnet build --no-restore冗長な nuget の復元をスキップします。
クリーンビルドdotnet build --no-incrementalインクリメンタルコンパイルを無効にします。古い出力が疑われる場合は、別途クリーン処理を行ってください。
バックグラウンドStart-Process dotnet -ArgumentList 'run' -RedirectStandardOutput output.txt -RedirectStandardError error.txtシェルをブロックせずにアプリを起動し、ログを保持します。

5. 環境変数

シェル構文
PowerShell$env:VARIABLE_NAME
CMD%VARIABLE_NAME%

6. 長いパス

Windows では、既定でパスの長さが 260 文字に制限されています。

修正方法: 長いパスのエラーが発生した場合は、拡張パスプレフィックスを使用します: \\?\C:\Very\Long\Path\...


7. シェルエラーのトラブルシューティング

エラー考えられる原因修正方法
The term 'xxx' is not recognizedパスが $env:PATH に含まれていない絶対パスを使用するか、PATH を修正します。
Access to the path is deniedファイルが使用中、またはアクセス許可がない所有者とロックを確認し、許可されたプロセスのみ停止します。既定の対処法として昇格を使用しないでください。
Encoding mismatch古いシェルのリダイレクトによって出力が書き換えられたファイルを UTF-8 として再エクスポートするか、`2>&1

制限事項

  • このスキルは、タスクが上記の説明に明確に該当する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、アクセス許可、安全上の境界、成功基準が不足している場合は、作業を中止して確認を求めてください。

コメント