Responsible Vibe Coding Guide
by Kuba, 2025/05/22
Vibe coding—spinning code from loose ideas with AI—gets hyped up a lot. It also gets mocked, and honestly, it deserves it sometimes. When it works, it’s a superpower. When it flops, it’s a disaster. Three weeks ago, I took my time to figure out how to do it right, and it’s been a massive unlock. I couldn’t find a short, clear guide on this (surely they’re out there, but I missed ‘em), so I wrote one.
This post is about running a single vibe coding session that’s productive and doesn’t harm your project. I’ll do another one later on building a full app from scratch with LLMs. My approach borrows heavily from Kevin Leneway—watch his interview here for the real deal. I’m using Cursor because it’s my go-to, but this stuff applies to other tools too.
Cursor Rules: Your Safety Net
Cursor rules are a must. They’re how you make the LLM behave like a pro instead of a loose cannon. Without them, good luck.
Make ‘em yours. Tweak them to fit your style and project. No one-size-fits-all here.
Steal ideas. Check this repo for solid rulesets: github.com/PatrickJS/awesome-cursorrules.
How to add one: Hit Ctrl/Cmd+Shift+P → “New Cursor Rule” → name it → write it → set it to “Always.”

Here’s what I run with:
- Prioritize clear, straightforward code. No clever nonsense.
- Only touch code tied to the task. Leave the rest alone—no random cleanup.
- Add concise docstrings or JSDoc for anything new.
- Write test descriptions that make sense.
- Keep functions and components focused and reusable.
- Stick to RESTful principles for APIs.
- Push complex logic to service functions or modules.
There’s more for Python or TypeScript, but I’ll save that for a rules deep-dive post.
First Prompt: Nail the Setup
The first prompt is everything. Get this wrong, and you’re in trouble. Mine’s long and loaded:
Spell out the goal—say, “Your goal is to implement feature X”—with exact details on how it should work.
Tell it to study the codebase and plan its approach.
Attach every relevant file, function, and doc. Context is king.
Say: “Ask questions, browse the code, search the web—figure it out first.”
Add: “Do not write any code yet. Just explain your plan in detail.”
Flip on thinking mode. IMHO,
gemini-2.5-pro
does the best job recently.
This isn’t a suggestion—it’s a briefing. Get the AI to think before it acts.

Next Steps: Guide, Don’t Guess
Once it spits out a plan, check it. If it’s off—like reinventing an API that’s already there—point it to the right spot. When it’s solid, say, “Go. Step by step.”
It might overachieve and dump backend, API, and frontend in one shot. If it works, awesome. If not, rewind to steps.
Commit every chance you get.
If it’s still broken after 2-3 tries, roll back to a checkpoint and restart.
Bonus: Keep It Together with Markdown
Here’s my trick: start every session with an empty markdown file. In that first prompt, tell the AI to write its plan there. After a few steps—or at the end—have it update the doc with what’s done or changed.
Why? It tracks progress, keeps the LLM grounded, and if the context window chokes, you can jump to a new session and catch up fast.
Wrap-Up
Vibe coding isn’t some mystical art—it’s a tool. Get it wrong, and your project suffers. Do it right, and it’s a productivity cheat code. The secret? Rules, a killer first prompt, tight feedback, and a system to stay organized.
Next time, I’ll show you how to vibe-code an app from zero to done. For now, this’ll keep your sessions sharp and your codebase intact.
Last updated