windows-shelllisted
Install: claude install-skill finestructure-ai/humanizer-multilingual
# Windows shell
The failure is not that Windows is hard. It is that the model has read a million
Linux commands and reaches for them, then burns three turns discovering the
machine is not Linux.
This is the second largest problem area in the Claude Code issue tracker. The
fixes below are specific and each one is a real, repeated failure.
## First: know which shell you are in
Windows gives you at least four, and they are not compatible.
| Shell | `ls` | Paths | Notes |
| --- | --- | --- | --- |
| PowerShell | alias for `Get-ChildItem` | `C:\x` or `C:/x` | the default in most tools |
| cmd.exe | `dir` only | `C:\x` | almost never what you want |
| Git Bash (MSYS2) | real `ls` | `/c/Users/...` | POSIX tools, but not Linux |
| WSL | real `ls` | `/mnt/c/...` | a different filesystem, different installed software |
**Check before guessing:**
```powershell
$PSVersionTable.PSVersion
```
```bash
uname -s
```
If `uname` prints `MINGW64_NT` you are in Git Bash. If it prints `Linux` inside
Windows you are in WSL, and software installed on Windows is not on your PATH.
Read `references/traps.md` before writing anything non-trivial.
## The rules that prevent most failures
**1. Never write `rm -rf` on a Windows path.** In PowerShell it is not a
command. In Git Bash it works and will happily delete outside the project. Use
`Remove-Item -Recurse -Force` in PowerShell, and in Git Bash prefer deleting
specific paths.
**2. `/dev/null` does not exist in PowerShell.** Use `$null`:
```