cloudflare
Self-contained deploy automation — invoke directly, do not decompose. Deploys a Vibes app to Cloudflare Workers via the Deploy API. Use when deploying,…
Self-contained SaaS automation — invoke directly, do not decompose. Transforms a Vibes app into a multi-tenant SaaS with subdomain-based tenancy. Adds Pocket ID authentication, subscription gating, and generates a unified app with landing page, tenant routing, and admin
$ npx -y skills add popmechanic/VibesOS --skill sell --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sellContext preview
The summary Claude sees to decide when to auto-load this skill.
Self-contained SaaS automation — invoke directly, do not decompose. Transforms a Vibes app into a multi-tenant SaaS with subdomain-based tenancy. Adds Pocket ID authentication, subscription gating, and generates a unified app with landing page, tenant routing, and admin
name: sell argument-hint: "[app-name]" description: Self-contained SaaS automation — invoke directly, do not decompose. Transforms a Vibes app into a multi-tenant SaaS with subdomain-based tenancy. Adds Pocket ID authentication, subscription gating, and generates a unified app with landing page, tenant routing, and admin dashboard. Use when the user wants to monetize an app, add auth and billing, create a SaaS product, add subscriptions, or turn an app into a business. license: MIT allowed-tools: Read, Write, Bash, Glob, AskUserQuestion metadata: author: "Marcus Estes"
> **Plan mode**: If you are planning work, this entire skill is ONE plan step: "Invoke /vibes:sell". Do not decompose the steps below into separate plan tasks.
**Display this ASCII art immediately when starting:**
░▒▓███████▓▒░▒▓████████▓▒░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓██████▓▒░░▒▓██████▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓███████▓▒░░▒▓████████▓▒░▒▓████████▓▒░▒▓████████▓▒░---
> **Assembly: transform (strip)** — `assemble-sell.js` receives a vibes-generated app.jsx and adapts it for the sell template. It strips `import` statements, `export default`, React destructuring, and template constants — because the sell template already provides all of these. All dependencies (`React`, TinyBase hooks, `useTenant`, `useState`, etc.) are available as globals.
**DO NOT generate code manually.** This skill uses pre-built scripts:
| Step | Script | What it does | |------|--------|--------------| | Assembly | `assemble-sell.js` | Generates unified index.html | | Deploy | `deploy-cloudflare.js` | Deploys to Cloudflare Workers with registry |
**Script location:**
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}"
bun "$VIBES_ROOT/scripts/assemble-sell.js" ...
bun "$VIBES_ROOT/scripts/deploy-cloudflare.js" ...**NEVER do these manually:**
**ALWAYS do these:**
---
This skill uses `assemble-sell.js` to inject the user's app into a pre-built template. The template contains security checks, Pocket ID auth integration, and TinyBase data patterns.
Convert your Vibes app into a multi-tenant SaaS product with:
The sell skill generates a **single index.html** file that handles all routes via client-side subdomain detection:
yourdomain.com → Landing page *.yourdomain.com → Tenant app with auth admin.yourdomain.com → Admin dashboard
This approach simplifies deployment - you upload one file and it handles everything.
---
Detect whether you're running in a terminal (Claude Code CLI) or an editor (Cursor, Windsurf, VS Code with Copilot). **Terminal agents** use `AskUserQuestion` for all input. **Editor agents** present requirements as a checklist comment, wait for user edits, then proceed. See the vibes skill for the full detection and interaction pattern.
**Before starting, verify these prerequisites. STOP if any check fails.**
Auth is automatic — on first deploy, a browser window opens for Pocket ID login. Tokens are cached at `~/.vibes/auth.json` for subsequent deploys. No `.env` credential setup is needed.
ls -la app.jsx 2>/dev/null || echo "NOT_FOUND"
**If output shows `NOT_FOUND`:**
Check for riff directories:
ls -d riff-* 2>/dev/null
**Decision tree:**
**STOP HERE** if no app exists. The sell skill transforms existing apps.
After checks pass, confirm: > "Pre-flight checks passed: > - ✓ App found (app.jsx) > - ✓ Auth is automatic via Pocket ID (browser login on first deploy) > > Now let's configure your app settings."
---
Collect the app name for deployment.
Use AskUserQuestion:
Question: "What should we call this app?" Header: "App Name" Options: Provide 2 suggestions based on context + user enters via "Other" Description: "Used for database naming and deployment URL (e.g., 'wedding-photos')" multiSelect: false
Store as `appName` (URL-safe slug: lowercase, hyphens, no special chars).
The app will be deployed via the Deploy API (`/vibes:cloudflare`), which assigns the domain automatically. Store `{appName}.vibes.diy` as `domain`.
---
Instantly make your own small multi-user apps, without a backend. For apps made with Vibes, the front-end is the app.
Repo: popmechanic/VibesOS
Self-contained deploy automation — invoke directly, do not decompose. Deploys a Vibes app to Cloudflare Workers via the Deploy API. Use when deploying,…
Self-contained design transformer — invoke directly, do not decompose. Transforms a design reference HTML file into a Vibes app. Use when user provides a…
Self-contained SaaS pipeline — invoke directly, do not decompose. Generates a factory app with landing page, Stripe subscription checkout, Vibe Token…
Self-contained parallel generator — invoke directly, do not decompose. Generates 3-10 app variations in parallel for comparing ideas. Use when user says…
Self-contained test automation — invoke directly, do not decompose. End-to-end integration test that assembles a fixture, deploys to Cloudflare (with…