CLI Skill

Build and deploy vibes from your local machine

Last updated: April 2026

The vibe-coded.ai CLI skill lets Claude Code build, deploy, and manage vibes directly from your local development environment. Instead of using the web-based Vibe Builder, you write code in your editor, run a dev server locally, and push to the platform when ready.

Early access: The CLI skill is currently available to Claude Code users on the waitlist. Install instructions below assume you already have access.

Prerequisites

  • Claude Code installed and authenticated
  • A vibe-coded.ai account (join the waitlist if you don't have one)
  • jq installed (brew install jq on macOS, apt install jq on Debian/Ubuntu)
  • curl available in your shell (pre-installed on macOS and most Linux distros)

Install

1. Copy the skill into Claude Code's skills directory

The skill lives at ~/.claude/skills/vibe-coded-ai/. If you've received access, place the skill directory there:

# If installing from a zip or tarball:
mkdir -p ~/.claude/skills
# Extract so you end up with ~/.claude/skills/vibe-coded-ai/

# If installing from a symlink to another path:
ln -s /path/to/vibe-coded-ai ~/.claude/skills/vibe-coded-ai

2. Add the vibe binary to your PATH

The bin/vibe script inside the skill can be placed anywhere on your PATH. The recommended location is ~/.local/bin/:

mkdir -p ~/.local/bin
ln -s ~/.claude/skills/vibe-coded-ai/bin/vibe ~/.local/bin/vibe
chmod +x ~/.claude/skills/vibe-coded-ai/bin/vibe

Make sure ~/.local/bin is in your PATH. Add this to your ~/.bashrc or ~/.zshrc if it isn't already:

export PATH="$HOME/.local/bin:$PATH"

3. Verify

vibe help

You should see the command list. A command not found error means the binary isn't on your PATH.

Login

Authenticate with your vibe-coded.ai account. Claude Code runs this for you — the password is read securely and never enters the conversation.

vibe login your@email.com

On success, credentials are written to ~/.vibe-coded/credentials.json with mode 600. The file contains your API token (valid 90 days), your user slug, and the expiry timestamp. Treat it like an SSH private key — don't commit it to git.

When the token expires, re-run vibe login.

First vibe

1. Create and register

mkdir my-app && cd my-app
vibe init my-app --storage kv --visibility private

This registers the vibe on the platform and writes .vibe-coded.json to your project directory. Options:

  • --storage kv — KV storage (free). Use --storage sql for a SQL database (Pro or BYOV plan).
  • --visibility private — Only you can access it. Also accepts unlisted and public.
  • --title "My App" — Human-readable name (defaults to the slug).

If the slug is already taken, the command exits with code 2 and prints the existing config as JSON. You can reuse it, pick a new slug, or call vibe settings to reconfigure.

2. Develop locally

Add your source files. For a full-stack vibe you'll have a worker.ts or worker.js (backend — TypeScript preferred), src/App.vue (frontend), and vite.config.ts. See Anatomy of a Vibe for the file structure.

For Vue projects, configure Vite to proxy API calls to your preview worker during local development:

// vite.config.ts
export default defineConfig({
  plugins: [vue()],
  server: {
    proxy: {
      '/api': {
        target: 'https://p--yourslug--my-app.vibe-coded.ai',
        changeOrigin: true,
      }
    }
  }
})

Then start the dev server: bun run dev or npm run dev. Frontend hot-reloads instantly. Backend (worker) changes require a vibe preview cycle.

3. Deploy to preview

When a feature is ready to test on the live platform:

vibe preview

This uploads your source files, triggers a container build (30–60 seconds), and polls until it succeeds or fails. On success it prints the preview URL:

https://p--yourslug--my-app.vibe-coded.ai

deploy is an alias for preview. Don't run it on every file change — use the local dev server for that.

4. Publish to production

Once the preview looks correct:

vibe publish

This promotes the preview build to production. Your vibe goes live at:

https://yourslug--my-app.vibe-coded.ai

Command reference

Command Purpose Example
vibe login <email> Authenticate and save a 90-day API token vibe login you@example.com
vibe init <slug> [opts] Register a new vibe and write .vibe-coded.json vibe init my-app --storage kv
vibe preview Upload source, build, and deploy to preview URL (alias: deploy) vibe preview
vibe publish Promote preview build to production vibe publish
vibe status [--plan] Show vibe info and recent builds. --plan prints your account plan. vibe status
vibe urls Print app and MCP endpoint URLs for preview and production vibe urls
vibe logs [build-id] Show build logs. Omit build ID for the latest build. vibe logs
vibe settings [opts] View or update title, visibility, and interaction policy vibe settings --visibility public
vibe access <sub> Manage collaborators (list, grant, update, revoke, revoke-all) vibe access grant alice@example.com --role writer
vibe password <sub> Set or remove password protection (check, set, remove) vibe password set
vibe secrets <sub> Manage environment secrets — Pro or BYOV plan required (list, create, read, update, delete, audit) vibe secrets create STRIPE_KEY
vibe delete --confirm Permanently delete the vibe vibe delete --confirm

Settings flags

Flag Values Description
--title any string Human-readable display name
--visibility private, unlisted, public Whether the vibe appears in search / is accessible
--interaction public, authenticated, invite_only Who can interact with the vibe

Common combinations: private app = --visibility private --interaction invite_only. Fully open = --visibility public --interaction public.

Access roles

viewerwriteradminowner. Each role includes all permissions of the roles below it. Grant with vibe access grant <email> --role <role>.

Secret name format

Secret names must match ^[A-Z][A-Z0-9_]{0,63}$ — uppercase letters, digits, and underscores, starting with a letter. Examples: STRIPE_KEY, OPENAI_API_KEY. Secrets are available on Pro and BYOV plans.

Troubleshooting

Missing credentials

Error: No credentials. Run the login flow in Claude Code first.

Run vibe login <email> to authenticate.

Expired token

Error: Token expired (2026-07-01T00:00:00.000Z). Re-run login in Claude Code.

API tokens are valid for 90 days. Re-run vibe login to mint a new one. To revoke a token immediately, log into your account in a browser and use the /account/tokens UI (or DELETE /auth/api-token with jti from an authenticated browser session — Bearer tokens cannot revoke themselves).

Plan-required errors

Error: SQL storage requires Pro or BYOV plan

SQL storage, file storage, and secrets require a Pro or BYOV plan. Check your plan with vibe status --plan. See Plans & Billing to upgrade.

Build failed

Build failed. Logs:

Run vibe logs to see the full build output. Common causes: missing vite in devDependencies, TypeScript errors, or an incorrect worker entry point. Fix the source and re-run vibe preview.

Slug already exists (exit code 2)

vibe init exits with code 2 and prints the existing vibe's config as JSON. Choose one of: reuse the slug as-is, run vibe settings to reconfigure it, or pick a different slug and re-run vibe init.

Rate limit (429)

Build and deploy operations are rate-limited. If you see a 429 response, wait a moment and retry. Build trigger limits vary by plan (Free: 10/hr, BYOV: 30/hr, Pro: 60/hr per user). See Plans & Billing.