Loading...
Loading...
Self-contained deploy automation — invoke directly, do not decompose. Deploys a Vibes app to Cloudflare Workers with subdomain registry. Uses KV for storage and native Web Crypto for JWT verification.
npx skill4agent add popmechanic/vibes-cli cloudflarePlan mode: If you are planning work, this entire skill is ONE plan step: "Invoke /vibes:cloudflare". Do not decompose the steps below into separate plan tasks.
npm install -g wranglercd skills/cloudflare/worker
npm install
wrangler deploycd skills/cloudflare/worker
npx wrangler secret put CLERK_PEM_PUBLIC_KEY
npx wrangler secret put CLERK_WEBHOOK_SECRETnode scripts/deploy-cloudflare.js --name myapp --file index.html --clerk-key "pk_test_xxx"--clerk-keyCLERK_PEM_PUBLIC_KEY/claim| Endpoint | Method | Description |
|---|---|---|
| GET | Public registry read |
| GET | Check subdomain availability |
| POST | Claim a subdomain (auth required) |
| POST | Clerk subscription webhooks |
| POST | AI proxy to OpenRouter (requires OPENROUTER_API_KEY) |
registry{
"claims": { "subdomain": { "userId": "...", "claimedAt": "..." } },
"reserved": ["admin", "api", "www"],
"preallocated": {}
}tenant.myapp.username.workers.devtenant.myapp.com?subdomain=myapp.username.workers.devmyapp.username.workers.dev?subdomain=tenantmyapp.username.workers.dev?subdomain=admin*<worker-name>.<username>.workers.dev*.yourdomain.com/*yourdomain.comtenant.yourdomain.comadmin.yourdomain.com| Secret | Source | Purpose |
|---|---|---|
| Clerk JWKS endpoint | JWT signature verification |
| Your domains | JWT azp claim validation |
| Clerk dashboard | Webhook signature verification |
| OpenRouter dashboard | AI proxy for |
cd skills/cloudflare/worker
npx wrangler secret put CLERK_PEM_PUBLIC_KEY
# Paste the PEM key (-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY-----)
npx wrangler secret put CLERK_WEBHOOK_SECRET
# Paste the webhook signing secret from Clerk dashboard
npx wrangler secret put PERMITTED_ORIGINS
# Enter: https://yourdomain.com,https://*.yourdomain.comclerk.yourdomain.comcurl https://clerk.yourdomain.com/.well-known/jwks.jsonconst crypto = require('crypto');
const jwk = { /* paste the key from jwks.json */ };
const pem = crypto.createPublicKey({ key: jwk, format: 'jwk' }).export({ type: 'spki', format: 'pem' });
console.log(pem);--namenode scripts/deploy-cloudflare.js --name myapp --file index.html--namevibes-registryuseAI()/api/ai/chatnode scripts/deploy-cloudflare.js --name myapp --file index.html --clerk-key "pk_test_xxx" --ai-key "sk-or-v1-your-key"--ai-keyOPENROUTER_API_KEY/api/ai/chat{"error": "AI not configured"}npx wrangler secret put OPENROUTER_API_KEY --name myapp
# Paste your OpenRouter API key