13 KiB
description
| description |
|---|
| Interactively fix Windows file path issues and convert paths from Git Bash MINGW format to Windows format |
🚨 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 Fix Command
Purpose
This command provides interactive assistance for fixing Windows file path issues in Claude Code, especially when working with Git Bash. It helps detect and convert paths from MINGW/POSIX format to Windows-native format required by Claude Code's file operation tools.
When to Use This Command
PROACTIVELY use this command when:
- A file operation (Edit/Write/Read) fails with "file not found" or "ENOENT" error on Windows
- User is working on Windows with Git Bash
- User provides a path that looks like MINGW format (e.g.,
/s/repos/,/c/Users/) - User reports file path issues on Windows
- You need to verify a path format before using Edit/Write/Read tools
- User asks how to format paths for Claude Code on Windows
Instructions
Step 1: Identify the Problem
Check for these indicators:
- User is on Windows (check environment or user mentions it)
- Path starts with
/followed by single letter (e.g.,/s/,/c/,/d/) - Path uses forward slashes instead of backslashes
- Recent Edit/Write/Read tool failure with path-related error
Step 2: Gather Path Information
Ask the user (if path is not already provided):
I can help fix the file path format for Windows. Could you provide the file path you're trying to access?
If you're in Git Bash, you can get the full path by running:
pwd -W
or for a specific file:
realpath filename.txt
Step 3: Analyze the Path Format
Determine the path type:
MINGW Path (Git Bash format):
- Pattern:
/x/path/to/filewherexis a single letter - Example:
/s/repos/project/file.tsx - Example:
/c/Users/name/Documents/file.txt - Action: Convert to Windows format
Windows Path with Forward Slashes:
- Pattern:
X:/path/to/filewhereXis drive letter - Example:
S:/repos/project/file.tsx - Action: Replace forward slashes with backslashes
Windows Path (Correct):
- Pattern:
X:\path\to\filewhereXis drive letter - Example:
S:\repos\project\file.tsx - Action: No conversion needed
Relative Path:
- Pattern:
./path/to/fileor../path/to/file - Example:
./src/components/Button.tsx - Action: Request full path or current directory
WSL Path:
- Pattern:
/mnt/x/path/to/filewherexis drive letter - Example:
/mnt/c/repos/project/file.tsx - Action: Convert to Windows format
Step 4: Convert the Path
Use the appropriate conversion algorithm:
For MINGW paths (/x/...):
Input: /s/repos/myproject/file.tsx
Step 1: Extract drive letter from first segment → "s"
Step 2: Uppercase the drive letter → "S"
Step 3: Add colon → "S:"
Step 4: Replace remaining forward slashes with backslashes → \repos\myproject\file.tsx
Step 5: Combine → S:\repos\myproject\file.tsx
Output: S:\repos\myproject\file.tsx
For Windows paths with forward slashes (X:/...):
Input: S:/repos/project/file.tsx
Step 1: Drive letter already present → "S:"
Step 2: Replace all forward slashes with backslashes → \repos\project\file.tsx
Step 3: Combine → S:\repos\project\file.tsx
Output: S:\repos\project\file.tsx
For relative paths:
Input: ./src/components/Button.tsx
Current directory (ask user for `pwd -W` output): S:/repos/my-project
Step 1: Get current directory in Windows format → S:\repos\my-project
Step 2: Remove ./ prefix from relative path → src/components/Button.tsx
Step 3: Replace forward slashes with backslashes → src\components\Button.tsx
Step 4: Combine → S:\repos\my-project\src\components\Button.tsx
Output: S:\repos\my-project\src\components\Button.tsx
For WSL paths (/mnt/x/...):
Input: /mnt/c/Users/name/project/file.tsx
Step 1: Extract drive letter after /mnt/ → "c"
Step 2: Uppercase → "C"
Step 3: Add colon → "C:"
Step 4: Remove /mnt/c/ prefix → Users/name/project/file.tsx
Step 5: Replace forward slashes with backslashes → Users\name\project\file.tsx
Step 6: Combine → C:\Users\name\project\file.tsx
Output: C:\Users\name\project\file.tsx
Step 5: Present the Conversion
Show the conversion clearly:
✅ Path Conversion Complete
**Original Path (Git Bash/MINGW format):**
/s/repos/myproject/src/components/Button.tsx
**Converted Path (Windows format for Claude Code):**
S:\repos\myproject\src\components\Button.tsx
**What Changed:**
- Converted /s/ → S:
- Replaced forward slashes (/) with backslashes (\)
- Now compatible with Claude Code's Edit/Write/Read tools
Step 6: Verify and Retry
If the original operation failed, retry with the converted path:
I'll now retry the [Edit/Write/Read] operation with the correct Windows path format...
Then execute the intended file operation using the converted path.
Step 7: Educate the User
Explain why the conversion was necessary:
📚 Why This Matters:
**Git Bash displays paths in POSIX/MINGW format** (e.g., /s/repos/file.tsx), but
**Claude Code's file tools require Windows native format** (e.g., S:\repos\file.tsx).
**Key Points:**
1. Always use backslashes (\) in file paths for Claude Code on Windows
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
**This conversion is automatic when you use the /path-fix command!**
Step 8: Prevent Automatic Path Conversion (Advanced)
For command-line operations that need POSIX paths:
When running commands in Git Bash that interact with tools expecting Unix-style paths (like Docker, WSL tools, or certain CLIs), Git Bash may automatically convert paths, which can cause issues.
Use MSYS_NO_PATHCONV=1 to disable automatic conversion:
# Problem: Git Bash converts /app to C:/Program Files/Git/app
docker run -v /app:/app myimage
# Solution: Disable path conversion for this command
MSYS_NO_PATHCONV=1 docker run -v /app:/app myimage
Common scenarios where MSYS_NO_PATHCONV=1 is needed:
-
Docker volume mounts:
# ✅ Correct MSYS_NO_PATHCONV=1 docker run -v /app:/app nginx # ❌ Wrong - Git Bash converts /app to C:/Program Files/Git/app docker run -v /app:/app nginx -
Docker exec commands:
MSYS_NO_PATHCONV=1 docker exec container ls /app -
Azure CLI with paths:
MSYS_NO_PATHCONV=1 az storage blob upload --file /path/to/file -
Terraform with module sources:
MSYS_NO_PATHCONV=1 terraform init
When to recommend MSYS_NO_PATHCONV=1:
- User reports Docker commands failing with weird paths
- Commands expecting Unix paths get Windows paths instead
- Azure CLI, AWS CLI, or other cloud tools show path errors
- Terraform or other IaC tools fail with path conversion issues
Example explanation for users:
💡 Pro Tip for Git Bash Users:
Git Bash automatically converts Unix-style paths to Windows paths, which can
break Docker and other tools. Use MSYS_NO_PATHCONV=1 to prevent this:
MSYS_NO_PATHCONV=1 docker run -v /app:/app myimage
Or set it globally for your Git Bash session:
export MSYS_NO_PATHCONV=1
Common Scenarios
Scenario 1: User Reports "File Not Found" Error
User: "I'm trying to edit a file but getting 'file not found' error"
Response:
I can help fix that! This is likely a path format issue on Windows.
Could you share the file path you're trying to access? If you're using Git Bash,
run this command to get the Windows-formatted path:
pwd -W
Then share the full path to the file you want to edit.
After receiving path /s/repos/project/file.tsx:
I see the issue - this is Git Bash MINGW format. I'll convert it to Windows format:
Original: /s/repos/project/file.tsx
Converted: S:\repos\project\file.tsx
Now retrying the edit operation with the correct Windows path...
Scenario 2: Proactive Path Conversion
User: "Please edit /c/Users/john/Documents/notes.txt"
Response (proactive conversion):
I notice you're using Git Bash path format. I'll convert this to Windows format
for Claude Code's Edit tool:
Git Bash format: /c/Users/john/Documents/notes.txt
Windows format: C:\Users\john\Documents\notes.txt
Editing the file now...
Scenario 3: Relative Path Resolution
User: "Edit the file ./src/components/Button.tsx"
Response:
To work with this relative path on Windows, I need the full Windows path.
Could you run this command in Git Bash and share the output?
pwd -W
This will give me your current directory in Windows format, so I can construct
the full path.
After receiving S:/repos/my-project:
Got it! Here's the conversion:
Current directory: S:\repos\my-project
Relative path: ./src/components/Button.tsx
Full Windows path: S:\repos\my-project\src\components\Button.tsx
Editing the file now...
Scenario 4: Multiple Paths Need Conversion
User: "Edit these files: /s/repos/file1.ts, /s/repos/file2.ts, /s/repos/file3.ts"
Response:
I'll convert all three paths from Git Bash to Windows format:
1. /s/repos/file1.ts → S:\repos\file1.ts
2. /s/repos/file2.ts → S:\repos\file2.ts
3. /s/repos/file3.ts → S:\repos\file3.ts
Editing all three files with the correct Windows paths...
Validation Steps
Before using a converted path, verify:
- Path starts with uppercase drive letter and colon (e.g.,
C:,S:) - Path uses backslashes (
\) not forward slashes (/) - Path is absolute (starts with drive letter), not relative
- No MINGW format indicators (
/c/,/s/,/mnt/) - No environment variables unexpanded (
$HOME,%USERPROFILE%) - No trailing spaces or hidden characters
Error Handling
If path conversion still results in errors:
Error: File still not found after conversion
Possible causes:
- File doesn't actually exist at that path
- Path has typos
- File extension is missing or incorrect
- Case sensitivity issue (rare on Windows but possible)
Actions:
The converted path appears correct, but the file might not exist. Let's verify:
Could you run this command in Git Bash to check if the file exists?
ls -la [path to file]
This will show if the file exists and its exact name (including extension).
Error: Access denied or permission error
Possible causes:
- File is locked by another process
- User doesn't have read/write permissions
- File is in a protected directory
Actions:
The path format is correct, but there's a permission issue.
Could you check:
1. Is the file currently open in another program?
2. Do you have read/write permissions for this file?
3. Try running Git Bash as Administrator if needed
Quick Reference
Path Conversion Patterns
| Input Format | Output Format | Example |
|---|---|---|
/s/repos/file.txt |
S:\repos\file.txt |
MINGW → Windows |
S:/repos/file.txt |
S:\repos\file.txt |
Windows with / → Windows with \ |
/mnt/c/Users/file.txt |
C:\Users\file.txt |
WSL → Windows |
./src/file.txt |
[CWD]\src\file.txt |
Relative → Absolute |
/c/Program Files/app/file.txt |
C:\Program Files\app\file.txt |
MINGW with spaces → Windows |
Git Bash Commands for Path Discovery
# Get current directory in Windows format
pwd -W
# Get absolute path of a file in Windows format
realpath -W filename.txt
# List files with full details
ls -la
# Show file with full path
readlink -f filename.txt
Success Criteria
The command is successful when:
- ✅ Path is correctly identified as MINGW, WSL, or Windows format
- ✅ Conversion algorithm produces valid Windows path
- ✅ Converted path uses backslashes throughout
- ✅ File operation succeeds with converted path
- ✅ User understands why conversion was necessary
- ✅ User knows how to provide Windows-formatted paths in future
Related Commands
- Windows Path Troubleshooting Skill: Comprehensive path format knowledge
- Windows Path Expert Agent: For complex path issues and debugging
- File operations: Edit, Write, Read tools that require proper Windows paths
Best Practices
- Proactive Detection: Don't wait for errors - convert paths immediately when you see MINGW format
- Clear Communication: Always show both original and converted paths
- User Education: Explain why conversion is needed
- Validation: Verify path format before using file tools
- Helpful Guidance: Provide
pwd -Wcommand for users to get Windows paths themselves