If you want the definition and where the term came from, the guide covers that. This piece is about the tools, and about the one thing that decides whether any of them work for you.
Because the tools are the easy part. What decides whether you end up with a working product or an unmaintainable pile is not which one you picked.
The tools, by what you are making
| Making | Reach for | Why |
|---|---|---|
| A web app from nothing | Prompt-to-app builders | They own the scaffolding, hosting and database, so there is nothing to set up before you see something. |
| A change to something that exists | An agent in your editor or terminal | Builders are weak here. Agents read the code around the change first. |
| A script or automation | A terminal agent | It can run the thing it just wrote, which is most of the work. |
| A document, deck or dataset | An agent that is not code-only | Much of what people vibe-code is not code, and a code-first tool will treat a spreadsheet as an afterthought. |
| Something with real users | Any of the above, plus tests | Whatever you were going to use, plus something that can verify the result. |
The cliff
Vibe coding works beautifully up to a point and then stops working rather suddenly. The point is not a number of lines. It is the moment you can no longer tell whether a change broke something.
Before that line, the model writes, you glance, it works, you move on. After it, every change breaks something you did not look at, and because you did not read the code you have no map of what depends on what. Progress does not slow down - it reverses.
What is the fix, if you still do not want to read the code?
Tests. Not because tests are virtuous, but because a test is the only way to keep a verification signal when you have given up reading. It replaces "I understand this code" with "the machine can tell me if I broke it", which is exactly the thing vibe coding removed.
The right time to start is before the cliff, and the tests do not have to be yours - "write tests for what this currently does" is a good instruction, and it works better than it sounds because the behaviour is already there to be described.
What good vibe coding actually looks like
- Describe the outcome, not the implementation. "Users can reset their password by email" beats "add a POST endpoint that...". You are buying judgement; do not spend it specifying.
- Keep the loop closed. Something must be able to say "this works" - a test, a build, a page you can open. Without it you are not vibe coding, you are hoping, and this is the failure it produces.
- Commit constantly. Your undo is git, not memory. This costs nothing and saves entire afternoons.
- Read the interfaces, skip the bodies. Knowing what talks to what is enough of a map. You do not need to read every function to stay oriented.
- Stop and reset when it drifts. When the agent starts fixing its own last fix, the context is poisoned. Start a new thread and describe the current state fresh. If you are new to all of this, the loop is worth understanding first.
Did that land?
Three questions.
What marks the point where vibe coding stops working?
It is a verification limit, not a size limit. Plenty of large projects stay vibe-codable because they are well covered by tests; plenty of small ones hit the cliff early because nothing can check them.
Why do tests matter more in vibe coding than in ordinary coding?
Reading code is how a developer normally knows whether a change is safe. If you have skipped that, a test is the only remaining source of that signal.
The agent starts fixing bugs introduced by its own previous fix. What is the right move?
The conversation now contains wrong assumptions that every subsequent step reasons from. A fresh thread drops them; a bigger model just reasons more capably from the same bad premises.
Sources
- Andrej Karpathy, post coining "vibe coding", 2 February 2025.
- Merriam-Webster added "vibe coding" to its slang and trending words, 2025.
An agent that runs your checks
W1 runs the tests and reports what passed - which is the signal vibe coding needs most. Free during beta.
Download free beta