My Recommendations for "Mostly" Vibe Coding
Here are my recommendations for what I call "mostly" Vibe Coding—a more structured approach to AI-assisted development that balances the creative flow of working with LLMs while maintaining engineering discipline.
Codify best practices
Keep a file (e.g., .cursor-rules
or CLAUDE.md
for Claude Code) that every LLM call references. This ensures consistency across your codebase and helps the AI understand your preferred patterns, naming conventions, and architectural decisions from the start.
Plan with a reasoning model
Have the LLM draft a step-by-step plan, ask clarifying questions, then save the result to PLAN.md
or README.md
. I use o3 for this currently. This upfront investment in planning prevents the AI from going down rabbit holes and gives you a clear roadmap to follow.
Execute with a coding model
Switch models to implement the plan, tackling one section at a time. I use claude-sonnet-4 for this currently. Different models excel at different tasks—use reasoning models for planning and coding-focused models for implementation.
Embed fresh docs in prompts
When adding a dependency or making an API call, paste the relevant documentation so the model uses current syntax and avoids hallucination. This is especially important for rapidly evolving frameworks and APIs where the model's training data might be outdated.
Vet every dependency
Confirm it's necessary, actively maintained, and on the latest stable version. AI models can sometimes suggest dependencies that are deprecated, poorly maintained, or overkill for your use case. A quick manual check can save you significant technical debt later.
Loop on errors
Feed stack traces back to the coding model; if it stalls, prompt for alternative angles or bring in a human "Developer Brain" for validation. Bringing in a MCP server for a browser can help with the error feedback loop. Don't let the AI spin its wheels—sometimes a fresh perspective or manual intervention is exactly what's needed.
Use stable, popular tech
Favor stacks well covered in model training (e.g., React + TypeScript, Vite or Next.js, shadcn/ui, Tailwind CSS v3). If your stack's new you'll need to inject docs and double check all the time it's using the right syntax and APIs. I'm avoiding the upgrade to Tailwind 4 for this reason.
What's Your Take?
These practices have helped me maintain both velocity and quality when working with AI coding assistants. The key is finding the right balance between leveraging AI capabilities and maintaining engineering discipline.
Do you have any tips for effective AI-assisted development? Do you consider this a form of "Vibe Coding"?
I'd love to hear about your experiences and techniques. The field is evolving rapidly, and there's still so much to learn about the most effective ways to collaborate with AI in software development.