# Vibe Coding (/academy/vibe-coding)



Vibe coding is calling plays from the sideline and never picking up the ball.

You describe the app. An [agent](/academy/agent) writes files. You run it, frown, describe again. You are steering on taste — does the button work, does the page load on a phone — not on whether you could have typed the TypeScript. The skill is not prompting. The skill is noticing when the vibe is lying.

**Pack the bag first**

It is fast when the [stack](/academy/stack) is already chosen and a recipe exists. Open the [builder](/builder) or let the plugin plan through [MCP](/academy/mcp). Stamp it with the [CLI](/academy/cli). *Then* vibe the feature. It is a maze when the agent also invents the kitchen — a second [ORM](/academy/orm), a dependency you did not ask for, a button that paints a poster and never hits an [API](/academy/api).

Keep [git](/academy/git) underneath. When the hour goes sideways, rewind. You still own the folder. "Done!" is a claim. Click around.

Small asks beat "build me a store." One working checkout button is something you can judge in ten seconds. [Evals](/academy/eval) and a [skill](/academy/skill) are how you stop a lucky demo from becoming a weekend fire.

Treat it like a fast intern: give it a menu, check the work, don't nap.

**What this unlocks**

The boring wall — env, config, the hour before one useful thing — can move onto the agent. You stay on the idea. That only works if you can tell good from bad when you see it, and if you have a rewind button for when you don't.

A vibe without a receipt is a weekend. A vibe with a stack and a commit is a demo.
