How to Set Up Claude Code Skills on Windows
Claude Code skills work differently on Windows than Unix systems. The file paths are different, PowerShell behaves differently than bash, and WSL adds another layer of complexity.
Here's how to get Claude Code skills running properly on Windows, including the gotchas that trip up most developers.
Install Claude Desktop first
Download Claude Desktop from Anthropic's website. The Windows installer handles most setup automatically, but you need to configure where Claude looks for skills.
Claude Desktop stores its configuration in %APPDATA%\Claude\claude_desktop_config.json. Create this file if it doesn't exist:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "C:\\Users\\YourUsername\\claude-skills"]
}
}
}
Replace YourUsername with your actual Windows username. The double backslashes are required in JSON.
PowerShell vs Command Prompt considerations
Most Claude Code skills assume a Unix-like environment. Windows PowerShell can handle many of the same commands, but syntax differs.
When a skill contains bash commands, you'll need to translate them. For example, ls -la becomes Get-ChildItem in PowerShell, and cat file.txt becomes Get-Content file.txt.
Skills that use environment variables might reference $HOME or ~. On Windows, these become $env:USERPROFILE in PowerShell or %USERPROFILE% in Command Prompt.
Create a PowerShell profile to handle common Unix commands:
Set-Alias ll Get-ChildItem
Set-Alias ls Get-ChildItem
Set-Alias cat Get-Content
Set-Alias grep Select-String
function touch($file) {
if (Test-Path $file) {
(Get-Item $file).LastWriteTime = Get-Date
} else {
New-Item $file -ItemType File
}
}
Save this in your PowerShell profile location (check with $PROFILE).
WSL integration
Windows Subsystem for Linux gives you a real Linux environment. If you're working with skills that expect Unix tools, WSL often works better than trying to translate everything to PowerShell.
Install WSL 2 and set up your skills directory there:
mkdir ~/claude-skills
cd ~/claude-skills
Update your Claude configuration to point to the WSL path. Windows can access WSL filesystems through \\wsl$\Ubuntu\home\username\claude-skills (adjust for your distribution).
The tricky part is that Claude Desktop runs on Windows but needs to execute commands in WSL. You can handle this by creating wrapper scripts.
Create run-in-wsl.bat in your Windows claude-skills folder:
@echo off
wsl bash -c "cd /home/%USERNAME%/claude-skills && %*"
Then modify skills to use this wrapper when needed.
File path translation
Skills often hardcode Unix paths. When installing skills, you'll encounter paths like /home/user/.config that don't exist on Windows.
Common translations:
~or/home/userbecomesC:\Users\YourUsername/usr/local/binbecomesC:\Program Files(though this varies)/tmpbecomes%TEMP%orC:\Windows\Temp
Some skills include Windows-specific instructions in their SKILL.md spec. Check the documentation before assuming Unix paths.
Python and Node.js path issues
Many Claude Code skills use Python or Node.js. Windows handles these differently than Unix systems.
For Python, Windows installations often add .exe to command names. A skill calling python3 might need python or py on Windows. Virtual environments activate differently too:
Unix: source venv/bin/activate
Windows: venv\Scripts\activate
Node.js global packages install to different locations. On Unix they go to /usr/local/lib/node_modules, on Windows to %APPDATA%\npm\node_modules. This affects skills that reference global packages directly.
Windows Defender and antivirus interference
Windows Defender scans new executable files, which can slow down skill execution. If skills create temporary scripts or download tools, Defender might block them.
Add your claude-skills directory to Defender's exclusion list:
- Open Windows Security
- Go to Virus & threat protection
- Click "Manage settings" under Virus & threat protection settings
- Scroll to Exclusions and click "Add or remove exclusions"
- Add your claude-skills folder
This speeds up execution and prevents false positives.
Git line ending issues
Windows uses CRLF line endings while Unix uses LF. When you browse skills and clone repositories, Git might convert line endings automatically.
This breaks shell scripts that expect Unix line endings. Configure Git to handle this:
git config --global core.autocrlf false
git config --global core.eol lf
For existing repositories with converted line endings, you can fix them:
git config core.autocrlf false
git rm --cached -r .
git reset --hard HEAD
Environment variables and PATH
Skills often assume certain tools are in PATH. Windows handles PATH differently than Unix systems, using semicolons instead of colons as separators.
Common missing tools on Windows:
curl(available in Windows 10 1803+, but older versions need it installed)wget(not included, usecurlor install separately)make(install with Visual Studio Build Tools or Chocolatey)- Unix text processing tools (
sed,awk,grep)
Install missing tools through Chocolatey, Scoop, or WSL.
Testing skills locally
Before relying on Claude Desktop integration, test skills manually. Navigate to your claude-skills directory and run the skill's main command.
Most MCP servers provide test commands. Check the skill's documentation for local testing instructions.
If a skill fails on Windows, check its rules files for Windows-specific configurations. Some skills include conditional logic for different operating systems.
PowerShell execution policy
Windows restricts script execution by default. Skills that create PowerShell scripts might fail with execution policy errors.
Check your current policy:
Get-ExecutionPolicy
If it's Restricted, change it to allow local scripts:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
This allows locally created scripts while still blocking unsigned remote scripts.
Common failure patterns
Skills fail on Windows in predictable ways:
- Path separators: Scripts using
/instead of\in file paths - Shell assumptions: Skills calling
bashwhen only PowerShell is available - Case sensitivity: Windows filesystems are case-insensitive, which breaks some Unix assumptions
- Permission models: Windows handles file permissions differently than Unix chmod
When a skill fails, check the error message for these patterns. Most have straightforward fixes once you identify the cause.
Windows setup takes more work than Unix systems, but Claude Code skills run fine once configured properly. The key is understanding where Windows differs from Unix assumptions and planning for those differences upfront.