Back to blog
Sep 01, 2026
8 min read

Vibe coding is a skill stack, not a shortcut

Describing an app to an AI and getting working code feels like magic. The people it actually works for are quietly doing four things the demos never show.

Vibe coding has a reputation problem in both directions. Half the internet says you can ship an app by typing wishes into a chat box. The other half says everything built that way is a security breach waiting to happen. After spending months building things this way, I think both halves are describing the same missing ingredient: a small stack of skills that nobody puts in the demo videos.

Here is a number that made me sit up. Researchers ran 2.23 million code samples through 16 different AI models and found that 19.7 percent of them referenced at least one software package that does not exist. The AI made the name up. That is not a reason to stop vibe coding. It is a reason to know what your job is when the AI is doing the typing.

What vibe coding actually is

Vibe coding means describing what you want in plain language and letting an AI write the first draft of the code. You then steer: test it, react to it, ask for changes, repeat. The word “first draft” is doing a lot of work in that sentence, and it is the part that gets skipped.

The workflow that holds up is not “describe, generate, done.” It is a loop with four distinct phases, and each phase is a skill you can practice.

flowchart LR
  P[Plan] --> S[Steer]
  S --> E[Evaluate]
  E --> H[Ship]
  E -->|something is off| P
  H -->|next feature| P

Fig 1The vibe coding loop. The AI only really helps in the Steer phase. The other three are yours, and they are where projects live or die.

Phase 1: Plan before you prompt

Every guide I read while researching this converges on the same first step, and it has nothing to do with AI: know what you are building before you ask for it.

That does not mean a formal spec. It means a few lines of plain text, sometimes called a PRD (product requirements document, a fancy name for “what this is and who it is for”). What the app does, who uses it, and what the main screens are. Sketching how the screens connect, even on paper, counts.

TIP

A five line plan is enough: what it is, who it is for, the three main things a user can do, what data it stores, and what “done” looks like for version one. If you cannot fill those in, the AI cannot either. It will just fill them in with guesses.

Deciding your data early matters more than it looks. An AI asked to “add user accounts” to a project with no data model will invent one, and every prompt after that builds on the invention.

Phase 2: Steer, do not gamble

The second skill is how you actually talk to the model, and the pattern is consistent across every source I found: small steps beat big wishes.

Asking for one change at a time does two things. It keeps each result small enough to check, and it keeps the AI anchored to what already exists instead of inventing a new pattern each round. Pointing it at the relevant files and at examples of code you already like is part of the same skill. People call this context engineering now, but it is really just briefing someone properly before they start.

The other half of steering is not a prompt skill at all. It is git.

IMPORTANT

Commit every working state before you ask the AI to change anything. This is the single habit that separates experimenting from gambling. With a checkpoint, a bad generation costs one undo. Without one, it can cost the working version of your app.

If git (the standard tool for saving snapshots of your code) is new to you, learn just two moves first: save a checkpoint, and go back to one. That covers most of what a solo vibe coder needs on a normal day.

Phase 3: Evaluate everything

This is the phase that number from the intro belongs to. One in five AI code samples mentioning a package that does not exist means “the AI said so” is not evidence of anything. Attackers know this too: some register fake packages under exactly the names models tend to hallucinate, hoping someone installs them without looking. The trick has a name, slopsquatting.

So evaluation is its own skill, made of small checks:

  • Run the feature right after it is generated, and click around the features next to it, because changes leak.
  • Before installing anything the AI suggested, spend thirty seconds confirming the package exists and is actually used by other people.
  • Read the code. Not to grade its elegance, but to notice when something looks off.

That last point is where fundamentals earn their keep. You do not need to write code from scratch to vibe code, but you do need to read it at the level of “what data goes in, what comes out, and where does it get stored.” Reading is a much smaller skill than writing, and it is the difference between steering and hoping.

Phase 4: Ship like it matters

The last phase is everything between “it works on my machine” and something real people use, and it is where AI helps least.

A prototype that looks finished is not finished. Polish is the thing AI is best at producing, which makes it a misleading signal. Before anything goes public there is a short unglamorous list: check what is exposed, check what happens with bad input, check that secrets like API keys live in configuration and not in the code itself.

WARNING

Security in AI generated projects is a big enough topic that it gets its own post. The short version: the most common leak is not a clever hack, it is a key pasted where it does not belong, by a person moving fast.

Shipping also means writing down what you decided and why, even just for yourself. A prompt log reads like a diary of the project’s decisions, and future you, or the AI in your next session, will be briefed by it.

An honest self-check

Eight questions to locate yourself on the stack
  1. Before your last project, did you write down what it was before prompting?
  2. Could you sketch how its screens connect from memory?
  3. Do you commit before asking for changes, or only when things feel done?
  4. When did you last verify a package the AI suggested actually exists?
  5. Can you follow what a generated function does with its input?
  6. Do you test neighboring features after a change, or only the new one?
  7. Do you know where your API keys are right now?
  8. Could someone else, or a fresh AI session, pick up your project from your notes?

There is no passing score. Each “no” is just the next cheapest thing to learn.

What I would remember

Vibe coding is real and it is genuinely fast, but the speed comes from the middle of the loop. The AI writes the draft. Planning what to build, checking what came back, and carrying it to something shippable stay human jobs, and they are learnable, unglamorous, and smaller than they sound.

The AI types. You are still the engineer.

Sources

Read next