The real build loop — and knowing exactly when to take the wheel from the AI.
Module 5 · Turn milestones into working features, one slice at a time.
Intermediate Building Includes Lab ~55 minPrerequisites: Module 4 — snippet-vault with M1 (create + list) merged to main.
Vibe coding isn't one big prompt — it's a tight loop you spin many times an hour. Each turn adds one small, reviewed, committed piece:
The loop is your rhythm for the rest of the build. Every milestone in SPEC.md becomes a handful of these turns. Because you commit each good state, a bad turn is always one git restore away from gone.
People think review and commits slow you down. The opposite: small reviewed steps mean you almost never debug a mystery, because the thing that broke is in the last tiny diff. Speed comes from not getting stuck.
The single biggest skill in vibe coding is cutting work small. "Build the whole app" gives you a pile you can't review. "Add a search box that filters the list by title" gives you a diff you can read in a minute.
| Too big | Right-sized slice |
|---|---|
| "Build the snippet vault." | "Add the create-snippet form and POST it to the API." |
| "Add search and filters and sorting and tags." | "Add a search box that filters the list by title." |
| "Make it look nice." | "Style the snippet list as cards with spacing." |
You already sliced the work in Module 3. Build one milestone (or one story within it) per branch, in order. When a story's acceptance criteria all pass, it's done — move to the next.
The assistant is a fast driver on the highway and a liability in a tight parking spot. A pro knows when to stop delegating and edit the code themselves. Watch for these signals:
| Signal | What to do |
|---|---|
| It failed the same fix twice | Stop looping. Read the code yourself and fix or pinpoint the exact line. |
| Security- or money-sensitive logic | Auth, payments, permissions — write or verify these by hand. |
| Subtle logic it keeps getting slightly wrong | Hand-write the tricky core, let the AI do the boilerplate around it. |
| You don't understand its output | Don't ship what you can't maintain. Simplify it yourself or ask it to explain. |
| The diff is ballooning | Take over, shrink the scope, and resume the loop smaller. |
Taking the wheel isn't failure — it's the whole skill. The best vibe coders fluidly hand small, well-defined pieces to the AI and grab the wheel the instant it starts to wander. The car is yours.
When something breaks, the assistant is great — if you brief it like a good bug report instead of "it's broken, fix it."
Make sure you can trigger the bug reliably first. A fix you can't verify against a reproduction is just a guess — and the AI will happily generate confident guesses.
When the assistant loops or keeps missing it, don't just re-prompt harder. Change the situation:
| Move | When |
|---|---|
| Reset the context | It's contradicting itself — start the task fresh (Module 2's context rot). |
| Shrink the ask | Break the slice into an even smaller one. |
| Give an example | Show the exact input/output or a similar file to mirror. |
| Hand-write the core | Do the tricky 5 lines yourself, then let the AI continue around them. |
You'll take the snippet vault from "create + list" to a real working app — adding search and delete via the build loop, taking the wheel at least once, and wiring the UI to the API end to end.
Your snippet-vault repo from Module 4 (M1 merged), your assistant, and both apps running (api/ and web/).
Prompt one slice, review the diff, run it, commit — against M2's acceptance criteria from SPEC.md:
Verify each acceptance criterion by hand: live filtering, case-insensitive, friendly empty state. Commit when green.
Find one spot where the AI's output isn't quite right (an edge case, a name, a clumsy bit) and fix it yourself by hand instead of re-prompting. Note what and why. Then merge M2:
Loop again: DELETE /snippets/:id in the API and a delete button (with a confirm) in the UI. Review, run, verify, commit, then merge to main.
With both apps running, in the browser: create a snippet, see it listed, search for it, and delete it. That's a real working app — M1 through M3, live on localhost.
In REFLECTION.md: where did you take the wheel, and why? Which acceptance criteria did you verify by hand? Commit it.
Your snippet-vault repo with a working app. Self-check before submitting:
mainREFLECTION.md notes where you took the wheel and what you verified| Term | Plain meaning |
|---|---|
| Build loop | Prompt → review → run → commit, repeated in small turns. |
| Slice | One small, self-contained piece of work you can build and verify at once. |
| Take the wheel | Stop delegating and edit the code by hand when the AI is the wrong tool. |
| Root cause | The underlying reason for a bug, not just the symptom. |
| Reproduce | Reliably trigger a bug so you can confirm a fix actually works. |
| End to end | The whole path works together — here, UI → API → back. |
The build loop as second nature, the judgment to take the wheel when needed, a debugging method that finds root causes — and a snippet vault that actually works end to end: create, list, search, and delete, all merged to a working main.
Next up: Module 6 — Testing AI-Generated Code. Your app works when you click through it by hand — but how do you know it still works after the next AI change? We add automated tests, the first real safety net for "works once."