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.

4. Tool compatibility (Codex CLI, Gemini CLI, Cursor)

The skill follows the Agent Skills standard, so it works in any compatible coding agent — not just Claude Code. The only difference is where each tool looks for skills. Pick the row for your tool:

ToolSkills directoryAction
Claude Code~/.claude/skills/Default install above — nothing extra.
Claude Desktop~/.claude/skills/Same as Claude Code.
Cursor~/.claude/skills/Auto-discovers the Claude path — nothing extra.
Codex CLI~/.codex/skills/Symlink (below) or install directly there.
Gemini CLI~/.gemini/skills/Symlink (below). Gemini also honors the ~/.agents/skills/ alias.

Codex CLI discovers user skills under ~/.codex/skills/ and Gemini CLI under ~/.gemini/skills/ — each its own per-tool directory. Symlink the already-installed skill into the tool you use so you maintain a single copy:

# Codex CLI
mkdir -p ~/.codex/skills
ln -s ~/.claude/skills/vibe-coded-ai ~/.codex/skills/vibe-coded-ai

# Gemini CLI
mkdir -p ~/.gemini/skills
ln -s ~/.claude/skills/vibe-coded-ai ~/.gemini/skills/vibe-coded-ai

The vibe binary on your PATH works identically across all five tools — only skill discovery differs.

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.