Help us improve
Share bugs, ideas, or general feedback.
From windows-shell
Guides Windows path handling (forward slashes, quoting) and shell commands (bash, PowerShell) to avoid pitfalls in git, file ops, repo scanning, and slash commands like /commit.
npx claudepluginhub nicoforclaude/claude-windows-shell --plugin windows-shellHow this skill is triggered — by the user, by Claude, or both
Slash command
/windows-shell:windows-shellThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides guidelines for handling Windows filesystem paths and commands to avoid common pitfalls when using Claude Code on Windows.
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
This skill provides guidelines for handling Windows filesystem paths and commands to avoid common pitfalls when using Claude Code on Windows.
In Skills and Configuration:
scripts/helper.pyscripts\helper.pyIn Bash Commands:
cd "C:\KolyaRepositories\project"cd C:\KolyaRepositories\project/usr/bin/bash: line 1: cd: C:KolyaRepositoriesproject: No such file or directoryGood patterns:
# Quoted paths work reliably
cd "C:\KolyaRepositories\repo" && git status
# Multiple commands in sequence
cd "C:\KolyaRepositories\repo" && git rev-parse --abbrev-ref HEAD && git status --short
# Direct git commands without piping
git status --short
Bad patterns:
# Unquoted paths fail
cd C:\KolyaRepositories\repo && git status
# Piping to findstr after cd fails
cd "C:\KolyaRepositories\repo" && git status --short | findstr /R "."
# Error: FINDSTR: Cannot open repo
# PowerShell via -Command loses cd context
cd "C:\KolyaRepositories\repo" && powershell -Command "git status --short | Where-Object { $_ }"
# Error: The term 'C:\KolyaRepositories\repo' is not recognized
Problem: findstr interprets the directory name as a file argument when piped after cd.
# Fails
cd "C:\KolyaRepositories\calc" && git status --short | findstr /R "."
# Error: FINDSTR: Cannot open calc
Solution: Use direct commands without unnecessary pipes.
# Works
cd "C:\KolyaRepositories\calc" && git status --short
Problem: Using powershell -Command after cd causes the shell context to be misinterpreted.
# Fails
cd "C:\KolyaRepositories\calc" && powershell -Command "git status --short | Where-Object { $_ }"
# Error: The term 'C:\KolyaRepositories\calc' is not recognized
Solution: Either use PowerShell directly from the start, or avoid PowerShell piping after bash cd.
# Works - all in PowerShell
powershell -Command "cd 'C:\KolyaRepositories\calc'; git status --short"
# Works - no PowerShell piping
cd "C:\KolyaRepositories\calc" && git status --short
Problem: Bash strips backslashes from unquoted Windows paths.
# Fails
cd C:\KolyaRepositories\calc
# Error: cd: C:KolyaRepositoriescalc: No such file or directory
Solution: Always quote paths containing backslashes.
# Works
cd "C:\KolyaRepositories\calc"
Context: Claude Code uses Git Bash on Windows, which provides Unix-like paths.
In Git Bash (Claude Code default):
# CORRECT - Git Bash provides /dev/null
command > /dev/null 2>&1
# WRONG - creates a literal file named "nul" in working directory!
command >nul 2>&1
WARNING: Using >nul in Git Bash creates a file that pollutes git status. Always use /dev/null in Git Bash.
In PowerShell:
command 2>$null
command | Out-Null
Problem A - Negation Operator: When passing PowerShell commands via Bash, the exclamation mark character gets escaped to backslash-exclamation.
# Fails - ! becomes \!
powershell -Command "if (!(Test-Path 'file.txt')) { Write-Output 'missing' }"
# Error: \! is not recognized
Solution: Use -not instead of exclamation mark for negation.
# Works
powershell -Command "if (-not (Test-Path 'file.txt')) { Write-Output 'missing' }"
Problem B - Variable Interpolation:
PowerShell $variable syntax gets stripped when passed through Bash.
# Fails - $pdf and $sizeKB are empty
powershell -Command "$pdf = Get-Item 'file.pdf'; $sizeKB = [math]::Round($pdf.Length / 1KB, 1); Write-Output $sizeKB"
# Output: (empty or partial)
Solution: Use .ps1 script files for complex operations, or pipe output between simple commands.
# Works - use script file
powershell -ExecutionPolicy Bypass -File "script.ps1" -Path "file.pdf"
# Works - simple piped commands
powershell -Command "Get-Item 'file.pdf' | Select-Object Length"
Summary for inline PowerShell:
-not instead of exclamation markWhen iterating over multiple repositories (e.g., for status checks):
Pattern 1 - Sequential commands with &&:
cd "C:\KolyaRepositories\repo1" && git status --short
cd "C:\KolyaRepositories\repo2" && git status --short
Pattern 2 - Self-contained commands:
git -C "C:\KolyaRepositories\repo1" status --short
git -C "C:\KolyaRepositories\repo2" status --short
Pattern 3 - Parallel tool calls: Use multiple Bash tool calls in a single message for independent operations:
cd "C:\repo1" && git statuscd "C:\repo2" && git statuscd "C:\repo3" && git statusUse PowerShell for:
Where-Object, Select-Object# PowerShell example
powershell -Command "Get-ChildItem -Path 'C:\KolyaRepositories' -Directory | Select-Object Name"
Use Bash for:
# Bash example
cd "C:\KolyaRepositories\repo" && git status --short
For file operations, use specialized Claude Code tools instead of bash commands:
| Operation | Use Tool | Not Bash |
|---|---|---|
| Read files | Read tool | cat, head, tail |
| Search files | Glob tool | find, ls |
| Search content | Grep tool | grep, rg |
| Edit files | Edit tool | sed, awk |
| Write files | Write tool | echo >, cat <<EOF |
Reserve Bash for actual terminal operations: git, npm, docker, build commands, etc.
Before running Windows filesystem commands:
"C:\Path\To\Dir"/dev/null for output redirection in Git Bash (NOT >nul which creates a file)cd (especially findstr, Where-Object)scripts/helper.py-not instead of exclamation mark for PowerShell negation.ps1 files, not inline commandsCommon Error Patterns:
findstr after cd → FINDSTR: Cannot open [dirname]cd → The term 'C:...' is not recognized>nul in Git Bash → creates a literal file named "nul" polluting git status$variable in PowerShell → variables are empty/strippedResolution: All resolved by following the patterns in this skill:
cd "C:\KolyaRepositories\repo"git status --short (no | findstr)/dev/null in Git Bash: command > /dev/null 2>&1 (NOT >nul)-not instead of exclamation mark for negation.ps1 script files for complex PowerShell logic