Skip to content
Hamster.Xu edited this page Mar 17, 2026 · 4 revisions

Welcome to the sftp-cc-toomaster wiki!

A universal SFTP upload tool for Claude Code. Supports incremental upload, automatic private key binding, and permission correction.

Zero external dependencies — pure shell implementation, only requires system-built-in sftp, git, grep, sed.

Deploy Code to Server with One Sentence — Claude Code SFTP Plugin

Ever wished you could just tell Claude "sync code to server" and have it done? Now you can.

The Problem

If you've used PhpStorm before, you know how nice it is — every file change gets auto-synced to your dev server via SFTP. But after switching to Claude Code, that workflow breaks. Claude edits your code locally, and you're stuck manually pulling changes on the server. Over and over.

The Solution

sftp-cc-toomaster — a Claude Code skill that lets you deploy code with natural language:

"sync code to server"

That's it. One sentence. Claude handles the rest.

Setup (2 minutes)

Step 1: Install

Option A: Plugin Marketplace (Recommended)

/plugin marketplace add https://github.com/toohamster/sftp-cc-toomaster
/plugin install sftp-cc-toomaster@sftp-cc-toomaster

Option B: Manual Install

git clone https://github.com/toohamster/sftp-cc-toomaster.git
bash sftp-cc-toomaster/install.sh /path/to/your-project

Step 2: Configure your server

bash .claude/skills/sftp-cc-toomaster/scripts/sftp-init.sh \
  --host your-server.com \
  --username deploy \
  --remote-path /var/www/html

Step 3: Drop your SSH key

cp ~/.ssh/id_rsa .claude/sftp-cc/

Permissions are auto-corrected to 600. No extra config needed.

Done! Now open Claude Code and try it out.

How to Use

Just talk to Claude naturally:

What you say What happens
"sync code to server" Incremental upload (only changed files)
"upload all files to server" Full upload
"upload src/ to server" Upload specific directory
"deploy code and delete removed files" Incremental + remote delete

How Incremental Upload Works

First run:  uploads everything, saves git commit hash
Next runs:  git diff → only uploads changed/new files

It detects:

  • Committed changes since last upload
  • Staged but uncommitted changes
  • Unstaged modifications
  • Brand new untracked files

No wasted time re-uploading unchanged files.

What Makes It Different

  • Zero dependencies — pure shell, no jq/python/node needed
  • Private key auto-binding — just drop the key file, it configures itself
  • Safe by default — remote files are NOT deleted unless you explicitly use --delete
  • Works on macOS & Linux — bash 3+ compatible

Links

Questions? Happy to help!