WSL2 で Claude Code を使っていると、Windows 側のスクリーンショットやファイルのパスを渡したい場面がよくある。
ただ、Windows パス(C:\Users\username\Downloads\...)をそのまま渡しても Read ツールはエラーになる。
毎回「/mnt/c/… に変換してください」って言うの、地味に面倒くさい。
というわけで自動で変換してくれるスキルを作った。🐧
まず結論
こういう SKILL.md を ~/.claude/skills/wsl-path/SKILL.md に置くだけ。
---
name: wsl-path
description: >
WSL2 環境で Windows パスが渡された時に自動でマウントパスに変換する。
C:\Users\... や c:/Users/... のようなパスが会話に出た時に使用する。
---
## 目的
Windows パスを WSL2 のマウントパスに変換してファイルにアクセスする。
## ルール
Windows パスが渡されたら、以下の変換を自動で行う:
| Windows パス | WSL2 パス |
|-------------------|-------------------|
| C:\Users\... | /mnt/c/Users/... |
| c:/Users/... | /mnt/c/Users/... |
| D:\path\... | /mnt/d/path/... |
- ドライブレター(C, D など)は小文字に変換
- バックスラッシュ \ はスラッシュ / に変換
- ユーザーに確認せず自動で変換して Read する
## アンチパターン
- ❌ Windows パスをそのまま Read に渡す(存在しないエラーになる)
- ❌ ユーザーに「WSL パスを教えてください」と聞くこれで「Windowsパスっぽい文字列が来たら自動で WSL2 マウントパスに変換してからファイルを読む」という挙動になる。
何が起きるか
WSL2 では Windows のファイルシステムが /mnt/ 以下にマウントされている。
Cドライブなら /mnt/c/、Dドライブなら /mnt/d/ という感じ。
Claude Code の Read ツールは Linux パスしか受け付けないので、C:\Users\username\Downloads\image.png を渡すと「そんなファイルない」とエラーになる。
手動変換すれば読めるのはわかってるんだけど、毎回やるのがダルい。
変換ルール
やってることはシンプル。
# Windows パス(どちらの形式でも OK)
C:\Users\username\Downloads\screenshot.png
c:/Users/username/Downloads/screenshot.png
# WSL2 マウントパスに自動変換される
/mnt/c/Users/username/Downloads/screenshot.pngドライブレター(C, D など)を小文字にして、先頭に /mnt/ を付ける。
バックスラッシュをスラッシュに変換する。
これだけ。
スキルの description に変換条件とアンチパターンを書いておくことで、Claude が「Windowsパスが来たら変換してから Read する」という挙動を学習してくれる。
スキルの配置方法
ファイル構成はこれだけ。
~/.claude/skills/wsl-path/
└── SKILL.md~/.claude/skills/ 以下にディレクトリを作って SKILL.md を置くだけで、Claude Code がスキルとして認識してくれる。
インストールとかビルドは不要。
ちなみに自分は ~/.codex/skills を ~/.claude/skills へのシンボリックリンクにしているので、どちらのツールからも同じスキルが使える。
この辺はClaude Code と Codex でスキルを共有する方法に書いた。
まとめ
- WSL2 では Windows パスを
/mnt/c/...形式に変換しないと Read ツールがエラーになる - SKILL.md に変換ルールを書いておくと、Claude が自動で変換してくれる
~/.claude/skills/wsl-path/SKILL.mdに置くだけで完了- ユーザー名は自分の環境に合わせて書き換えること(
username→ 自分のユーザー名)
以上!!
誰かのお役に立てれば嬉しいです🐧
