vibes-diy generate v2.2.11 · npm
one command · one prompt · one live React app

Stop commissioning software.
Generate it.

npx vibes-diy generate turns a sentence into a deployed single-file React app, persisted with Fireproof, live in under a minute at a URL you can share. No project. No scaffold. No PR. No procurement. This site was built with it.

$ npx vibes-diy@latest generate \
    --user-slug=og \
    --app-slug=pizza-quiz \
    "Competitive study app. Each player submits a pizza order, then takes an AI-generated quiz on a topic. Top scorers get weighted votes on the final pizza. Save sessions in Fireproof."

Generating...
Requests enabled
Deployed: og/pizza-quiz
URL: https://vibes.diy/vibe/og/pizza-quiz
apps deployed
85+
themed pages
11
dev hours
~0
scaffolds
0
the workflow

It's just shell. Background ten and wait.

Every expressions cluster, every college audience page, every dating take — built by backgrounding a stack of npx vibes-diy generate calls and waiting. No wrapper function needed. The CLI's defaults are fine.

# cluster/_run.sh — fire ten in parallel, wait for them all
npx vibes-diy generate "Pizza-trivia study app..." &
npx vibes-diy generate "Reunite lonely socks after laundry..." &
npx vibes-diy generate "Anonymous dorm-mess roast leaderboard..." &
# ... seven more ...
wait
/ 01 / WRITE

One sentence per app.

Under 50 words. Don't dictate styling — the model picks its own. Long style-pinning preambles overflow the server-side budget and trigger a stuck No files resolved state.

/ 02 / FIRE

Background ten at once.

The CLI takes a few minutes per gen. A bash gen() function running ten in parallel lands a whole themed page in the time it takes to write the next prompt set.

/ 03 / VERIFY

One curl tells the truth.

Look for a real fsId and a V1 import in the deployed HTML. fsId: pending with mountVibe([]) means the slug registered but the code never landed — white-screen.

case studies — this site

85 deployed apps. All from this CLI.

Every embedded app on every page of this site was generated by npx vibes-diy generate. Eleven themed pages, eighty-five real React apps, each persisted with Fireproof, each a single shell call.

// case 01
80
apps · 8 pages · 1 weekend
expressions/ — themed-cluster hub

Eight visual languages, ten apps each.

Each cluster sub-page picks a fresh skin (Terminal CRT, Broadsheet, Aether Brass, Scrapbook, Archive, Rune Interface, Vault, Dossier) and fills with ten one-sentence prompts. The batch script kicks off ten parallel gens; six minutes later the page has ten real apps.

The same scripts work for every cluster. The same one-line verify command catches every stuck slug.

→ /expressions/ 8 sub-pages 80 apps
// case 02
10
apps · single phosphor theme
one-bit-status — the unified-skin demo

The same theme preamble for every gen.

The Terminal CRT cluster (LIGHTS.ON, Pet Status Board, Nap Declaration, Noon Wave...) shows what happens when the page and the embedded apps share a visual register. The cards on the page and the phosphor-green apps inside them feel like one product.

og/lights-on is the canonical example — open it, tap the LIGHT, watch your dot turn on.

→ one-bit-status 10 apps 1 skin
// case 03
5
apps · audience landing page
college.hbs — single afternoon

From CSV to live in one sitting.

Five dorm-shaped prompts pasted from a spreadsheet, five SEO-style slugs (pizza-quiz, sock-finder, study-buddy-pairing...), one batch script, five live apps in fifteen minutes. The page itself follows the existing audience-page convention.

Same shape on /dating — five anti-swipe takes, all live, each a single sentence input.

the rules

Five things this site learned the hard way.

Pinned in the README and the agent's memory after the first cluster's worth of surprises. Skip these and you'll burn a slug.

1. PIN --user-slug

The CLI's logged-in default drifts (account swap, re-auth, CLI upgrade). Always pass --user-slug=og explicitly. Without it your deploys land at jchris/... and your page hard-coded og/... white-screens.

2. SEO slugs, not titles

Use pizza-quiz not professor-pizza. Slugs become public URL paths; descriptive keywords aid discovery. The branded title still lives in the page's title field.

3. Under 50 words

Long prompts (especially style-pinning preambles) overflow a server-side budget and trigger a stuck No files resolved response that returns the same byte count regardless of input.

4. Don't dictate styling

The model picks its own. If you want a coherent skin across the cluster, skin the host page — the embedded app stands on its own.

5. Fresh slug on stuck

If a slug returns the same byte-count error on every retry, it's poisoned. Don't keep retrying. Pick a fresh SEO slug, redeploy, update the page.

6. Verify with curl

curl -sL https://<slug>--og.prod-v2.vibesdiy.net/ | grep fsId. Real fsId: "z..." + mountVibe([V1]) = live. fsId: "pending" + mountVibe([]) = empty stub.

try this

Hand it to your agent.

The CLI is the primitive. Coding agents (Claude Code, Cursor, etc) are great at driving it. Paste this into your agent and watch a whole themed site assemble itself — five sub-pages, thirty deployed apps, batch-script and verify included.

# paste-into-agent prompt — 30 apps, 5 themed sub-pages, one /games/ hub
Build static HTML landing pages (no framework): a /games/ hub plus five themed sub-pages — pinball, retro arcade, classic platformer, modern, sports. Each sub-page picks its own visual skin and showcases 6 deployed mini-games. Run npx vibes-diy login once, then generate each game via npx vibes-diy generate with a sub-50-word prompt — you pick the specifics. The CLI prints each deploy URL and writes a local README.md with the title and prompt; append /screenshot.jpg to the deploy URL for an image, and link the URL itself for the live app. Embed both on every card. Preview by opening the HTML file locally, then deploy to Cloudflare Pages.

// the agent picks the slugs, the per-app prompts, and the skins. Six apps × five categories = thirty deploys, batched in parallel.

One sentence. One app. Go.

The CLI is on npm. The flow is bash. The deploys are real apps you can Join, Clone, and Remix. Browse the eighty-five built for this site, then build your own.