Awesome-omni-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.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/windows-compatibility-majiayu000" ~/.claude/skills/diegosouzapw-awesome-omni-skill-windows-compatibility-d92727 && rm -rf "$T"
manifest: skills/tools/windows-compatibility-majiayu000/SKILL.md
source content

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.