What is vibe coding?
Vibe coding is the art of building with momentum: clear intent, short feedback loops, and just enough creative spark to stay engaged. It is not reckless. It is rhythm.
With tools like ChatGPT Codex or Claude Code, we can write software by describing it. Instead of typing code directly, we orchestrate behavior and structure through natural language: features, constraints, edge cases, and intent.
This does not mean you can type build me Facebook and go make a coffee. Vibe coding works best as an iterative process—small steps, frequent feedback, and deliberate decisions about what to add next.
Think less “one big prompt” and more “a conversation with a very fast junior developer who never gets tired.”
Things to consider before you start
Who is your audience?
- Are you building a public-facing website with mostly static or read-only content?
- Is this an internal tool for a team or company?
- A mobile app for end users?
Clarity here shapes everything that follows.
How does your audience interact with the application?
- Is the content read-only?
- If so, how will it be updated, and by whom?
- Do users need accounts?
- Authentication
- Admin functionality
- Roles and permissions
The interaction model determines both complexity and risk.
Do you need to persist data?
- What data needs to be stored?
- Where will it live?
- Who can access it?
- How will it be queried, updated, or deleted?
Even “simple” apps tend to grow opinions about data surprisingly fast.
Do you need third-party services?
- External APIs
- Payment providers
- Auth services
- Content sources
Each dependency is leverage and liability—vibe responsibly.
What programming languages or frameworks do you want to use?
- Which languages are you already comfortable with?
- Are you optimizing for speed, learning, or long-term maintenance?
The bot can work in almost anything—but you still have to live with it.
How will you deploy the application?
- Cloud-hosted web app
- Installable desktop application
- Mobile app (native or hybrid)
Deployment constraints often surface late and hurt feelings when ignored early.
All of these choices—plus a few you haven’t thought of yet will guide the prompts you write and the technologies you ask the bot to use.
Good vibe coding isn’t about skipping thinking.
It’s about thinking just enough, then shipping.
Rules of the road
Vibe coding works best when you give the model rails, not micromanagement.
Your job is to define boundaries, structure, and taste—then let Codex fill in the gaps.
A simple but powerful move: add a top-level AGENTS.md file to the repo and treat it as non-negotiable. Reference it explicitly in prompts.
“Follow the rules in
AGENTS.md. If something is unclear, ask before guessing.”
This alone dramatically improves consistency.
Define the shape of the codebase
Spell out how the project is organized so Codex doesn’t collapse everything into a single, cursed mega-file.
Examples:
- Where UI components live
- Where business logic lives
- Where shared utilities live
- Where tests live
Be explicit about separation of concerns:
- UI should not talk directly to the database
- API routes should be thin
- Business logic should be framework-agnostic where possible
Codex is obedient. If you don’t define structure, it will invent one. Poorly.
Establish coding conventions early
Write down the boring rules once so you don’t have to repeat them forever:
- File naming conventions
- Function size limits
- Preferred patterns (e.g. composition over inheritance)
- Error handling style
- Async patterns
- Formatting expectations
This prevents subtle drift where every file feels like it was written by a different developer… because it was.
Be explicit about what not to do
Negative constraints are incredibly effective.
Examples:
- Do not introduce new dependencies without asking
- Do not refactor unrelated files
- Do not change public APIs unless instructed
- Do not inline complex logic into components
- Do not invent features that weren’t requested
Codex defaults to being “helpful.”