
WSL2 上で Claude Code CLI を使っていると、画像を渡す方法がないことに気づきます。
デスクトップアプリやWeb版なら画像をドラッグ&ドロップで貼れますが、CLI にはその機能がありません。でも WSL2 から Windows 側の PowerShell を呼び出せば、クリップボードの画像を取得できます。
この記事では、「スクショ見て」と言うだけでクリップボードの画像を Claude Code に渡せる仕組みを作ります。
目次
1. 仕組み
WSL2 からは powershell.exe で Windows 側の PowerShell を実行できます。これを使って:
- PowerShell でクリップボードから画像を取得
- WSL2 側のファイルに保存
- Claude Code の Read ツールで画像を読み取り
- 一時ファイルを削除
という流れで実現します。
2. PowerShell スクリプト
以下の PowerShell スクリプトが、クリップボードから画像を取得して指定パスに保存します。
Add-Type -AssemblyName System.Windows.Forms
$img = [System.Windows.Forms.Clipboard]::GetImage()
if ($img) {
$img.Save($args[0])
Write-Host 'OK'
} else {
Write-Host 'No image'
}
やっていることはシンプルです。
System.Windows.Forms.Clipboardで Windows のクリップボードにアクセス- 画像があれば引数で指定されたパスに保存して
OKを出力 - なければ
No imageを出力
3. Claude Code のカスタムスキルとして登録
Claude Code にはカスタムスキル機能があり、.claude/skills/ に定義ファイルを置くと /スキル名 で呼び出せるようになります。
ファイル構成
.claude/skills/clip/SKILL.md
SKILL.md の中身
---
name: clip
description: クリップボードの画像を読み取る。ユーザーが「クリップボード見て」「スクショ見て」と言った時に使う。
disable-model-invocation: true
allowed-tools: Bash, Read
---
クリップボードの画像を取得して表示する。
手順:
1. PSスクリプトを作成し、PowerShell経由でクリップボード画像を保存:
```
cat > /tmp/clip.ps1 << 'PSEOF'
Add-Type -AssemblyName System.Windows.Forms
$img = [System.Windows.Forms.Clipboard]::GetImage()
if ($img) {
$img.Save($args[0])
Write-Host 'OK'
} else {
Write-Host 'No image'
}
PSEOF
CLIP_PATH="$(pwd)/tmp_clip.png"
powershell.exe -ExecutionPolicy Bypass -File "$(wslpath -w /tmp/clip.ps1)" "$(wslpath -w "$CLIP_PATH")"
```
2. 出力が「OK」の場合、Readツールで `tmp_clip.png` を読み取る
3. 読み取り後、一時ファイルを削除:
```
rm tmp_clip.png
```
4. 出力が「No image」の場合は「クリップボードに画像がありません」と伝える
ポイント
disable-model-invocation: trueを指定すると、スキルの内容がそのまま Claude Code への指示として展開されます(AI が解釈し直さない)allowed-tools: Bash, Readで、使えるツールを Bash と Read に限定していますwslpath -wで WSL パスを Windows パスに変換しています(PowerShell は Windows パスしか理解できないため)
4. 使い方
- Windows 側でスクリーンショットを撮る(
Win + Shift + Sなど) - Claude Code で
/clipと入力
これだけです。クリップボードの画像が Claude Code に渡されて、内容を認識してくれます。
使用例
/clip→ 「このエラー画面の原因を教えて」/clip→ 「このデザインをコードにして」/clip→ 「この設定画面の手順を説明して」
Cloudflare のダッシュボード操作やエラー画面の共有など、画面を見せながら会話するのに便利です。
5. 注意点
- Sandbox 制限: Claude Code の Sandbox が有効な場合、
/tmpへの書き込みがブロックされることがあります。その場合はプロジェクトディレクトリ内に一時ファイルを保存する形にしてください - 画像のみ対応: テキストのクリップボードには対応していません。画像がコピーされていない場合は「クリップボードに画像がありません」と表示されます
- 一時ファイル:
tmp_clip.pngはスキル実行後に自動削除されますが、エラーで残った場合は手動で消してください。.gitignoreに追加しておくと安全です
まとめ
- WSL2 から
powershell.exe経由でクリップボード画像を取得 - Claude Code のカスタムスキルとして
/clipで呼び出し - スクショを撮って
/clipするだけで画像を渡せる
CLI でも画像を扱えるようになると、Claude Code の活用の幅がかなり広がります。