"Vibe coding" earned a bad reputation fast. Type a prompt, accept the diff, ship it, hope it holds. That version is fine for a weekend project. It does not work for a client site that needs to load in under a second, pass an audit, and still make sense to whoever touches it next year.
At Numscii, AI writes a large share of our code. We also read every line before it reaches a customer. Here is what actually sits between those two facts, broken into the four things that separate vibe coding from just coding faster.
Skills
Most AI coding tools are good at whatever they were shown many times and unreliable at whatever they were shown once. A skill closes that gap. It is a short, written set of instructions for one recurring type of task: how we structure a case study page, which image sizes we ship, what a pull request needs before we will look at it. We write the skill once, after we already know the right answer, and the agent reads it every time that task comes up again.
The result is not creativity. It is consistency. The fortieth landing page section looks as considered as the first one, because the agent is reading the same accumulated judgment every time, not reinventing it from a blank prompt.
Agents
The useful version of AI coding is not autocomplete. It is an agent that reads a file, makes a change, runs the project, looks at what broke, and tries again, without us narrating every step. That loop is what actually saves time. A tool that needs permission before every keystroke is not faster than typing it yourself. An agent that runs the build, catches its own type error, and fixes it before showing us the result, saves real time.
We still set the boundary on what an agent can touch in a single pass. Small, reviewable changes on a branch. Nothing goes near a live client site without a human looking at the diff first.
Rules
Every project starts with one file the agent reads before it writes a single line. It covers naming conventions, which animation library is allowed and which of its properties we will not touch, and a handful of copy rules that never change (no em dashes in anything client-facing is one of ours, which is also why this post has none).
Without that file, an agent will happily invent a new naming convention on page four because it forgot the one from page one. With it, a project built over three weeks reads like it was built by one person in one sitting, because in the way that matters, it was.
Context
The rules file sets the constraints. Context is how much of the actual project an agent is holding in its head at once, and this is where most vibe coding goes wrong. Hand it an entire codebase in one prompt and its attention spreads thin across all of it. Hand it one phase, one page, one clearly scoped change, and it stays sharp.
We work in phases. One section of a site at a time, screenshots reviewed before the next phase starts, nothing merged to the main branch until the whole thing is approved. It is slower than asking for everything at once. It is also the only way we have found to keep an agent's output at the same quality on day twenty that it was on day one.
Where the thinking does not become optional
None of this replaces judgment, it just changes where the judgment gets spent. On our own last rebuild, an agent's fix for a scroll animation added an invalid ARIA role to every heading on the site. It passed every visual check. It also broke how AI crawlers parse the page, which is a little on the nose for a post about agents. Nobody catches that by watching the animation render. You catch it by knowing what a heading tag is supposed to say to a machine, and no amount of prompting finds a bug you did not know to look for.
That is the actual case for vibe coding done properly. The tools got faster. The thinking did not become optional. It moved from typing syntax to writing the rules, shaping the context, and reading the diff that comes back, which is a better use of a senior engineer's time than either extreme: typing everything by hand, or trusting everything an agent hands back.
If you are building the same way and something here does not match what you have found, we would like to hear about it.
