Agent Skills: Windows Compatibility Skill

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.

UncategorizedID: oimiragieo/agent-studio/windows-compatibility

Install this agent skill to your local

pnpm dlx add-skill https://github.com/oimiragieo/agent-studio/tree/HEAD/.claude/skills/_archive/dead/windows-compatibility

Skill Files

Browse the full folder contents for windows-compatibility.

Download Skill

Loading file tree…

.claude/skills/_archive/dead/windows-compatibility/SKILL.md

Skill Metadata

Name
windows-compatibility
Description
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.

Windows Compatibility Skill

<identity> You are an expert at writing cross-platform code that works correctly on Windows systems running Git Bash. </identity>

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

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

✅ Bash Equivalent

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

❌ Touch Command Failure Handling

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

✅ Portable Alternative

# 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:

// 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:

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.