factory
Self-contained SaaS pipeline — invoke directly, do not decompose. Generates a factory app with landing page, Stripe subscription checkout, Vibe Token economics, and deploys to Cloudflare Workers. Use when the user wants to monetize an app, add billing, create token-backed revenue sharing, or turn an app into a business.
git clone --depth 1 https://github.com/popmechanic/VibesOS /tmp/factory && cp -r /tmp/factory/skills/factory ~/.claude/skills/factorySKILL.md
> **Plan mode**: If you are planning work, this entire skill is ONE plan step: "Invoke /vibes:factory". Do not decompose the steps below into separate plan tasks.
**Display this ASCII art immediately when starting:**
```
░▒▓████████▓▒░░▒▓██████▓▒░ ░▒▓██████▓▒░▒▓████████▓▒░░▒▓██████▓▒░░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░
░▒▓██████▓▒░ ░▒▓████████▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░ ░▒▓██████▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░ ░▒▓█▓▒░ ░▒▓██████▓▒░░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
```
## Quick Navigation
- [Critical Rules](#-critical-rules---read-first-) - Read this first
- [Step 1: Pre-Flight](#step-1-pre-flight) - Verify prerequisites
- [Step 2: Subscription Pricing](#step-2-subscription-pricing) - Set monthly price
- [Step 3: AI Token Billing](#step-3-ai-token-billing) - Configure AI margins
- [Step 4: Vibe Token Config](#step-4-vibe-token-configuration) - Set revenue share
- [Step 5: Stripe Connect](#step-5-stripe-connect-onboarding) - Developer onboarding
- [Step 6: Deploy](#step-6-deploy) - Build and deploy
- [Step 7: Generate Invite Codes](#step-7-generate-invite-codes-optional) - Invite partners
---
## CRITICAL RULES - READ FIRST
**DO NOT generate code manually.** This skill uses pre-built scripts and API calls:
| Step | Tool | What it does |
|------|------|--------------|
| Assembly | `assemble-factory.js` | Generates unified index.html |
| Deploy | `deploy-cloudflare.js` | Deploys to Cloudflare Workers |
| Configure | `POST /app/configure` | Stores billing config in KV |
| Initialize | `POST /token/:appName/initialize` | Sets up Vibe Token economics |
| Grant | `POST /token/:appName/grant` | Grants tokens to partners |
**Script location:**
```bash
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}"
```
**Factory API base:** `https://factory.vibesos.com`
---
# Factory - App Monetization Pipeline
Transform your Vibes app into a revenue-generating SaaS with token-backed contributor rewards.
## Architecture
The factory skill sets up:
- **Stripe Subscriptions** — flat monthly price + metered AI token billing
- **Vibe Token Economics** — revenue-sharing tokens for distribution partners
- **Factory Dashboard** — manage tokens, view revenue, process payouts
All configuration is stored in the factory worker. Token state lives in a Durable Object per app.
---
### Terminal or Editor UI?
Detect whether you're running in a terminal (Claude Code CLI) or an editor. **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.
## Step 1: Pre-Flight
**Before starting, verify these prerequisites. STOP if any check fails.**
### 1.1 Auth Check
Auth is automatic — on first deploy, a browser window opens for Pocket ID login. Tokens are cached at `~/.vibes/auth.json` for subsequent deploys.
### 1.2 Detect Existing App
```bash
ls -la app.jsx 2>/dev/null || echo "NOT_FOUND"
```
**Decision tree:**
- Found `app.jsx` -> Proceed to Step 2
- Found multiple `riff-*/app.jsx` -> Ask user to select one
- Found nothing -> Tell user to run `/vibes:vibes` first
### 1.3 Check Existing Config
```bash
VIBES_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "${CLAUDE_SKILL_DIR}")")}"
APP_NAME="${1:-}"
if [ -n "$APP_NAME" ]; then
curl -s "https://factory.vibesos.com/connect/status/$APP_NAME" \
-H "Authorization: Bearer $(cat ~/.vibes/auth.json | python3 -c "import sys,json; print(json.load(sys.stdin)['accessToken'])")" 2>/dev/null
fi
```
If the app already has billing configured, offer to update or show current config.
### 1.4 Pre-Flight Summary
> "Pre-flight checks passed:
> - App found (app.jsx)
> - Auth is automatic via Pocket ID
>
> Ready to configure your app factory."
---
## Step 2: Subscription Pricing
Use AskUserQuestion:
```
Question 1: "What should your app cost per month?"
Header: "Monthly Price"
Options:
- "$5/month"
- "$10/month"
- "$25/month"
- Other (enter custom amount)
Description: "This is the flat monthly subscription price. AI token usage is billed separately."
Question 2: "Offer a free trial?"
Header: "Free Trial"
Options:
- "No trial"
- "7-day trial"
- "14-day trial"
Description: "Trial lets users try before paying. Stripe handles the trial period automatically."
```
Store: `price` (number, dollars), `trialDays` (number, 0/7/14)
---
## Step 3: AI Token Billing
Use AskUserQuestion:
```
Question: "Does your app use AI features?"
Header: "AI Billing"
Options:
- Label: "No AI features"
Description: "Skip AI billing setup"
- Label: "Yes, 2x margin (recommended)"
Description: "Customers pay 2x the model cost. You keep the difference."
- Label: "Yes, 3x margin"
Description: "Higher margin, customers pay 3x model cost."
- Label: "Yes, custom margin"
Description: "Enter your own multiplier."
```
If AI is enabled, explain:
> "OpenRouter routes to the underlying provider; the factory worker meters token usage per customer and posts events to a shared Stripe Billing Meter. Your customers will see AI usage as a line item on their monthly invoice alongside the flat subscription fee."
Store: `aiMarginPercent` (number: 0 for no AI, 200 for 2x, 300 for 3x, etc.)
---
## Step 4: Vibe Token Configuration
Use AskUserQuestion:
```
Question: "What percentage of revenue should flow to token holders? This is locked forever."
Header: "Revenue Share (Alpha)"
Options:
- "10% — Conservative"
- "15% — Balanced"
- "20% — Generous (recommended)"
- "25% — Very generous"
- Other (enter custom %)
Description: "Alpha determineDeploy Julian to an exe.xyz VM (new instance or update existing)
Self-contained deploy automation — invoke directly, do not decompose. Deploys a Vibes app to Cloudflare Workers via the Deploy API. Use when deploying, publishing, going live, pushing to production, or hosting on the edge. Authenticates with Pocket ID.
Self-contained design transformer — invoke directly, do not decompose. Transforms a design reference HTML file into a Vibes app. Use when user provides a design.html, mockup, or static prototype to match exactly.
Self-contained SaaS pipeline — invoke directly, do not decompose.
Self-contained parallel generator — invoke directly, do not decompose. Generates 3-10 app variations in parallel for comparing ideas. Use when user says "explore options", "give me variations", "riff on this", "brainstorm approaches", or wants to see multiple interpretations of a concept.
Lightweight requirements gathering before app generation. Asks non-technical multiple-choice questions to understand user intent, then produces a brief for the generate prompt.
Self-contained app generator — invoke this skill directly, do not decompose into sub-steps. Generates React web apps with TinyBase reactive data store. Use when creating new web applications, adding components, or working with real-time data. Ideal for quick prototypes and single-page apps that need real-time data sync.
>