I’ve been spending a lot of time lately building software with LLMs in Cline, and I’ve found a flow that actually works — most of the time. It’s not perfect, but when you hit the right combo of model, structure, and prompt design, development is fast. Like pairing with a junior dev who has read all the docs but still needs a nudge here and there. Here’s what’s been working for me and where things still get weird.
Why Cline as opposed to Cursor or other tools? Simply because I can plug in any LLM in Cline, and I have a bunch of cloud credits, making it free to use.
1. Which LLM to Choose
I’ve tried most of them, and Google Gemini Pro 2.5 is the best for vibe coding — by a lot. The main reason? 1 million token context window. That’s the game changer. I’m excited to try Meta’s new models with 12M token context windows in the near future.
Here’s how I rank the current top models:

- Gemini Pro 2.5 Experimental – has better recall of large context making it the most suitable for bigger tasks.
- Gemini Flash 2.0 – fast, still has long context, is great for small tasks, and good but not as good as 2.5 pro for bigger tasks
- GPT-4o – feels solid but still struggles on longer tasks due to smaller context. Like this task that I recently did for a major feature would have been much harder with GPT-4o
The bigger context window in the Gemini models allows them to actually see more of the project, which matters when you’re trying to do multi-file changes or implement something new across frontend + backend.
2. Project Structure
Keep it simple. Separate your frontend and backend folders clearly. If everything’s in one place, the LLM has to scan and load more files into context, and that just slows it down. You’ll also get it to attempt more than it should just because it found things it wants to change.
What works better is a frontend/
folder with clean separation of components/pages, and a backend/
folder with organized endpoint files. Helps reduce noise and makes prompt completions more accurate.
3. File Size

This one tripped me up early on. I had a massive backend file with every endpoint, and the AI just couldn’t handle it. It would:
- Duplicate logic
- Miss where to insert code
- Occasionally just get into infinite loops
- Delete or hallucinate entire blocks
Splitting that file into smaller ones by feature (like auth.js
, users.js
, reports.js
, etc.) immediately made the LLM more usable. When the file size is small, the AI completes faster and makes fewer mistakes.
4. Task Size
This is probably the most important one: LLMs are really good at small, well-defined tasks. Ask them to do something too big in one go, and they’ll either give up halfway or do it wrong.
Instead, take big tasks and break them into steps. Here’s how I approached adding a modal with dynamic data:
- Create a button to open the modal
- Make the modal maximizable and restorable
- Fix the modal styles for mobile
- Build the backend endpoint to return the required data
- Add a frontend API call for that data
- Show the data in the modal
- Modify the UI to change how the data is displayed
Bonus tip: give the AI examples of similar frontend/backend code. If you have an existing pattern for API calls or endpoint naming, show it to the model. Makes it way better at following your conventions.
5. Treat It Like a Smart But Childlike Dev
Here’s the mindset shift that made the biggest difference: don’t treat the LLM like your assistant. Treat it like someone you’re mentoring.
It’s smart — shockingly smart — but also a little naive. If you expect it to do perfect work, you’ll get frustrated. But if you walk it through things like you’re mentoring a junior dev who is working on their first large project, but they learn fast, you’ll end up building way faster.
Final Thoughts
Vibe coding with Cline and Gemini 2.5 has seriously sped up my workflow, but only after figuring out how to guide the LLM properly. If you’re using AI to code and it’s not quite clicking yet, try smaller files, clearer structure, and step-by-step instructions.
Once you learn how to prompt and set up your repo the right way, LLMs stop feeling like a gimmick and start feeling like a real tool.
If you’re experimenting with vibe coding too, would love to hear what’s working for you.