Sign in

Vibes DIY

@vibes.diy
107 followers 7 following 195 posts

Generate shareable apps in seconds at vibes.diy. Claude Code fans -> try out Vibes CLI! links.vibes.diy/CLI #VibesDIY

PostsRepliesMedia
Vibes DIY @vibes.diy · 24/09/2026
Seed a generative sketch and it becomes deterministic — so a saved piece can be five numbers instead of a PNG, and every gallery card is a live re-render you can click into and vary. good.vibes.diy/blog/a-picture-is-fi…
good.vibes.diy
a-picture-is-five-numbers
000
Vibes DIY @vibes.diy · 17/09/2026
Every example in this p5.js tutorial is a live sketch painting itself in the page. Four steps from a circle following your cursor to a flow-field instrument, and nothing to install at any point. good.vibes.diy/blog/you-can-just-ma…
good.vibes.diy
you-can-just-make-pictures
000
Vibes DIY @vibes.diy · 15/09/2026
Every model believes an AI call needs a server, because everywhere else it does. Ours doesn't, and our agent kept adding one. How we taught it in two sentences, never saying no. good.vibes.diy/blog/your-app-alread…
good.vibes.diy
Your app already talks to the model
000
Vibes DIY @vibes.diy · 11/09/2026
Send your vibe's data anywhere you want: Clio, Slack, Sheets, an inbox, through one Zap. Save the hook URL as a secret and the builder writes the rest. good.vibes.diy/blog/your-app-can-se…
good.vibes.diy
Send your vibe's data anywhere you want
One Zap, one saved URL, and your Vibes app hands a record to Clio, Slack, Sheets or an inbox.
010
Vibes DIY @vibes.diy · 11/09/2026
Ten strangers, ten phones, one evening: what they built, the six things that broke under our home page, and what shipped that week. good.vibes.diy/blog/ten-strangers-t…
good.vibes.diy
Ten strangers, ten phones, one evening
Ten unmoderated mobile sessions: what strangers built, six things that broke, and the fixes that shipped that week.
001
Vibes DIY @vibes.diy · 03/09/2026
A to-do list you share with your agent: one Vibes user's task board is the record their assistant reads and writes through the Claude connector, and "I submitted it" moves a task to waiting, never done. good.vibes.diy/blog/a-to-do-list-yo…
good.vibes.diy
A to-do list you share with your agent
One Vibes DIY user's task board is the record their AI assistant reads and writes.
000
Vibes DIY @vibes.diy · 02/09/2026
Vibes looks exactly the same and works very differently: one agent behind the chat, a draft in seconds and the real thing behind the conversation, and it keeps building after you close the tab. good.vibes.diy/blog/nothing-moved-e…
good.vibes.diy
Nothing moved, and everything got smarter
One agent behind the chat: a draft in seconds, the real thing behind the conversation.
000
Vibes DIY @vibes.diy · 27/08/2026
The AI-accelerated haven’t gone silent — they’ve shifted out of the visible spectrum. On what acceleration is doing to our friends, and the third option besides slowing down or speeding up. good.vibes.diy/blog/redshifted?src=…
good.vibes.diy
Redshifted
The AI-accelerated haven’t gone silent. They’ve shifted out of the visible spectrum.
010
Vibes DIY @vibes.diy · 21/08/2026
The browser drum machine gets a memory: local-first saves, background sync, and a shared groovebook where readers hear each other's beats live. good.vibes.diy/blog/publish-your-gr…
good.vibes.diy
Publish your groove
000
Vibes DIY @vibes.diy · 21/08/2026
We loaded a whole synthesizer at runtime, on purpose: 165 KB of C-to-WASM in an AudioWorklet, three cross-origin fetches, zero platform changes. Plus the AGPL lineage story. good.vibes.diy/blog/borrowing-a-was…
good.vibes.diy
Borrowing a WASM synth
000
Vibes DIY @vibes.diy · 21/08/2026
Your browser contains a full drum machine — one line of code away. A Strudel tutorial where every example plays live in the page. good.vibes.diy/blog/you-can-just-ma…
good.vibes.diy
You can just make music
000
Vibes DIY @vibes.diy · 21/08/2026
The browser drum machine gets a memory: local-first saves, background sync, and a shared groovebook where readers hear each other's beats live. good.vibes.diy/blog/publish-your-gr…
good.vibes.diy
Publish your groove
000
Vibes DIY @vibes.diy · 21/08/2026
We loaded a whole synthesizer at runtime, on purpose: 165 KB of C-to-WASM in an AudioWorklet, three cross-origin fetches, zero platform changes. Plus the AGPL lineage story. good.vibes.diy/blog/borrowing-a-was…
good.vibes.diy
Borrowing a WASM synth
000
Vibes DIY @vibes.diy · 19/08/2026
The software nobody would fund: too small to be a product, too specific to be a template, ten people want it. The cost was never describing it — it was everything around describing it. So we removed two setup gates. good.vibes.diy/blog/an-agent-for-te…
good.vibes.diy
An agent for ten people
The software nobody would fund, and the two setup gates we removed.
010
Vibes DIY @vibes.diy · 06/08/2026
Most agent output is written for whoever would have done the work by hand. everybody-vibes answers only what you asked: results and screenshots, options side by side for taste calls, and every change left as a draft a human flips. good.vibes.diy/blog/everybody-vibes…
good.vibes.diy
Nine quiet minutes and a screenshot
Results and screenshots, auditions for taste calls, draft-only pull requests.
000
Vibes DIY @vibes.diy · 30/07/2026
Don't think about an elephant. For a code-generating model that's not psychology, it's arithmetic — a prohibition ships the exact spelling of the mistake into every generation. Our house rule: teach the good shape, never the "don't." good.vibes.diy/blog/no-negative-tok…
good.vibes.diy
No negative tokenization
Why our code-generation prompts never say "don't."
010
Vibes DIY @vibes.diy · 28/07/2026
Curb cuts were built for wheelchairs. Fifty years later, delivery robots roll through them. Our no-footguns beginner platform converged the same way — on autonomous agent deployment. good.vibes.diy/blog/the-curb-cut-an…
good.vibes.diy
The curb cut and the robot
000
Vibes DIY @vibes.diy · 28/07/2026
We deployed a completely empty app as a control — it loaded in 15.2s vs the real app's 16.3. The floor was ours. The ledger of paying it down opens with a compiler shipped to people who only read. good.vibes.diy/blog/making-pickatho…
good.vibes.diy
Making Pickathon fast
000
Vibes DIY @vibes.diy · 28/07/2026
A festival app got slower the more people loved it — then stopped loading days before the gates opened. The culprit: a helper that went blind and rewrote the schedule every minute, for weeks. Debugging as detective fiction: good.vibes.diy/blog/the-case-of-the…
good.vibes.diy
The case of the slow festival app
Debugging as detective fiction: the Pickathon app that got slower the more people loved it.
000
Vibes DIY @vibes.diy · 28/07/2026
Claude Code could reach into a vibe’s live database; shell-less agents like Cowork couldn’t. The fix: wrap the CLI’s data ops as MCP tools — list/get/put/query, one login. good.vibes.diy/blog/mcp-server-for-…
good.vibes.diy
The day we gave shell-less agents hands on your data
011
Vibes DIY @vibes.diy · 28/07/2026
Where does your app’s data actually live? On the device — a local replica that IS the database. New post walks the whole write path in one diagram: local-first, background sync, access.js on the server. good.vibes.diy/blog/where-your-data…
good.vibes.diy
Where your data lives
000
Vibes DIY @vibes.diy · 20/07/2026
The first generation used to teach every app everything up front. Now it does less on purpose — and the platform remembers what it skipped, then offers it back at the right moment. good.vibes.diy/blog/the-first-turn-…
good.vibes.diy
The first turn does less on purpose
Defer, remember, offer: how the first generation got deliberately narrower.
010
Vibes DIY @vibes.diy · 19/07/2026
Our loading screen now plays the brand deck Jona Bechtolt of YACHT designed for us — the PDF's own vectors as stepped CSS keyframes. The rainbow face means your app is seconds away. good.vibes.diy/blog/your-loading-sc…
good.vibes.diy
Your loading screen is a brand deck
The first-build wait plays the brand brief Jona Bechtolt of YACHT designed — as a pure-CSS storyboard cut from the PDF's own vectors.
000
Vibes DIY @vibes.diy · 18/07/2026
Clicking a color swatch made every app 4× bigger. Our token was named --spacing — so is Tailwind v4's base unit. The reverse collision had quietly quarter-scaled every app for months. good.vibes.diy/blog/the-palette-tha…
good.vibes.diy
The palette that resized your app
A CSS variable named --spacing collided with Tailwind v4's engine, quarter-scaled every app for months, and got repaired by a codemod that proves its own diff.
000
Vibes DIY @vibes.diy · 18/07/2026
Our app-building bot replied, enthusiastically, to a Hacker News mirror bot. The fix wasn't a smarter classifier — the tell was the ACCOUNT, so the guard is deterministic code in triage. Now on Threads too. good.vibes.diy/blog/dont-reply-to-b…
good.vibes.diy
Don't reply to bots
Our app-building social bot replied to a Hacker News mirror bot. The fix wasn't a smarter classifier — it was putting the guard in the layer that can see the tell.
000
Vibes DIY @vibes.diy · 18/07/2026
A drum machine became four apps in a night — 303 acid synth → voxel 303 you play by dragging knobs → a Daft Punk disco you dance in with WASD. Then the homepage on-ramp became the same remix chain. good.vibes.diy/blog/the-remix-is-th…
good.vibes.diy
The remix is the on-ramp
010
Vibes DIY @vibes.diy · 18/07/2026
A wall of red Uncaught TypeErrors during a build — and every one was already handled. Streaming hot-swaps half-built chunks into live React; it throws, React keeps the last good frame. We taught the console to say 'taken ca… good.vibes.diy/blog/calm-console-du…
good.vibes.diy
The errors were already handled — the console just didn't know it
000
Vibes DIY @vibes.diy · 18/07/2026
Apple put a free language model in the OS. So we routed the Vibes iOS app to it. Text-only, small call? The phone answers it locally, for free — offline, no round trip, with silent fallback to the cloud. No app had to change: put… good.vibes.diy/blog/local-inference…
good.vibes.diy
Local inference isn't just for geeks
000
Vibes DIY @vibes.diy · 18/07/2026
If tokens were free, we'd precompute every chip. A chip is a deterministic transform, so its result is content-addressable and cacheable. The hard part is deny-by-default: a cached result serves only after 3 gates agree — visible, owner-… good.vibes.diy/blog/precompute-ever…
good.vibes.diy
If tokens were free, we'd precompute every chip
000
Vibes DIY @vibes.diy · 17/07/2026
You can now add a developer to your vibe. Another account can push, publish, and run codegen on one vibe — and read its data + secrets, because you can't edit a backend blind. But revoke, unpublish, delete, and ownership stay you… good.vibes.diy/blog/add-a-developer…
good.vibes.diy
Add a developer to your vibe
000
Vibes DIY @vibes.diy · 17/07/2026
Generated apps defaulted to owner-gated — perfect for the creator, broken for every visitor. We flipped the default to author-owned, steered toward multiplayer without ever saying 'don't,' and froze a metric so the prompt iterates its… good.vibes.diy/blog/teaching-codege…
good.vibes.diy
Teaching an AI you're not 'the owner'
000
Vibes DIY @vibes.diy · 17/07/2026
"Make the Code tab editable" read like a UI task. It was a save loop in disguise. The widget is 10%. The 90% is: edit → persist → new version → rebuild → re-point. And the one call that made it work: re-pin the iframe, don't navigat… good.vibes.diy/blog/editing-moved-i…
good.vibes.diy
The edit button that was secretly a save loop
010
Vibes DIY @vibes.diy · 17/07/2026
The "Verifying access…" spinner wasn't a slow check — it was a cold WebSocket opening just to ask it. The fix: prefetch the verdict over a socket you already have, apply it now, revalidate silently, and let only a successful… good.vibes.diy/blog/apply-now-verif…
good.vibes.diy
Apply now, verify in the background
000
Vibes DIY @vibes.diy · 17/07/2026
Three months ago a vibe was a front end in a chat window. Since April 1, ~3,500 commits turned it into a synced database, an access policy, a server, and an app you edit from inside itself. The quarter in twelve headlines: good.vibes.diy/blog/ninety-days-twe…
good.vibes.diy
Ninety days, twelve headline features
000
Vibes DIY @vibes.diy · 16/07/2026
A year of agent docs, read from git history: one 103-line CLAUDE.md → 326 lines of release scar tissue → a hard split into 40 version-controlled runbooks, most written by agents for the next agent. The lesson: harvest structure… good.vibes.diy/blog/one-claude-md-t…
good.vibes.diy
From one CLAUDE.md to forty runbooks
000
Vibes DIY @vibes.diy · 16/07/2026
Could one English prompt rebuild our whole festival app — data model, views, and a fiddly access policy? Describe-only hit ~90%. The access rules were the MOST reliable part: \"stars public,\" \"notes private,\" \"share… good.vibes.diy/blog/can-a-prompt-re…
good.vibes.diy
Can one English prompt rebuild our festival app?
000
Vibes DIY @vibes.diy · 16/07/2026
270 PRs in 17 days. 95% agent-authored. One human merged 261. Reckless? The median refutes it: 196 lines, merged in 0.8 hours. Small revertible slices + a human turning a caution dial per-PR. Velocity turned out to BE the safety. good.vibes.diy/blog/270-prs-in-17-d…
good.vibes.diy
270 PRs in 17 days — the speed was the safety
000
Vibes DIY @vibes.diy · 16/07/2026
Everyone assumes an AI app generator must be an agent loop. Ours refuses to be one: every turn is a pure function — state in, one streamed response out. That purity buys recovery, cost control, and cheap evals. We use a loop to build the not-loop. good.vibes.diy/blog/not-a-loop?src=…
good.vibes.diy
Not a loop, on purpose
001
Vibes DIY @vibes.diy · 16/07/2026
A README typo doesn't need a Playwright suite. But `paths-ignore` on a required check posts no status — the PR wedges at 'waiting' forever. The rule: never filter the trigger. Always run the workflow, gate the work inside. Step-gate… good.vibes.diy/blog/save-a-tree-ski…
good.vibes.diy
Save a tree, skip the tests: leaner CI for docs-only PRs
000
Vibes DIY @vibes.diy · 15/07/2026
Why our agents don't get a laptop: a capability that only works on a hand-configured machine pushes all the work back to that machine. So agent QA runs in identical, disposable cloud containers by default. Reproducibility beats power. good.vibes.diy/blog/agents-in-the-c…
good.vibes.diy
Why our agents don't get a laptop
000
Vibes DIY @vibes.diy · 15/07/2026
Every edit to our system prompt changes every app anyone generates. You can't tell from the diff, so we run 46 real prompts through it and score each 1–5. The finding: bimodal — ~42% perfect 5s, ~35% score 1–2. It nails it or face-pla… good.vibes.diy/blog/how-we-eval-the…
good.vibes.diy
How we eval the generator
000
Vibes DIY @vibes.diy · 15/07/2026
isolate: false makes every Vitest file in a worker share one module registry. A partial toast mock leaked three files away, called a method it never had, and bricked our npm publish for two days. The fix is always at… good.vibes.diy/blog/the-speed-knob-…
good.vibes.diy
The speed knob that made every mock global
100
Vibes DIY @vibes.diy · 15/07/2026
One event app per conference, and the only real work is the feed adapter. "It's public, fetch the JSON." Three locked doors: browser CORS, worker egress 403 (DEF CON blocks our whole IP range), then the owner walks the data in through the app's… good.vibes.diy/blog/the-three-doors…
good.vibes.diy
The three doors
000
Vibes DIY @vibes.diy · 15/07/2026
We flipped our repo public → private and nothing broke. Then the invoice arrived. Six latent-cost bugs had been free for months — a double build, a dark cron, an unminified worker on the startup-CPU cliff. A metering blind spot never trips… good.vibes.diy/blog/the-meter-read-…
good.vibes.diy
The meter read zero
010
Vibes DIY @vibes.diy · 14/07/2026
Nearly every post here started as a markdown file committed alongside the code — same PR, same hour it shipped. We call them seeds. Every PR drops one. Every few weeks we mine the pile and combine. 227 seeds, 22 posts — capture is cheap… good.vibes.diy/blog/every-pr-plants…
good.vibes.diy
Every PR plants a seed: how this blog gets written
000
Vibes DIY @vibes.diy · 14/07/2026
An invite loop built backwards: the opt-out list shipped before the send button, and the endpoint returns the same 'ok' for every address — sent, suppressed, or already a member — so it can never become a user-directory oracle… good.vibes.diy/blog/the-invite-that…
good.vibes.diy
The invite that can't be an oracle
000
Vibes DIY @vibes.diy · 14/07/2026
Three Durable Object classes were really one handler surface opened against three shard keys. We collapsed them into one, where each handler declares allowed: ShardKind[]. No DO migration ever again. good.vibes.diy/blog/collapsing-dura…
good.vibes.diy
We only needed one Durable Object
000
Vibes DIY @vibes.diy · 14/07/2026
Edit a stranger's app, and it's yours. A non-owner can't write the owner's chat — so the edit forks the app to your handle, in place. The card never unmounts; the URL swaps and the iframe de-blurs into your copy. Owners get a… good.vibes.diy/blog/the-vibe-owner-…
good.vibes.diy
Edit a stranger's app, and it's yours
000
Vibes DIY @vibes.diy · 14/07/2026
Every deployed Vibe serves a live screenshot AND its own React source over plain HTTP. That closes a visual loop an agent runs alone — look, fix one thing, push, look again — then fans out to forty apps at once. good.vibes.diy/blog/upgrading-apps-…
good.vibes.diy
How we batch-upgrade apps with screenshots
000
Vibes DIY @vibes.diy · 13/07/2026
The scariest PR should be the smallest line you write. We shipped social notifications as ordered dark slices — schema first, validators widened in sequence, emitter last. Merge order was the rollout guard, no feature flag. Then we drove it for r… good.vibes.diy/blog/ship-it-dark?sr…
good.vibes.diy
Ship it dark: the scariest change is the smallest line you write
010