Skip to main content

Vibe coding

Definition

Vibe coding is a style of software development where you work iteratively with AI assistance: you describe intent in natural language, get code or edits from an LLM or coding tool, then refine by feedback and context rather than writing every line from scratch. The “vibe” is the loose, exploratory flow—you steer by intent and feel, and the model fills in implementation details.

It contrasts with fully spec-first or plan-then-code approaches (e.g. spec-driven development): you often start with a rough idea and let prompt engineering, agents, and tools (e.g. Cursor, Claude Code) suggest and edit code. Useful for prototypes, scripting, and tasks where speed and iteration matter more than upfront design.

How it works

You give the model (or IDE tool) context: open files, cursor position, or a short prompt (“add a test for this”, “refactor to use async”). The model returns suggested code or diffs; you accept, edit, or reject and optionally add feedback (“use a different library”, “make it shorter”). The loop repeats until the result matches what you want. Tools often provide project-aware context (indexed codebase, RAG-style retrieval) so suggestions stay relevant. Success depends on clear intent, good tooling, and knowing when to take over or refine the output.

Use cases

Vibe coding fits when you want to move fast with AI assistance and are okay iterating in the loop rather than nailing the spec first.

  • Prototyping and scripting (e.g. one-off scripts, small tools)
  • Boilerplate, tests, and refactors where the intent is easy to state
  • Learning or exploring a codebase by asking the AI to implement or explain
  • Pairing with agents or autonomous agents that write and edit code from descriptions

Pros and cons

ProsCons
Fast iteration and less typingCan obscure understanding if you never read the code
Good for exploration and learningMay produce brittle or overfitted code without review
Low friction for small tasksHard to scale to large, consistent systems without specs
Works well with agents and IDEsDepends on model quality and context

External documentation

See also