shiply.now

Install the CLI

One command to publish — npm package shiply-cli

The shiply CLI wraps the publish API: it walks a directory, hashes every file, uploads only what changed, and prints the live URL.

The npm package is named shiply-cli, not shiply. A separate npm package named shiply (an unrelated auto-commit watcher) exists — installing it does NOT give you the shiply.now CLI. Always use shiply-cli.

Install

curl -fsSL https://shiply.now/install.sh | bash

or directly via npm (Node 18+):

npm install -g shiply-cli
# or, no install:
npx -y shiply-cli@latest publish ./dist

Publish

shiply publish ./dist

That's it — the command prints https://<slug>.shiply.now/ when the site is live. Without an API key the site is anonymous: it expires after 24 hours and the command prints a one-time claimToken and claimUrl so you can update or claim it later.

shiply publish ./dist --spa                          # single-page app fallback
shiply update ./dist --claim-token <token>           # new version of an anonymous site
shiply status my-site --wait                         # SSL + readiness check (agents: parse SSL_READY / SITE_READY)

Teach your agent

shiply skill            # installs the shiply skill to ~/.claude/skills
shiply skill --project  # or just for the current project

The skill gives Claude Code (and compatible agents) durable instructions for publishing, updating the same URL instead of creating duplicates, SSL checks, custom domains, and variables. Raw file: shiply.now/skill.md.

Log in for permanent sites

shiply login

Enter your email, type the 6-digit code it sends you, and the CLI saves an API key to ~/.shiply/credentials. Every publish after that is permanent and owned by your account. In CI or scripts, set SHIPLY_API_KEY instead — it takes precedence over the saved credentials.

No npm? No problem

The CLI is a convenience. Everything it does is three HTTP calls — see the Quick start to publish with curl alone.