Introduction
I have been a Cursor user for vibe coding for 3 months. I was very skeptical about using Claude Code and Gemini CLI at first, since I wasn’t comfortable with the idea of using a terminal as an AI agent. But in the last 1–2 months, I’ve been trying them both — and it completely changed my opinion.
In this blog, I’ll share my experiences of using them, my favorite pick between the two, and a comparison of the three broad categories of AI-assisted coding approaches that exist today.
The Three Approaches to AI-Assisted Coding
I see broadly 3 kinds of AI-assisted coding approaches:
- Chat interface with canvas → ChatGPT, Claude
- IDE integrated AI tools → Cursor, Windsurf, Replit, Lovable
- CLI-based AI agent tools → Claude Code, Gemini CLI, Warp
| 🧑💻 Category | 💬 Chat Interface | 🛠️ IDE Integrated Assist | ⚡ CLI-based AI Agent |
|---|---|---|---|
| Where it operates | Browser | Standalone IDE or browser (Cursor uses IDE, Lovable uses browser) | Terminal or IDE |
| Use case | Prototyping, small functions, quick answers, “throwaway weekend projects.” | Augmenting the core coding loop: writing, refactoring, debugging. | Automating workflows: multi-step tasks, system commands, project-wide changes. |
| Vibe coding style | Pure “vibe coding” (conversational prompting). | Hybrid of “vibe coding” + “developer assist.” | Agentic + autonomous (give AI a goal and let it execute). |
For a vibe coder like me, a CLI-based AI agent inside VS Code works perfectly — I get the best of both IDE and terminal with AI agent powers.
My Project: A 2-Way Translator App 🌍
To test these tools, I built a translation application.
When I visited Vietnam a few months back, I noticed cab drivers and restaurants using Google Translate effectively. But one problem stood out: only one device could be used for back-and-forth communication.
So, I decided to build a two-way translation application that solved this problem.
I drafted the following prompt (with ChatGPT’s help):
Global Translator App – MVP Requirements (Web Application)
- Build a web app that lets two users communicate in real time via text translation.
- Users connect via QR code or unique ID.
- Support both text and speech.
- Translate automatically for seamless conversation.
(Details moved to the appendix 👇)
Pre-requisites:
- Google Translate API with GCP
- Firebase backend
Claude Code vs Gemini CLI ⚡
| 🔎 Feature | 🤖 Claude Code | 🌐 Gemini CLI |
|---|---|---|
| 📍 Location of use | Standalone terminal or inside VS Code. In VS Code, Claude Code has IDE context — lets you select code and ask about it. | Standalone terminal only. In VS Code, Gemini CLI has no IDE context (though Google offers Gemini Code Assist for IDE, without terminal capability). |
| 💻 Terminal capability | Excellent — can view files, execute commands, analyze outputs. | Limited — shell commands can’t run in foreground, stateless (no persistent cd), no command completion. |
| ⚙️ AI agent capability | Strong coding performance; required multiple iterations but reliable. | Decent, though not as strong as Claude Code. |
| 🧪 Debugging & Testing | Superb. With terminal + MCP integration, I could run unit tests from both terminal and frontend. | Limited debugging/testing due to terminal restrictions and weaker MCP tool support. |
| 🔌 MCP integration | Very good. I integrated Playwright (UI automation) + Firebase. | Okay. Playwright struggled (e.g., no 2-browser instance support). Firebase worked fine. |
| 💸 Cost & model | $20/month plan (Sonnet). Didn’t use Opus ($200/month). Sometimes hit daily quota limits. | Free with generous limits (Gemini 2.5 Pro). |
Verdict so far: Claude Code > Gemini CLI for most features, especially debugging and testing.
But Gemini CLI’s pricing (free) and generous usage limits are a big plus.
If Google can merge Gemini CLI with Code Assist and improve Playwright integration, it will become a fantastic package. On the other hand, Claude Code really needs a more flexible pricing tier between $20 and $200.
Project Output
- Translation app built with Claude Code → [Demo link here]
- Translation app built with Gemini CLI → [Demo link here]
Flow of the app:
- User logs in with a username (no auth to keep simple).
- Picks language + connects with another user via QR code or username.
- Supports both text + voice translation in real time.
- Built as a PWA → works on web + mobile.
Debugging & Testing with Claude Code 🔍
This is where Claude Code really shines:
- Console errors are debugged + fixed automatically.
- AI agent generates unit test cases, executes them, finds failures, and fixes them.
- Even frontend integration testing works — thanks to MCP integration:
- It inspects browser console logs.
- Takes screenshots to analyze UI/UX issues (!).
I even asked Claude Code to:
- Make a 90-second demo video of the app.
- Simulate two users chatting with translations in the app. It worked beautifully.
Demo video created by Claude
Global Translation – User1
Global Translation – User2
Summary ✨
AI-assisted coding has matured tremendously in the last year and is now a top revenue driver among AI apps.
In my first blog on Vibe coding, I complained about limited debugging and testing with the AI coding tools. With these new coding agents, that problem feels largely solved.
Next, I’d love to see AI agents:
- Do better system design.
- Produce more modular code.
- Integrate smoothly with existing codebases.
Between Claude Code and Gemini CLI → Claude Code wins hands down 🏆.
But I’m confident Gemini CLI will close the gap soon.
Appendix
Detailed prompt given for the translation application:
Tech Stack
- Frontend Framework: React (or a similar modern JavaScript framework like Vue/Angular, but React aligns with future React Native plans)
- Backend: Firebase (Firestore/Realtime Database for real-time chat, Authentication, Cloud Functions for server-side logic if needed)
- Translation API: Google Cloud Translation API
- QR Code: Open-source JavaScript libraries for QR code generation and scanning (e.g., qrcode.react, html5-qrcode)
- Authentication: Anonymous sign-in (extendable to Gmail sign-in later)
- Chat History: Local browser storage (e.g., LocalStorage, IndexedDB – no cloud sync for MVP)
- Encryption: Not required for MVP
- UI/UX: Simple, intuitive, and modern chat interface inspired by leading web messaging apps (e.g., WhatsApp Web, Telegram Web)
- Dark Mode: Full support for dark mode from MVP
Core Features (MVP)
- User Onboarding
- Anonymous sign-in (no registration required for MVP)
- Generate a unique user ID and QR code for each user upon entering the app
- Users can choose and save a unique username, which is validated against a central Firestore database to prevent conflicts.
- Connection Mechanism
- QR Code Scanning: Allow users to scan another user’s QR code using their device’s webcam/camera (if available and permission granted).
- Manual ID Entry: Provide an option to manually enter another user’s unique ID to initiate a chat.
- Display your own QR code for others to scan.
- The application remembers the last 5 friends you’ve connected with, allowing for quick selection from a dropdown menu.
- Progressive Web App (PWA):
- The application is designed to be installable on mobile and desktop
devices, offering an app-like experience with potential offline capabilities.
- The layout is optimized to adapt and display correctly across various screen sizes, including iOS and Android mobile browsers.
- Chat Interface
- Real-time text chat between two users.
- Each user selects their preferred language from a dropdown/selector. This language is the language to be used by the friend on the other side.
- Messages are automatically translated to the recipient’s language using Google Translate API.
- Show both original and translated text in the chat bubble.
- Support for dark mode.
- Friend Online Status (Basic): It displays whether a friend is currently “Online” or “Offline” (with a “Last seen” timestamp). Note: The “offline” status is not automatically updated on browser close in the current setup.
- Session Management
- One-to-one chat sessions.
- Simple chat history stored locally in the browser.
- Language Support
- Initial support for: Hindi, Telugu, Tamil, Kannada, English, and French.
- Misc
- A version number is displayed on the screen, making it easy to identify the deployed application version.
Non-Functional Requirements
- Responsive and intuitive UI/UX, adapting well to different screen sizes (desktop, tablet, mobile browsers).
- Fast translation and message delivery.
- Minimal data usage.
- Accessibility support.
- Dark mode support.
- Cross-browser compatibility (Chrome, Firefox, Safari, Edge).
Future Extensions (Post-MVP)
- Native mobile applications (Android & iOS) using React Native.
- Gmail sign-in and user profiles.
- Speech-to-text and text-to-speech for voice communication.
- Discover nearby users (if feasible for the web, e.g., using WebRTC data channels or location APIs).
- Group chats.
- Persistent chat history with cloud sync.
- End-to-end encryption.
- Support for additional languages.