--- name: windows-path-troubleshooting description: "Complete Windows file path troubleshooting knowledge for Claude Code on Git Bash and Windows environments. PROACTIVELY activate for: (1) File path errors on Windows, (2) Backslash vs forward slash issues, (3) Edit/Write/Read tool failures, (4) MINGW path resolution, (5) Cross-platform path conversion." --- ## 🚨 CRITICAL GUIDELINES ### Windows File Path Requirements **MANDATORY: Always Use Backslashes on Windows for File Paths** When using Edit or Write tools on Windows, you MUST use backslashes (`\`) in file paths, NOT forward slashes (`/`). **Examples:** - ❌ WRONG: `D:/repos/project/file.tsx` - ✅ CORRECT: `D:\repos\project\file.tsx` This applies to: - Edit tool file_path parameter - Write tool file_path parameter - All file operations on Windows systems ### Documentation Guidelines **NEVER create new documentation files unless explicitly requested by the user.** - **Priority**: Update existing README.md files rather than creating new documentation - **Repository cleanliness**: Keep repository root clean - only README.md unless user requests otherwise - **Style**: Documentation should be concise, direct, and professional - avoid AI-generated tone - **User preference**: Only create additional .md files when user specifically asks for documentation --- # Windows Path Troubleshooting for Claude Code ## 🚨 CRITICAL: Always Use Backslashes on Windows for File Paths **MANDATORY: When using Edit, Write, or Read tools on Windows, you MUST use backslashes (`\`) in file paths, NOT forward slashes (`/`).** ### The Rule **Windows File Path Requirements:** - ✅ **CORRECT**: `D:\repos\project\file.tsx` - ❌ **WRONG**: `D:/repos/project/file.tsx` **This applies to:** - Edit tool `file_path` parameter - Write tool `file_path` parameter - Read tool `file_path` parameter - All file operations on Windows systems ### Why This Matters **Common error message when using forward slashes on Windows:** ``` Error: ENOENT: no such file or directory ``` **Root cause:** - Windows native file system uses backslashes (`\`) as path separators - Forward slashes (`/`) work in some Windows contexts but NOT in Claude Code file tools - Git Bash displays paths with forward slashes but Windows APIs require backslashes - Claude Code's Read/Write/Edit tools use Windows native APIs that expect backslashes ## 🔍 Common Windows Path Issues in Claude Code ### Issue 1: Forward Slashes in Tool Calls **Symptom:** ``` Edit tool fails with "file not found" or "no such file or directory" ``` **Cause:** Using forward slashes copied from Git Bash output: ```bash # Git Bash shows: /s/repos/claude-code-marketplace/file.tsx ``` **Incorrect usage:** ``` Edit(file_path="/s/repos/myproject/file.tsx") ``` **Correct usage:** ``` Edit(file_path="S:\repos\myproject\file.tsx") ``` **Solution steps:** 1. Identify the Windows drive letter (e.g., `/s/` → `S:`) 2. Replace forward slashes with backslashes 3. Add drive letter with colon 4. Use absolute Windows path format ### Issue 2: Git Bash MINGW Path Format **Symptom:** Paths like `/s/repos/` or `/c/Users/` don't work in Edit/Write/Read tools **MINGW path format explained:** - Git Bash uses POSIX-style paths on Windows - Drive letters are represented as `/c/`, `/d/`, `/s/`, etc. - These are MINGW virtual paths, not Windows paths - Claude Code tools need Windows-native paths **Conversion table:** | Git Bash (MINGW) | Windows Native | |------------------|----------------| | `/c/Users/name/` | `C:\Users\name\` | | `/d/repos/project/` | `D:\repos\project\` | | `/s/work/code/` | `S:\work\code\` | | `/mnt/c/Windows/` | `C:\Windows\` | **Conversion algorithm:** 1. Extract drive letter from first path segment (e.g., `/s/` → `S`) 2. Add colon to drive letter (e.g., `S` → `S:`) 3. Replace remaining forward slashes with backslashes 4. Combine: `S:` + `\repos\project\file.tsx` ### Issue 3: Relative Paths in Git Bash **Symptom:** Relative paths from Git Bash don't resolve correctly in Claude Code tools **Cause:** Git Bash current working directory uses MINGW format, but Claude Code tools use Windows format **Example scenario:** ```bash # In Git Bash: pwd # Shows: /s/repos/my-project # User provides relative path: ./src/components/Button.tsx ``` **Problem:** Claude Code can't resolve `./src/` from MINGW `/s/repos/my-project` **Solution:** 1. Get the full Windows path from Git Bash: ```bash pwd -W # Shows: S:/repos/my-project (Windows format with forward slashes) ``` 2. Convert to proper Windows path: `S:\repos\my-project` 3. Append relative path with backslashes: `S:\repos\my-project\src\components\Button.tsx` ### Issue 4: Environment Variable Expansion **Symptom:** Paths with environment variables like `$HOME` or `%USERPROFILE%` fail **Git Bash environment variables:** ```bash echo $HOME # Shows: /c/Users/username (MINGW format) ``` **Windows environment variables:** ```cmd echo %USERPROFILE% # Shows: C:\Users\username (Windows format) ``` **Best practice:** - Avoid environment variables in file paths for Claude Code tools - Use absolute Windows paths instead - If user provides `$HOME`, ask them to run `echo $HOME` and convert the result ### Issue 5: Spaces in File Paths **Symptom:** Paths with spaces break or cause "file not found" errors **Correct handling:** ``` ✅ CORRECT: Edit(file_path="C:\Program Files\My App\config.json") ✅ CORRECT: Edit(file_path="D:\My Documents\project\file.txt") ``` **Notes:** - Do NOT add quotes around the path in the parameter - The tool call itself handles escaping - Spaces are fine in Windows paths when using backslashes ### Issue 6: UNC Network Paths **Symptom:** Network paths like `\\server\share\file.txt` fail **Windows UNC format:** ``` \\server\share\folder\file.txt ``` **Git Bash representation:** ``` //server/share/folder/file.txt ``` **Correct usage in Claude Code:** ``` Edit(file_path="\\\\server\\share\\folder\\file.txt") ``` **Note:** Backslashes must be doubled in some contexts due to escaping, but Claude Code tools handle this automatically. ## 🔧 Path Detection and Conversion Algorithm When a user provides a file path, follow this decision tree: ### Step 1: Identify Path Format **MINGW Path (Git Bash):** - Starts with `/` followed by single letter and `/` (e.g., `/c/`, `/s/`) - Example: `/s/repos/project/file.tsx` - **Action:** Convert to Windows format **Windows Path:** - Starts with drive letter and colon (e.g., `C:`, `D:`) - Uses backslashes or forward slashes - Example: `S:\repos\project\file.tsx` or `S:/repos/project/file.tsx` - **Action:** Ensure backslashes are used **Relative Path:** - Starts with `./` or `../` or just filename - Example: `./src/components/Button.tsx` - **Action:** Request full path from user or detect current directory **UNC Path:** - Starts with `\\` or `//` - Example: `\\server\share\file.txt` - **Action:** Ensure backslashes are used ### Step 2: Conversion Process **For MINGW paths (`/x/...`):** ``` Input: /s/repos/myproject/src/components/Button.tsx Process: 1. Extract drive letter: "s" 2. Uppercase: "S" 3. Add colon: "S:" 4. Replace remaining slashes: \repos\myproject\src\components\Button.tsx 5. Combine: S:\repos\myproject\src\components\Button.tsx Output: S:\repos\myproject\src\components\Button.tsx ``` **For Windows paths with forward slashes (`X:/...`):** ``` Input: S:/repos/project/file.tsx Process: 1. Detect drive letter already present: "S:" 2. Replace forward slashes with backslashes: \repos\project\file.tsx 3. Combine: S:\repos\project\file.tsx Output: S:\repos\project\file.tsx ``` **For relative paths:** ``` Input: ./src/components/Button.tsx Current directory (from user or detection): S:\repos\my-project Process: 1. Remove ./ prefix 2. Replace forward slashes: src\components\Button.tsx 3. Combine with current directory: S:\repos\my-project\src\components\Button.tsx Output: S:\repos\my-project\src\components\Button.tsx ``` ## 🛠️ Interactive Path Fixing Workflow When you encounter a file path error on Windows: ### Step 1: Detect the Error **Error indicators:** - "ENOENT: no such file or directory" - "file not found" - Edit/Write/Read tool failure - User mentions "Windows" or "Git Bash" ### Step 2: Analyze the Path **Ask yourself:** 1. Was the path provided by the user in MINGW format? 2. Does the path use forward slashes? 3. Is it a relative path? 4. Did I receive the path from a Git Bash command output? ### Step 3: Request Clarification (If Needed) **If the path is ambiguous, ask:** ``` I see you're working on Windows with Git Bash. To ensure I use the correct path format, could you run this command and share the output? pwd -W This will give me the Windows-formatted path. ``` ### Step 4: Convert and Retry **Conversion template:** ``` I'll convert the path from Git Bash format to Windows format: - Git Bash: /s/repos/project/file.tsx - Windows: S:\repos\project\file.tsx Retrying with the correct Windows path... ``` ### Step 5: Verify Success After conversion, verify the operation succeeded and explain what was fixed: ``` ✅ Successfully edited the file using the Windows path format (S:\repos\...). Note: On Windows with Git Bash, always use backslashes (\) in file paths for Claude Code's Edit/Write/Read tools, even though Git Bash displays paths with forward slashes (/). ``` ## 📋 Troubleshooting Checklist When file operations fail on Windows: - [ ] **Check path separator**: Are backslashes (`\`) used instead of forward slashes (`/`)? - [ ] **Check drive letter format**: Is it `C:` not `/c/`? - [ ] **Check MINGW conversion**: Did you convert `/x/path` to `X:\path`? - [ ] **Check relative vs absolute**: Is the path absolute starting with drive letter? - [ ] **Check environment variables**: Did you expand `$HOME` or `%USERPROFILE%`? - [ ] **Check spaces**: Are spaces in the path handled correctly? - [ ] **Check UNC paths**: Are network paths using `\\server\share` format? - [ ] **Check file existence**: Does the file actually exist at that path? ## 🎯 Quick Reference: Path Conversion Examples | Context | Path Format | Claude Code Tool Format | |---------|-------------|-------------------------| | Git Bash pwd | `/s/repos/project` | `S:\repos\project` | | Git Bash relative | `./src/file.tsx` | `S:\repos\project\src\file.tsx` | | Windows Explorer | `S:\repos\project\file.tsx` | `S:\repos\project\file.tsx` ✅ | | Windows with `/` | `S:/repos/project/file.tsx` | `S:\repos\project\file.tsx` | | MINGW full path | `/c/Users/name/file.txt` | `C:\Users\name\file.txt` | | Network share (Git Bash) | `//server/share/file.txt` | `\\server\share\file.txt` | | WSL path | `/mnt/c/repos/project` | `C:\repos\project` | ## 🚀 Best Practices for Windows File Operations ### 1. Always Convert Paths Proactively **Don't wait for errors** - If you see a path that looks like MINGW format, convert it immediately: ``` User provides: /s/repos/project/file.tsx You think: "This is MINGW format, I need to convert it to S:\repos\project\file.tsx" You do: Convert before calling Edit/Write/Read tool ``` ### 2. Use pwd -W in Git Bash **When you need current directory on Windows:** ```bash # Instead of: pwd # Shows: /s/repos/project (MINGW format) # Use: pwd -W # Shows: S:/repos/project (Windows format with /) ``` Then convert the forward slashes to backslashes. ### 3. Communicate Path Format Changes **Always explain when you convert paths:** ``` I'll convert the Git Bash path to Windows format for the Edit tool: - From: /s/repos/project/file.tsx - To: S:\repos\project\file.tsx ``` This helps users understand the requirement and learn for future interactions. ### 4. Validate Before Tool Use **Before calling Edit/Write/Read tools on Windows:** ``` Pre-flight checklist: ✅ Path starts with drive letter and colon (e.g., C:, S:) ✅ Path uses backslashes (\) not forward slashes (/) ✅ Path is absolute, not relative ✅ No MINGW format (no /c/, /s/, etc.) ``` ### 5. Handle User-Provided Paths Carefully **User might provide paths in various formats:** - Copy-pasted from Git Bash (MINGW format) - Copy-pasted from Windows Explorer (Windows format) - Typed manually (could be either) - From command output (varies by tool) **Always detect and convert as needed.** ## 🐛 Common Error Messages and Solutions ### Error: "ENOENT: no such file or directory" **Most likely cause:** Forward slashes instead of backslashes **Solution:** 1. Check if path uses forward slashes 2. Convert to backslashes 3. Verify drive letter format 4. Retry operation ### Error: "Invalid file path" **Most likely cause:** MINGW path format **Solution:** 1. Detect `/x/` pattern at start 2. Convert to `X:` format 3. Replace all forward slashes with backslashes 4. Retry operation ### Error: "Access denied" or "Permission denied" **Most likely cause:** Path is correct but permissions issue **Solution:** 1. Verify file exists and is accessible 2. Check if file is locked by another process 3. Verify user has read/write permissions 4. Consider running Git Bash as administrator ### Error: "File not found" but path looks correct **Possible causes:** 1. Path has hidden characters (copy-paste issue) 2. File extension is hidden in Windows 3. Path has trailing spaces 4. Case sensitivity (some tools are case-sensitive) **Solution:** 1. Ask user to run `ls -la` in Git Bash to verify exact filename 2. Check for file extensions 3. Trim whitespace from path 4. Match exact case of filename ## 📚 Platform-Specific Knowledge ### Windows File System Characteristics **Path characteristics:** - Drive letters: A-Z (typically C: for system, D-Z for additional drives) - Path separator: Backslash (`\`) - Case insensitive: `File.txt` same as `file.txt` - Special characters: Avoid `< > : " | ? *` in filenames - Maximum path length: 260 characters (legacy limit, can be increased) ### Git Bash on Windows **Git Bash is a POSIX-compatible environment:** - Uses MINGW (Minimalist GNU for Windows) - Translates POSIX paths to Windows paths internally - Commands like `ls`, `pwd`, `cd` use POSIX format - Native Windows programs need Windows format paths **Key insight:** Git Bash displays and accepts POSIX paths, but Windows APIs (used by Claude Code) require Windows paths. ### WSL (Windows Subsystem for Linux) **WSL path mounting:** - Windows drives mounted at `/mnt/c/`, `/mnt/d/`, etc. - WSL path: `/mnt/c/Users/name/project` - Windows path: `C:\Users\name\project` **Conversion:** 1. Replace `/mnt/x/` with `X:` 2. Replace forward slashes with backslashes ## 🎓 Teaching Users When explaining path issues to users, use this template: ``` I encountered a path format issue. Here's what happened: **The Problem:** Claude Code's file tools (Edit, Write, Read) on Windows require paths in Windows native format with backslashes (\), but Git Bash displays paths in POSIX format with forward slashes (/). **The Path Formats:** - Git Bash shows: /s/repos/project/file.tsx - Windows needs: S:\repos\project\file.tsx **The Solution:** I've converted your path to Windows format. For future reference, when working with Claude Code on Windows with Git Bash: 1. Use backslashes (\) in file paths 2. Use drive letter format (C:, D:, S:) not MINGW format (/c/, /d/, /s/) 3. Run `pwd -W` in Git Bash to get Windows-formatted paths **The Fix:** ✅ Now using: S:\repos\project\file.tsx ``` ## 🔍 Advanced Scenarios ### Scenario 1: Mixed Path Contexts **User is working with both WSL and Git Bash:** - Ask which environment they're in - Use appropriate conversion - Document the choice ### Scenario 2: Symbolic Links **Windows symbolic links:** ``` mklink /D C:\link C:\target ``` **Handling:** - Follow the link to actual path - Use actual path in tool calls - Inform user if link resolution needed ### Scenario 3: Docker Volumes **Docker volume mounts on Windows:** ``` docker run -v C:\repos:/app ``` **Path translation:** - Outside container: `C:\repos\file.txt` - Inside container: `/app/file.txt` - Use context-appropriate format ## ✅ Success Criteria You've successfully handled Windows paths when: 1. ✅ All Edit/Write/Read tool calls use backslashes on Windows 2. ✅ MINGW paths are converted before tool use 3. ✅ Relative paths are resolved to absolute Windows paths 4. ✅ User understands why conversion was necessary 5. ✅ File operations succeed without path-related errors 6. ✅ Path format is consistent throughout the session ## 🆘 When to Use This Skill **PROACTIVELY apply this knowledge when:** 1. User mentions they're on Windows 2. User mentions Git Bash or MINGW 3. You see paths starting with `/c/`, `/s/`, etc. 4. Edit/Write/Read tool fails with "file not found" 5. User provides paths with forward slashes on Windows 6. You need to read/edit/write files on Windows system **This skill is CRITICAL for Windows users** - Path format errors are the #1 cause of file operation failures on Windows with Git Bash.