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)
jqinstalled (brew install jqon macOS,apt install jqon Debian/Ubuntu)curlavailable 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 sqlfor a SQL database (Pro or BYOV plan).--visibility private— Only you can access it. Also acceptsunlistedandpublic.--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
viewer → writer → admin → owner. 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.