La verdad, siempre he desconfiado de lo gratuito. Soy de los que, a nivel subconsciente, piensa que para un resultado “profesional” tienes que invertir en herramientas de pago.
Esta es una ley no escrita por la que me he regido toda mi carrera profesional.
No solo eso, con el auge de la asistencia AI instintivamente he ido aún más allá, apostando por las opciones premium del momento, como Claude Code Max (como ya he documentado) entre otros.
Sin embargo, si te paras a pensar ¿qué es premium, en realidad?. ¿Es una necesidad real o eres tú que te auto-convences de que necesitas algo “mejor”?.
Pero, ¿mejor en qué?.
Lo creas o no, tras solo una semana usando Gemini CLI en mis proyectos personales, he empezado a replantearme todo y a hacerme este tipo de preguntas.
Gemini CLI no es mainstream, no tiene tantas opciones como los demás CLI’s y desde luego —por suerte— no hay tantos influencers usándolo. Pero es gratis, algo único y valioso que hace accesible a todos/as asistencia AI profesional.
Ah, ¿y sabes qué? para la gran mayoría de los casos —al menos en desarrollo Web, su rendimiento y potencial es más que suficiente.
Gemini y el Rendimiento Decreciente
Muchas veces tengo la sensación de estar usando más de lo que necesito. Estoy seguro de que no soy el único al que le pasa.
Por eso, antes de enseñarte lo imprescindible de Gemini CLI, permíteme dedicar unos minutos al principio económico y sociológico que explica qué es lo que está ocurriendo en realidad.
La Ley de los Rendimientos Decrecientes es un principio clásico de la economía formulado en el siglo XIX por David Ricardo. Sirve para explicar cómo, al aumentar uno de los factores de producción (por ejemplo, el trabajo) y mantener el resto constante (por ejemplo, la tierra), llega un punto en que el incremento de producción por cada nueva unidad añadida empieza a disminuir.
Dicho de otra forma: lo que al principio era progreso lineal, termina estancándose o incluso empeorando.
De ahí lo de retornos decrecientes.
¿Por qué importa esto?
Créeme, te importa. Y mucho.
La mayoría de nosotros —sobre todo en tech— caemos una y otra vez en la trampa de pensar que más inversión, más features o más potencia significan automáticamente mejores resultados.
Pero la realidad, y esto lo demuestra la ley, es que más no siempre es mejor. Hay un punto a partir del cual cada euro, cada upgrade o cada nueva herramienta aporta cada vez menos. E incluso puede ser contraproducente: te dispersa, te da más cosas que aprender, más opciones que gestionar, más ruido que filtrar.
Ahora sí, veamos de qué va esto de Gemini CLI.
Pero antes…
Si vienes de Claude Code
Tras revisar la documentación de Gemini CLI puedo decirte que si has usado un interfaz de línea de comando como asistente AI (Cursor, Codex, Claude o similares) te sentirás como en casa.
Salvo alguna opción (como prefijar comandos con! para lanzarlos al sistema) no encontrarás nada radicalmente nuevo en Gemini CLI.
Dicho esto, por experiencia sé que echarás de menos algunas de las características estrella de Claude Code que no vas a encontrar aquí, cómo.
No hay “plan mode”
Volvemos a la vieja técnica de decirle al modelo “NO crees nada todavía…”. La verdad es que tampoco es un problema mayúsculo si sabes cómo gestionarte.
Lo más parecido es un modo para aceptar ediciones directamente, que usa el mismo atajo de teclado que todas las herramientas usan hoy en día: shift + tab.

No existe el modo pensamiento “profundo”
De nuevo, por defecto tienes acceso al modelo Gemini Pro (puedes cambiarlo con el comando /model). Si te pasas de la cuota diaria (algo no tan sencillo) pasas automáticamente al modo Flash, que funciona sorprendentemente bien.
Una vez más, en mi experiencia, no es un problema real si lo tienes en cuenta desde el principio y actúas en consecuencia. Luego profundizamos en esto al tocar el workflow.
No conserva las conversaciones (por defecto)
Nada te hace pensar que al finalizar tu primera sesión con Gemini CLI, no tendrás forma directa de recuperar ese contexto y la conversación.
Cierto es que puedes y debes generar un documento GEMINI.md que puedes exportar e importar (copiar y pegar) tus conversaciones, pero seamos serios: no es la forma más ideal.
Una opción es habilitar checkpoints para crear snapshots de tu código y conversación y poder volver a ellos (exactamente igual que Claude Code).
Para hacerlo debes iniciar el comando /chat y elegir la opción que necesites para generar cada snapshot (de código y conversación) y poder recuperarla luego.
En mi experiencia, al ser manual, se vuelve tedioso muy rápido.
Primeros pasos con Gemini CLI
Esto es lo imprescindible que tienes que saber sobre Gemini CLI para usarlo profesionalmente en tus proyectos Web.
Instalación
Aunque personalmente lo uso a través de Homebrew (brew install/upgrade gemini-cli) la documentación aconseja que uses cualquier gestor de módulos Node y que instales de forma global @google/gemini-cli. Ojo, si usas diferentes versiones de Node (con NVM, por ejemplo) en tu día a día, tendrás que tomar precauciones especiales.
Una vez instalado, basta ejecutar gemini y autentificarse con tu cuenta de Google.
Configuración
Dispones de los ya conocidos tres niveles de configuración:
- Configuración de usuario en
~/.gemini/settings.json, tiene precedencia sobre la configuración por defecto. - Configuración de proyecto en
.gemini/settings.json, tiene precedencia sobre la configuración de usuario. - Configuración de sistema en
/etc/gemini-cli/settings.json (Linux),C:\ProgramData\gemini-cli\settings.json(Windows) or/Library/Application Support/GeminiCli/settings.json(macOS), tiene precedencia sobre todas las demás configuraciones.
Echa un vistazo a lo que puedes configurar —esto es como la paleta de comandos de VSCode: todas las opciones están aquí— aunque te sugiero que empieces por el comando /settings (la primera vez mostrará los valores por defecto en /etc/gemini-cli/system-defaults.json) para poder modificar todos los valores y elegir qué tipo de persistencia (de las tres que vimos arriba) prefieres.
En mi caso particular, solo he configurado un theme para asemejarlo a mi editor de código (también accesible desde /theme) y el modo Vim (con /vim), pero te recomiendo que profundices por tu cuenta.
Como ves, esta es mi configuración de usuario (macOS).
$cat ~/.gemini/settings.json
{
"security": {
"auth": {
"selectedType": "oauth-personal"
}
},
"general": {
"vimMode": true
},
"ui": {
"theme": "GitHub"
}
}
MCP
Una muy agradable sorpresa de Gemini CLI es su página de extensiones, que muestra las que tiene más tracción y permite filtrar por tipo y categoría.
De entre todas las que hay, estas son las que uso y te recomiendo al 100%, pero recuerda que hay cientos (incluso miles) más, así que es extremadamente importante que dediques un rato a buscar todo aquello que pueda asistir aún más tu workflow AI.
Recuerda que puedes comprobar todas las herramientas MCP que tienes configuradas con el comando mcp list (o /mcp list desde el CLI):

Integración con GitHub
Algo que no puede faltar en el arsenal de cualquier developer es la integración con Github. Por supuesto que como buen cliente MPC, Gemini CLI te permite acceder al servidor MPC de Github para automatizar tus PR’s, gestionar repositorios, analizar código y demás.
Las información general es suficiente, pero si profundizas un poco verás que hay un how-to específico para Gemini CLI.
Algo vital que debes hacer es añadir tu token (PAT) para autentificar cada request al servidor MCP de GitHub. Te recomiendo que lo hagas a nivel usuario, en ~/.gemini/.env:
GITHUB_MCP_PAT=your_token_here
Te recomiendo que le eches un vistazo, pero vaya, en circunstancias normales solo tienes que usar el flag extensions al llamar a Gemini CLI:
$ gemini extensions install https://github.com/github/github-mcp-server
A partir de ahí, solo tienes que seguir las instrucciones.
Context7
Otro servidor MCP que uso constantemente es Context7. En esencia te permite tener siempre la mejor y más actualizada documentación de todas las herramientas y tecnologías que utilizas en tus proyectos.
Como dicen en su página, es mejor que el modelo que uses tenga acceso a la documentación más reciente, en lugar de aquella que formaba parte del corpus con el que fue entrenado. O peor aún, documentación que el modelo alucine on-the-spot.
Aunque puedes editar los archivos json de config (como vimos al inicio), la forma más sencilla es usar gemini:
$ gemini extensions install https://github.com/upstash/context7
Laravel Boost
Este MCP no figura en la lista de extensiones, pero debería (me lo recomendó un compañero de trabajo, gracias Pedro ❤️). Esta herramienta nutre al modelo con el que trabajes con todo el contexto relevante y necesario para operar con Laravel. Documentación, acceso a logs, Artisan, consultas SQL y mucho más.
En serio, si usas Laravel, Laravel Boost es un “must”.
En su página no hay instrucciones exactas para configurar Laravel Boost con Gemini CLI, pero te las doy yo:
$ gemini mcp add laravel-boost php artisan boost:mcp
Workflow AI esencial
Ya he expuesto mi forma de trabajar con AI en varias charlas y artículos (el más reciente aquí) así que no voy a repetir todo de nuevo. Lo que sí voy a hacer es un resumen, teniendo en cuenta Gemini CLI.
Mi workflow va actualizándose conforte voy añadiendo horas de experiencia real desarrollando con AI, pero estas son las bases que nunca han cambiado. Son, de alguna forma, los pilares de mi workflow AI.
flowchart LR
Explore --> Plan
Plan --> Execute
Execute --> Preserve
Preserve --> Clean
Plan <---> Execute
Explorar
Este primer paso es esencial. En serio, todo lo demás depende de lo que hagas aquí.
Invierte el tiempo que haga falta hasta entender la base de código en la que tienes que operar (el proyecto que tienes que crear).
No sigas hasta que lo tengas claro —ni tú, ni el modelo.
¿Cómo asegurarte de que el modelo lo entiende?. Habla con él. Pregúntale a Gemini, pide que investigue la base de código con /init y adjunta docs, desafía y discute lo que no veas claro.

Gemini es multimodal, eso quiero decir que puedas adjuntar multimedia, pero ojo, debe estar dentro de los directorios de la sesión actual.

Solo cuando notes que el modelo y tú estáis alineados, sigue adelante. Si lo haces correctamente no deberías de volver nunca a esta primera fase.
El objetivo es crear un documento vivo (GEMINI.md) donde quede todo lo relevante. Si no, el contexto se diluye y lo esencial se acaba perdiendo tras unas cuentas iteraciones.
Planificar
Aunque soy consciente de que los modelos pueden crear planes y seguirlos, en mi experiencia, con el tiempo, todos tienden a la deriva (drifting).
Por eso, siempre intervenir directamente en la creación del plan, además de asegurarme de mantenerlo actualizado.
El proceso es muy simple: dos secciones, una llamada Spec y otra ToDo.
Mi tarea empieza creando las especificaciones de lo que quiero construir. No estoy hablando de user stories o algo muy elaborado, sino de describir aquello que quiero conseguir, aportando toda la información y contexto relevante.
Luego, lo valido con Gemini y para comprobar que entiende lo que hay que hacer y, de alguna forma, lo valida. Luego, le pido además que genere la lista de tareas, la cual yo superviso.
Como ves, es una manera práctica de asegurar un mutuo entendimiento.
Supongamos que lo que quiero es añadir una sección de “Workshop AI” en mi Web, estas serían las specs.

A partir de aquí se puede desatar una conversación (o no). La clave es, de nuevo, el estar sincronizados.
Ahora, llega el momento de pedir una lista tareas (plan.md) en base a las especificaciones.

De nuevo, si no estás de acuerdo es el momento de pulir y perfilar el plan.
Con cada ciclo de planificar → ejecutar → preservar → limpiar, actualizamos plan.md con el estado de las tareas y cualquier nuevo insight fruto del desarrollo.
También le pido expresamente que mantenga sincronizado el documento del proyecto (FGEMINI.md).
Ejecutar
Si has dedicado el tiempo necesario a entender —de verdad— y a crear una planificación realista, ahora solo tienes que comenzar con la primera tarea de ese plan.
En un mundo ideal cada tarea debería ser atómica, auto-contenida y fácilmente convertible en un commit con las mismas características.
Algo que me ayuda bastante es dar al modelo algunos bullet points generales que detallen cómo resolvería la tarea, aunque en nuestro ejemplo no lo veo necesario.

Algo obvio pero necesario recordar es que esto no es vibe-coding. Hablamos de desarrollo profesional de software, con lo que sí o sí tienes que revisar cada pieza de código que implementas.
Es un coñazo, lo sé, pero si tus tareas son contenidas se hace más llevadero al revisar menos código y tener más posibilidades de que el modelo acierte a la primera.
Aunque Gemini es bastante verbose a la hora de comunicar los avances, con ctrl + t puedes ver en tiempo real todas las subtareas que él mismo genera para sí.

Preservar
En mi opinión, la eficacia de este workflow reside en que limpiamos (reiniciamos) como último paso. Para poder hacerlo con garantías, de nuevo, es necesario que además de actualizar el CVS que uses, mantengas tu GEMINI.md actualizado.
El modelo, por sí solo, no lo hará la mayoría de las veces. Eres tú quien tras cada ejecución debe ser explícito. Algo así como:
Hey Gemini, por favor revisa el staging y, dame un mensaje de commit adecuado y considera si es necesario actualizar
plan.mdyGEMINI.mdde forma acorde.
Limpiar
Da igual el modelo que uses o lo que hayas leído: el contexto, con el tiempo, se degrada. Aunque tengas 200k tokens de entrada no tienes por qué usarlos todos.
Si documentas bien, no pierdes nada por limpiar, pero sin embargo tienes mucho que ganar.
Ojo, no hablo de compactar (/compress) para crear una versión resumida de la conversación (donde hay garantía de perdida de contexto y adherencia).
Me refiero a limpiar completamente la conversación con /clear.
Reiniciar. Empezar de cero.
Sé que da miedo, pero de nuevo, si tienes un plan y documento actualizado, no hay problema.
Resolución de problemas
Gemini CLI tiene una sección específica dedicada a los problemas más comunes.
En mi experiencia, solo me he encontrado con dos tipos. El primero fue que el modelo entraba en bucle y no era capaz de salir de él.

La solución: cierra con Ctrl + C y volver a intentarlo, aún perdiendo la conversación.
El segundo fue algo más problemático: localizar el origen del error usando el MCP de GitHub. Resulta que me faltaba mi personal access token (PAT). Fue más evidente cuando comencé la sesión con el flag —verbose.
Conclusión
Hay un momento en cualquier proceso —tecnología, formación, incluso en la vida personal— donde seguir invirtiendo más recursos ya no te da el salto que esperabas.
Puedes gastarte el doble y solo sacar un 5% más. La clave es saber identificar dónde está ese punto, y no dejarte llevar por la trampa del “más es mejor”.
Esto también se aplica a las herramientas con las que realizamos nuestro trabajo. Sobre todo las que usamos constantemente: aquellas que tienen el potencial de hacernos llegar más lejos, más rápido.
Como Gemini CLI.
No necesitas tenerlo todo. De hecho, casi siempre es contraproducente. Necesitas lo necesario —lo esencial— para poder centrarte en ello y sacarle todo el partido.
No olvides la ley de los rendimientos decrecientes: a partir de cierto nivel, el coste no garantiza más valor; muchas veces el 80% de los beneficios está en el 20% más accesible.
Así que, por favor, no cometas (como yo) el error de confundir visibilidad con valor.
Recuérdalo la próxima vez que menosprecies algo (o alguien) por ser menos “popular”.