From 3b0eefc407fc4804ed1911494a3eaf78f54c87e5 Mon Sep 17 00:00:00 2001 From: Clawd Date: Sat, 11 Apr 2026 22:48:47 -0700 Subject: README: cleaner copy, drop internal history references Co-Authored-By: Claude Sonnet 4.6 --- README.md | 59 ++++++++++++++++++++++++++--------------------------------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 27ed219..fc44034 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,39 @@ # Ship -Deploy Go binaries and static sites to a VPS with automatic HTTPS. No agent on the server — just SSH, systemd, and Caddy. +Deploy Go binaries and static sites to a VPS. Automatic HTTPS. No daemon. Just SSH, systemd, and Caddy doing their jobs. ## How it works -Ship is a set of Claude skills. Instead of a rigid CLI that bakes in assumptions, Claude reasons about what to do using a family of narrow, composable skills. The server is the source of truth — no local state file that can go stale. +Ship is a set of Claude skills. Tell Claude what to deploy. Claude handles it. Server is source of truth — ask Claude what's running and it checks the server, not a file that lies to you. ## Skills | Skill | What it does | |-------|-------------| -| `/ship-setup` | One-time VPS config. Installs Caddy, creates directories, saves host to `~/.config/ship/config.json` | -| `/ship-status` | Show all running apps, ports, domains, and disk usage — derived live from server | -| `/ship-deploy` | Deploy a binary or static site — orchestrates the skills below | -| `/ship-binary` | Upload a pre-built binary, configure systemd + Caddy, back up SQLite | -| `/ship-static` | Rsync a dist folder, configure Caddy to serve it | -| `/ship-env` | Read/write env vars with merge semantics — never wipes existing vars | -| `/ship-caddy` | Manage per-app Caddyfile — validates before reloading | -| `/ship-service` | systemd control: start, stop, restart, logs | +| `/ship-setup` | One-time VPS setup. Installs Caddy, saves host config | +| `/ship-status` | What's running, what port, how much disk. Asks server directly | +| `/ship-deploy` | Deploy something. Claude asks what it needs to know | +| `/ship-binary` | Upload binary, wire up systemd + Caddy, back up SQLite first | +| `/ship-static` | Rsync dist folder, Caddy serves it | +| `/ship-env` | Read/write env vars. Never wipes what's already there | +| `/ship-caddy` | Manage per-app Caddy config. Validates before reloading | +| `/ship-service` | Start, stop, restart, logs | ## Install -Copy the `skills/` directory into `~/.claude/skills/`: - ```bash cp -r skills/ship-* ~/.claude/skills/ ``` ## Quick start -### 1. Set up your VPS +### 1. Set up VPS ``` /ship-setup ``` -Claude asks for SSH host, domain, and nickname. Saves to `~/.config/ship/config.json`. Installs Caddy on the server. - -Or run the script directly: +Claude asks for SSH host, domain, nickname. Done. Or skip Claude entirely: ```bash bash ~/.claude/skills/ship-setup/setup.sh ubuntu@1.2.3.4 example.com prod --default @@ -49,19 +45,17 @@ bash ~/.claude/skills/ship-setup/setup.sh ubuntu@1.2.3.4 example.com prod --defa /ship-deploy ``` -Claude asks what you're deploying (binary or static site), where it is, what to call it, and any env vars. Handles the rest. +Claude asks a few questions. Deploys. You go touch grass. -### 3. Check status +### 3. Check what's running ``` /ship-status ``` -Shows all running apps, ports, URLs, and disk usage — no local state file, reads directly from server. - ## Config -`~/.config/ship/config.json` — created by `/ship-setup`. Supports multiple hosts: +`~/.config/ship/config.json` — lives on your machine, created by `/ship-setup`. ```json { @@ -79,27 +73,26 @@ Shows all running apps, ports, URLs, and disk usage — no local state file, rea } ``` -Deploy to a specific host: "deploy foodtracker to staging" +Multiple hosts supported. "Deploy to staging" just works. ## Server layout ``` -/usr/local/bin/ # binary -/var/lib// # work directory -/var/lib//data/ # persistent data (SQLite lives here) -/var/lib//backups/ # SQLite backups (made before each binary swap) -/var/www// # static site files -/etc/systemd/system/.service # systemd unit -/etc/caddy/sites-enabled/.caddy # per-app Caddy config -/etc/ship/env/.env # environment variables -/etc/ship/ports/ # allocated port number +/usr/local/bin/ # binary +/var/lib//data/ # persistent data (SQLite lives here) +/var/lib//backups/ # SQLite backups before each deploy +/var/www// # static site files +/etc/systemd/system/.service # systemd unit +/etc/caddy/sites-enabled/.caddy # Caddy config +/etc/ship/env/.env # env vars +/etc/ship/ports/ # allocated port ``` ## Requirements -- VPS running Ubuntu 20.04+ or Debian 11+ +- Ubuntu 20.04+ or Debian 11+ - SSH access -- Claude Code with skills support +- Claude Code ## License -- cgit v1.2.3