Agent skill

windows-compatibility

Guidelines for working on Windows with Git Bash. Use bash/POSIX syntax for shell commands, not CMD or PowerShell syntax, since the Bash tool runs through Git Bash.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/windows-compatibility

SKILL.md

Windows Compatibility Skill

Critical Rule: Bash Tool Uses Git Bash

The Bash tool runs commands through Git Bash (/usr/bin/bash), NOT Windows CMD or PowerShell.

This means:

  • Use bash/POSIX syntax for all shell commands
  • Do NOT use Windows CMD syntax (if not exist, copy, del)
  • Do NOT use PowerShell syntax (Remove-Item, New-Item)

Command Syntax Reference

Directory Operations

Task ✅ Correct (Bash) ❌ Wrong (CMD) ❌ Wrong (PowerShell)
Create directory mkdir -p path/to/dir mkdir path\to\dir New-Item -ItemType Directory
Check if exists [ -d "path" ] && ... if exist path ... Test-Path path
Remove directory rm -rf path/to/dir rmdir /s /q path Remove-Item -Recurse
List files ls -la dir Get-ChildItem

File Operations

Task ✅ Correct (Bash) ❌ Wrong (CMD) ❌ Wrong (PowerShell)
Create empty file touch file.txt or echo "" > file.txt echo. > file.txt New-Item file.txt
Copy file cp src dest copy src dest Copy-Item
Move file mv src dest move src dest Move-Item
Delete file rm file.txt del file.txt Remove-Item
Read file cat file.txt type file.txt Get-Content

Conditional Operations

Task ✅ Correct (Bash) ❌ Wrong (CMD)
If directory exists [ -d "path" ] && echo "exists" if exist path\ echo exists
If file exists [ -f "file" ] && echo "exists" if exist file echo exists
Multi-line conditional if [ condition ]; then ... fi if condition ( ... )

Path Handling

  • Use forward slashes in bash: .claude/context/memory/
  • Git Bash auto-converts Windows paths, but prefer forward slashes
  • Quote paths with spaces: "path with spaces/file.txt"

Common Mistakes to Avoid

❌ Windows CMD Multi-line If

batch
# WRONG - Git Bash cannot parse this
if not exist "path" mkdir "path"
if not exist "other" mkdir "other"

✅ Bash Equivalent

bash
# CORRECT - Use bash syntax
mkdir -p path other
# Or with explicit check:
[ -d "path" ] || mkdir -p path

❌ Touch Command Failure Handling

bash
# WRONG - touch may not exist on Windows, fails silently
touch file.txt 2>/dev/null

✅ Portable Alternative

bash
# CORRECT - echo works everywhere in bash
echo "" > file.txt
# Or use mkdir -p for directories (never fails if exists)
mkdir -p path/to/dir

Node.js Cross-Platform Tips

When writing JavaScript/Node.js code:

javascript
// Use path.join() for cross-platform paths
const filePath = path.join(__dirname, 'subdir', 'file.txt');

// Use fs.mkdir with recursive option
fs.mkdirSync(dirPath, { recursive: true });

// Check platform if needed
if (process.platform === 'win32') {
  // Windows-specific handling
}

Memory Protocol (MANDATORY)

Before starting:

bash
cat .claude/context/memory/learnings.md

After completing: Record any new patterns or exceptions discovered.

ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results