Claude Info
DevOps

SSH Image Skill для Claude Code

AlexZeitler/claude-ssh-image-skill

Скилл для Claude Code и локальный демон, позволяющие вставлять изображения из буфера обмена в сессию Claude Code на удалённом сервере через SSH-туннель. Поддерживает Linux (Wayland/X11) и macOS.

Установка

terminal
bash
git clone https://github.com/AlexZeitler/claude-ssh-image-skill.git

README

claude-ssh-image-skill

Скилл для Claude Code и локальный демон, позволяющие вставлять изображения из буфера обмена в сессию Claude Code на удалённом сервере через SSH.

Claude Code не поддерживает вставку изображений по SSH нативно. Этот проект решает задачу подходом, аналогичным sshimg.nvim, но специально для Claude Code.

Как это работает

Локальная машина Удалённый сервер (SSH) ┌──────────────────────┐ ┌──────────────────────────┐ │ Буфер обмена (PNG) │ │ Claude Code │ │ │ │ │ │ │ │ ▼ │ │ ▼ │ │ ccimgd (Port 9998) │◄────────────────│ /paste-image Skill │ │ - wl-paste │ SSH Reverse │ - TCP-запрос к ccimgd │ │ - Возвращает base64 │ Tunnel │ - Получает base64-образ │ │ изображение │ (Port 9998) │ - Сохраняет во врем. │ │ │ │ файл → Claude видит │ └──────────────────────┘ │ изображение │ └──────────────────────────┘
  1. Скилл /paste-image запускает клиент ccimg на удалённом сервере, который отправляет TCP-запрос на 127.0.0.1:9998 (перенаправляется через SSH reverse tunnel на локальную машину)
  2. ccimgd читает PNG-изображение из локального буфера обмена (wl-paste на Wayland, xclip на X11, pngpaste на macOS)
  3. Изображение возвращается в виде base64-encoded JSON
  4. ccimg сохраняет его как временный PNG-файл и выводит путь
  5. Скилл использует инструмент Read в Claude для отображения изображения

Требования

  • Локальная машина (Linux): wl-paste (Wayland, входит в wl-clipboard) или xclip (X11)
  • Локальная машина (macOS): pngpaste (brew install pngpaste)
  • Удалённый сервер: Claude Code
  • Сборка из исходников: Go

Сборка

Сборка обоих бинарных файлов (демон + клиент):

./build.sh

Собирает статически слинкованные бинарники для всех поддерживаемых платформ:

  • daemon/ccimgd-linux-amd64, daemon/ccimgd-darwin-amd64, daemon/ccimgd-darwin-arm64
  • client/ccimg-linux-amd64, client/ccimg-darwin-amd64, client/ccimg-darwin-arm64

Установка

Локальная машина (Linux)

bash
cp daemon/ccimgd-linux-amd64 ~/.local/bin/ccimgd
cp daemon/ccimgd.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now ccimgd

Локальная машина (macOS)

bash
cp daemon/ccimgd-darwin-arm64 /usr/local/bin/ccimgd   # или ccimgd-darwin-amd64 для Intel
cp daemon/com.ccimgd.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/com.ccimgd.plist

Удалённый сервер

Скопируйте клиентский бинарник и скилл на удалённый сервер:

bash
scp client/ccimg-linux-amd64 your-server:~/.local/bin/ccimg
scp skill/paste-image.md your-server:~/.claude/commands/paste-image.md

Чтобы избежать запросов разрешений при каждом вызове, добавьте в ~/.claude/settings.json:

json
{
  "permissions": {
    "allow": [
      "Bash(ccimg)"
    ]
  }
}

SSH-подключение

Подключитесь с reverse tunnel:

ssh -R 9998:localhost:9998 your-server

Или добавьте в ~/.ssh/config:

Host your-server RemoteForward 9998 localhost:9998

Использование

В Claude Code на удалённом сервере скопируйте изображение в буфер обмена на локальной машине и выполните:

/paste-image

Сравнение с sshimg.nvim

Аспектsshimg.nvimclaude-ssh-image-skill
КлиентПлагин Neovim (Lua)Скилл Claude Code
Демонimgd (Port 9999)ccimgd (Port 9998)
Передача изображенияДемон → scp → серверДемон → base64 в TCP-ответе → клиент сохраняет
Параметры запросаhost + pathНичего (пустой объект)
Совместная работаPort 9999Port 9998 — оба могут работать одновременно

Лицензия

MIT

Похожие скиллы