## Definition **Vibe coding** is a programming style where software is created through natural-language conversation with an LLM, with the human acting as guide and tester rather than writer of code. The model generates all or most of the code; the user accepts, refines, or iterates in plain English. Andrej Karpathy coined the term in February 2025, describing it as "not really coding — I just see things, say things, run things, and copy-paste things, and it mostly works." ## How It Differs from Structured AI-Assisted Development In structured AI-assisted development (see [[Spec-Driven Development]], [[Plan Mode and Build Mode]]), the engineer understands every generated line and integrates it into a deliberate architecture. Vibe coding dispenses with that discipline: the user operates at the intent level and the AI operates at the code level with minimal human inspection of the produced artefacts. | Dimension | Vibe Coding | Structured AI-Assisted Dev | |---|---|---| | User role | Director / tester | Engineer with AI co-pilot | | Code review | Minimal / optional | Required | | Spec up front | Light ("I want Frogger in Python") | Formal (design doc, acceptance criteria) | | Target use-case | Prototypes, toys, learning | Production, enterprise, secure systems | ## Legitimate Use Cases Jeremy Morgan (*Coding with AI*, 2025) identifies three scenarios where vibe coding adds genuine value even for professional developers: 1. **Rapid prototyping** — get a proof-of-concept in front of stakeholders over a weekend rather than weeks; developers have the advantage of knowing what to ask. 2. **Unfamiliar technology exploration** — vibe code a Three.js prototype to evaluate the library before committing to it. 3. **Low-stakes tools** — internal one-off scripts, personal games, demos where reliability and auditability requirements are low. ## Tooling Cursor (a VS Code fork with deep LLM integration) is the dominant vibe-coding environment. Its agent mode can explore codebases, edit multiple files, and run terminal commands autonomously. Related tools include Windsurf, Lovable, and Bolt. All support both vibe-coding and structured workflows; the style is a user choice, not a product constraint. ## Prompt Quality Still Matters Despite the informal nature of vibe coding, the quality of the initial prompt determines how many correction iterations are needed. A detailed opening prompt (specifying language, framework, constraints, and expected behaviour) reduces cost and prompt count — important when tools charge per prompt. ## Security Caveat Because the user does not fully inspect generated code, vibe-coded artefacts carry a higher risk of undetected security vulnerabilities. Industry practitioners advise against vibe coding for production software, systems handling sensitive data, or any context where the developer is legally accountable for the code's behaviour. ## Context Management Agentic IDEs like Cursor allow selective context (individual files, docs, git history, linter errors). Including an entire large codebase as context introduces noise and accelerates [[Context Rot]], degrading suggestion quality. Selective, intentional context is more effective — the same principle as in any [[Agentic CLI]] session. ## Related - [[Agentic CLI]] - [[Plan Mode and Build Mode]] - [[Spec-Driven Development]] - [[Prompt Engineering]] - [[Context Rot]] - [[Context Window]] - [[Model Selection Strategy]] - [[Agentic Loop]] ## Sources - [[Coding with AI - Jeremy Morgan]]