1. Introducción

¡Hola! ¡Me llamo Sparky! Me alegra que hayas podido venir. Viajé en cremallera desde un clúster de GKE en us-central1 para estar aquí hoy. Te damos la bienvenida a este codelab.
Pasé toda mi vida correteando por los flujos de datos de Google Cloud, y lo vi todo. Los vi a ustedes, los arquitectos y los ingenieros, crear cosas increíbles. Pero también te he visto quedar atrapado en las zarzas. ¡Sabes de lo que hablo! Esa sensación de cambio de contexto cuando depuras un Pod en GKE Estás alternando entre kubectl logs, la consola de GCP para verificar el estado del nodo, tu IDE para consultar el código fuente que se implementó y una pestaña del navegador con la documentación oficial de Kubernetes para los hooks del ciclo de vida del pod. Cada salto es una interrupción del enfoque.
Y las herramientas complejas. gcloud, kubectl, terraform… cada uno con su propio DSL y una gran cantidad de marcas. Esto lleva a una constante búsqueda de documentación. Terminas buscando ese comando gcloud perfecto con la combinación correcta de marcas --filter y --format para obtener los datos que necesitas. Es como intentar encontrar una tuerca específica en un bosque de millones. Y ni hablar de las tareas repetitivas. Te vi escribir el mismo Dockerfile y cloudbuild.yaml para un nuevo servicio de Python tantas veces que el código probablemente tenga déjà vu.
Bueno, estoy aquí para mostrarte una mejor manera. Un sendero secreto a través del bosque. ¡De eso se trata Gemini CLI!
¿Qué es Gemini CLI?
Entonces, ¿cuál es este atajo mágico que me entusiasma tanto?
Piensa en Gemini CLI como tu compañero personal en la nube, directamente en tu terminal. Es una conversación, una asociación. Es contextual, que es una forma elegante de decir que no solo escucha, sino que comprende. Puede leer tus archivos, aprender las convenciones de tu proyecto (por ejemplo, si usas tabulaciones o espacios) y descubrir lo que intentas hacer. Es como si pudiera oler las bellotas que intentas recolectar.
Arquitectura de alto nivel (¡echemos un vistazo!)
Entonces, ¿cómo funciona todo esto? Es una combinación de algunas funciones geniales que trabajan en armonía:
- Un potente modelo de lenguaje: Este es el cerebro. Específicamente, es un modelo multimodal grande entrenado por Google. "Multimodal" significa que no solo comprende texto, sino también la estructura y el significado del código. Esto le permite razonar sobre tu software, no solo leerlo.
- Tu contexto local: Esto es fundamental. La CLI de Gemini se ejecuta como un proceso en tu máquina local, con los mismos permisos que tu cuenta de usuario. Esto significa que puede acceder a tu sistema de archivos para brindarte ayuda específica del proyecto. No es un servicio en la nube lejano que adivina tu código, sino que está aquí contigo.
- Un ecosistema de herramientas: Es la forma en que el modelo interactúa con el mundo. Tiene un conjunto bien definido de funciones a las que puede llamar, como
read_fileorun_shell_command. Piensa en ella como una API segura. El modelo decide qué hacer y qué herramienta usar, y, luego, genera un bloquetool_codepara ejecutarlo. Esto hace que sus acciones sean predecibles y confiables. - Ejecución de comandos de Shell: ¡Esta es la verdadera magia! Puede ejecutar cualquier comando en una subshell de
bash -c <command>. Captura elstdout, elstderry elexit code. ¡Esto es increíble! Esto significa que Gemini CLI puede ejecutar un comando, verificar si falló y, luego, intentar corregirlo según el mensaje de error. - La red de seguridad: Esta es mi parte favorita. Antes de que se ejecute ese bloque
tool_code, el cliente de la CLI te mostrará el comando o código exact y te pedirá que lo confirmes. Es una verificación del cliente, por lo que tienes la última palabra antes de que algo afecte tu sistema. Siempre tienes el control.
No es solo un chatbot, ¡es un asistente! Un asistente activo en tu aventura de programación.
El concepto clave: Declarativo vs. Imperativo
El cambio más grande y sorprendente es que pasamos de decirle a la computadora cómo hacer algo a decirle qué quieres.
- Imperativo (el camino viejo y espinoso): Debes indicar cada paso. Debes ser experto en el lenguaje específico del dominio de la herramienta. Como este monstruo de comando:
¡Uy! ¡Mira todo eso! Debes conocer la sintaxis del tipo de máquina, la familia de imágenes, los metadatos y las etiquetas. Si olvidas una parte, recibirás un error críptico.gcloud compute instances create my-vm --project=my-project --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --metadata-from-file startup-script=./startup.sh --tags=http-server,dev - Declarativa (¡el atajo de Sparky!): Solo tienes que decir lo que quieres en inglés sencillo.
Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.
Eso es todo. Gemini analiza tu solicitud, la asigna a los parámetros de la herramienta gcloud, determina la sintaxis correcta para cada marca y crea ese gran comando aterrador por ti. Luego, te la presenta para que la apruebes. Se trata de permitirte pensar en el panorama general, no de memorizar marcas de línea de comandos.
Extiende el poder de Gemini: Introducción a las extensiones de la CLI
Si bien la Gemini CLI es una herramienta potente lista para usar, su verdadero potencial se desbloquea a través de las extensiones. Las extensiones son paquetes de instrucciones, herramientas y comandos personalizados que mejoran la funcionalidad de la CLI y te permiten adaptarla a tus necesidades y flujos de trabajo específicos.
Cómo buscar e instalar extensiones
La CLI de Gemini tiene un ecosistema en crecimiento de extensiones creadas por Google y desarrolladores externos. Puedes explorar el directorio oficial de extensiones en geminicli.com/extensions.
Para instalar una extensión, puedes usar el comando gemini extensions install con la URL del repositorio de Git de la extensión. Por ejemplo, para instalar la extensión oficial de Cloud SQL para PostgreSQL, ejecutarías el siguiente comando:
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Bien, basta de charla. ¡Vamos a ensuciarnos las patas y probar esta cosa!
2. Antes de comenzar

¡Hola, futuros magos de la nube! Sparky, a tu servicio. Antes de comenzar nuestra gran aventura, debemos asegurarnos de que tu entorno de taller esté listo. Piensa en ello como preparar nuestras mochilas con todas las herramientas adecuadas y bellotas mágicas antes de adentrarnos en el bosque. ¡Sígueme!
Si ya tienes un proyecto de Google Cloud, puedes usar la CLI de Gemini en Google Cloud Shell, ya que viene preinstalada. También puedes seguir estos pasos para configurarlo en tu máquina local.
Paso 1: Lo básico (requisitos previos)
Todo buen aventurero necesita una base sólida. Antes de instalar Gemini CLI, debes tener algunas cosas configuradas en tu máquina local.
- SDK de Google Cloud (
gcloud): Este es el kit de herramientas principal de Google Cloud. La CLI de Gemini forma parte de esta familia.
- Verifica si está instalado: Ejecuta
gcloud --version. Si ves un número de versión, todo está listo. - Si no está instalado: Sigue las instrucciones oficiales en cloud.google.com/sdk/docs/install.
- Git: Lo necesitaremos para clonar el repositorio del lab práctico.
- Verifica si está instalado: Ejecuta
git --version. - Si no está instalado: Puedes obtenerlo en git-scm.com/downloads.
- Proyecto de GCP y autenticación:
- Asegúrate de tener un proyecto de Google Cloud con la facturación habilitada. Esto es muy importante.
- Accede a tu Cuenta de Google ejecutando el siguiente comando:
gcloud auth login
- Configura tu proyecto para la sesión. Busca el ID de tu proyecto en GCP Console y ejecuta el siguiente comando:
gcloud config set project YOUR_PROJECT_ID
(Reemplaza YOUR_PROJECT_ID por el ID de tu proyecto).
- Node.js versión 20 o posterior
Paso 2: ¡Haz magia! (Instalación de Gemini CLI)
Bien, ahora que ya vimos lo básico, es hora de ver el evento principal. Instalaremos Gemini CLI.
Ejecuta al instante con npx
# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli
Instala de forma global con npm
npm install -g @google/gemini-cli
Instalación global con Homebrew (macOS/Linux)
brew install gemini-cli
Cómo verificar la versión de Gemini
gemini --version
Deberías ver un número de versión. Esto confirma que la instalación se realizó correctamente.
Paso 3: Carga (configuración)
Ahora que Gemini CLI está instalado, debemos darle las llaves del reino. Primero, ejecuta el comando gemini en la terminal para iniciarla. Deberías ver la siguiente pantalla:

Para mayor simplicidad, puedes autenticarte con tu Cuenta de Google, lo que te brinda acceso a Gemini 2.5 Pro con una ventana de contexto de 1 millón de tokens y hasta 60 solicitudes por minuto y 1,000 solicitudes por día sin necesidad de administrar una clave de API.
Si quieres acceder a modelos específicos de Gemini o actualizar a límites más altos cuando sea necesario, usa la clave de API de Gemini como método de autenticación.
Para los equipos empresariales y las cargas de trabajo de producción que ya tienen configurados un proyecto de Google y una cuenta de facturación, usa Vertex AI para obtener seguridad y cumplimiento avanzados.
Según la opción que elijas, se te indicarán los próximos pasos para configurar la autenticación. Consulta la documentación de Gemini CLI para obtener más detalles sobre estas opciones.
Si planeas usar la plataforma Vertex AI de Google Cloud, primero sal de la CLI de Gemini presionando Ctrl + C dos veces y configuremos las variables de entorno necesarias.
Independientemente del método de autenticación que uses, por lo general, deberás establecer las siguientes variables: GOOGLE_CLOUD_PROJECT y GOOGLE_CLOUD_LOCATION.
Para configurar estas variables, haz lo siguiente:
# Replace with your project ID and desired location (e.g., us-central1)
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
Ahora, accedamos a Google Cloud:
gcloud auth application-default login
Una vez que te hayas autenticado con el método anterior, vuelve a iniciar Gemini CLI ejecutando el comando gemini en la terminal. En las opciones de autenticación, selecciona Vertex AI y listo.
Paso 4: ¡La prueba de Spark! (Verifica tu configuración)
¡Este es el momento de la verdad! Veamos si todo funciona. Ejecuta estos comandos para asegurarte de que todas las luces estén verdes.
- Escribe la siguiente instrucción:
What is my current directory?
La CLI de Gemini debería responder indicándote tu directorio de trabajo actual. Esta prueba verifica el modelo de lenguaje principal y la integración del shell.

- Prueba la conexión a GCP:
list my gcs buckets
Si tienes buckets de GCS, deberían aparecer en la lista. De lo contrario, te indicará que no hay ninguna. Esto confirma que se conectó correctamente a tu proyecto de GCP.
Paso 5: ¡Dale más superpoderes! (Instalación de extensiones)
Ahora, mejoremos las capacidades de Gemini CLI instalando algunas extensiones que serán útiles más adelante en el lab.
Cloud Run
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Seguridad de Gemini CLI
gemini extensions install https://github.com/gemini-cli-extensions/security
gcloud
gemini extensions install https://github.com/gemini-cli-extensions/gcloud
Cloud SQL para PostgreSQL
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
Si todos esos comandos funcionaron, oficialmente estás listo para el taller. Tu entorno está configurado y listo para que comiences a aumentar tu productividad. ¡Nos vemos en el primer lab!
3. Conceptos básicos e interacción con el espacio de trabajo local

Bien, ¿todo listo para ensuciarte las patas? Ahora veremos las herramientas reales que incluye tu nuevo cinturón de herramientas de Gemini. Los considero mis superpoderes para explorar y compilar en la nube. Veamos cómo funcionan.
Capacidades principales
Agrupo mis poderes en dos categorías: ver lo que hay y, luego, hacer cosas.
Comprende tu entorno (¡Mis súper sentidos!)
Antes de comenzar a construir un nido nuevo, debes revisar el árbol, ¿verdad? Estas herramientas sirven para conocer el terreno.
list_directory: Esta es mi herramienta básica de "exploración". Es un wrapper sencillo alrededor del listado de directorios estándar a nivel del SO. Sin embargo, lo interesante es que el modelo puede analizar este resultado estructurado para tomar decisiones, como explorar un subdirectorio llamadosrc.glob: ¡Este es mi "buscador de bellotas"! Utiliza patrones glob estándar, como*,**,?y[], que ya conoces de elementos como.gitignore. Por lo tanto, puedes preguntar "Busca todos los archivos*.pyen el directorioapp" usando el patrónapp/**/*.py. Es una forma eficaz de recopilar un conjunto específico de archivos para que el modelo los analice.search_file_content: ¡Esta es mi visión de rayos X! Utiliza expresiones regulares (regex) completas para sus búsquedas, no solo coincidencias de cadenas simples. Esto es increíblemente poderoso. Puedes pedirle que encuentre patrones complejos, como "Encuentra todas las rutas de Flask que usan un método POST", lo que podría generar una regex comoapp\.route\(.*methods=\['POST'\].*\). Devuelve la ruta de acceso del archivo, el número de línea y la línea coincidente, lo que le proporciona al modelo todo el contexto que necesita.read_file: Una vez que encuentres un archivo interesante, querrás abrirlo.read_fileestá optimizado para esto. Puedes leer un archivo completo o, en el caso de archivos grandes, puedes usar los parámetrosoffsetylimitpara leerlo en fragmentos. Esto significa que el modelo puede analizar de manera eficiente incluso archivos de registro enormes sin que se agote el tiempo de espera.
De la comprensión a la acción (¡es hora de construir!)
Bien, ya exploraste el terreno. Ahora es momento de construir tu nido. Estas herramientas te permiten realizar cambios y completar tareas.
**write_file**: ¿Necesitas crear un archivo nuevo desde cero?write_filees una operación atómica que escribe el contenido completo que proporcionas en una ruta de acceso especificada. Es ideal para crear la estructura de nuevos módulos o crear unDockerfiledesde cero según las necesidades de tu proyecto.**replace**: Esta herramienta es para cambios quirúrgicos. No se trata solo de una simple búsqueda y reemplazo. Proporcionas unold_stringy unnew_string. Para que esto funcione de forma segura, elold_stringdebe ser un fragmento único del archivo, por lo general, con varias líneas de contexto antes y después de la parte que cambias. Esto garantiza que solo cambiemos la parte exact del código que deseas.**run_shell_command**: ¡Este es el potenciador definitivo! Ejecuta el comando determinado en un subshell debash -c <command>. El modelo recupera elstdout, elstderry elexit code. Esto es fundamental para crear flujos de trabajo. El modelo puede ejecutar unterraform plan, leer el resultado y, si el plan es exitoso (código de salida 0), puede preguntarte si debe aplicarlo.
La red de seguridad (mi promesa para ti)
Ahora, ejecutar comandos puede ser aterrador. ¡Entiendo! Por eso, la red de seguridad es tan importante. Cuando el modelo genera un bloque tool_code que contiene una llamada a run_shell_command o write_file, el cliente de la CLI de Gemini la intercepta. Te muestra el comando exacto o el contenido completo del archivo que se escribirá y te da un mensaje [s/n]. No sucede nada sin tu aprobación explícita. Siempre tienes el control.
4. Explora un proyecto

Objetivo: Usar la CLI de Gemini para comprender una base de código desconocida sin salir de la terminal
Situación: Eres un desarrollador nuevo y necesitas ponerte al día con este proyecto rápidamente.
Tarea 0: Configuración: Clona el proyecto
Primero, necesitamos obtener el código. Se oculta en un repositorio público en GitHub, en un "árbol" llamado quickpoll. Pidámosle a la CLI de Gemini que lo clone por nosotros. Antes de hacerlo, creemos un directorio de trabajo y lancemos Gemini CLI desde ese directorio:
mkdir workdir
cd workdir
gemini
Ahora, escribe esta instrucción:
clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

Gemini comprenderá que "clonar" significa usar el comando git clone. Se generará una llamada a la herramienta run_shell_command con algo como git clone https://github.com/gauravkakad-google/quickpoll.git. Una vez que lo apruebes, se descargará el repositorio.
Ahora, sal de Gemini CLI presionando ctrl+c dos veces, navega al repositorio de ejemplo y vuelve a iniciar Gemini CLI:
cd quickpoll
gemini
¡Genial! Ahora que estamos dentro del árbol del proyecto, podemos comenzar a explorar.
Tarea 1: Enumera todos los archivos del proyecto
Ahora que entramos, vamos a hacer un mapa de todo el bosque. Queremos ver todos los archivos. Pregúntale a Gemini lo siguiente:
List all the files in the project.
Es probable que Gemini use la herramienta glob con el patrón **/*. Esto enumera de forma recursiva cada archivo, lo que te brinda un manifiesto completo de la base de código. Es un excelente primer paso para comprender la estructura del proyecto.
Tarea 2: Busca todos los archivos que importan "google.cloud.sql.connector"
Está bien, tengo curiosidad. ¿Dónde se comunica este proyecto con Google Cloud Storage? Hagamos un poco de trabajo de detective. Pregunta lo siguiente:
Find all files that import the 'google.cloud.sql.connector' library.

Con su poder de search_file_content, Gemini encontrará los archivos exactos que contienen esa instrucción de importación. Esto reduce de inmediato tu enfoque a las partes del código que controlan la interacción con Cloud SQL. En este proyecto, debería encontrar backend/main.py.
Tarea 3: Muéstrame el contenido del Dockerfile principal
Veo un Dockerfile. Ese es el plano de nuestro contenedor. Echemos un vistazo al interior. Solo debes preguntar:
Show me the contents of the main Dockerfile.

Gemini usará read_file para mostrar el Dockerfile. Puedes analizar la imagen base (FROM), las dependencias que se instalan (RUN pip install...) y el comando final (CMD). Esto te informa sobre el entorno de ejecución de la aplicación.
Tarea 4: ¿Cuál es el propósito del archivo main.py?
Muy bien, es hora de ver el corazón del código. Pidámosle a Gemini que nos guíe. Di lo siguiente:
What's the purpose of the `main.py` file?

Aquí es donde la CLI de Gemini realmente se destaca. Primero, llamará a read_file en backend/main.py. Luego, su modelo de lenguaje multimodal analizará el código de Python. Identificará que es una aplicación de FastAPI que proporciona una API de REST para una aplicación de encuestas. Luego, se explicarán los extremos de la API y su funcionalidad. Te ahorra el tiempo de tener que leer y descifrar todo por tu cuenta. También puedes hacer preguntas adicionales para explicar algunas de estas funcionalidades en detalle. Ingenioso, ¿no? ¡Pruébalo!
5. De Local a Live Implementación con Cloud Run y Cloud SQL

Muy bien, aventurero de la nube, ya exploraste el territorio. Ahora es el momento de construir tu propia casa en el árbol en la nube. Tomaremos nuestra aplicación de encuestas rápidas y la convertiremos en una aplicación web real y activa que cualquier persona podrá visitar.
Objetivo: Implementar la aplicación de encuestas rápidas en Cloud Run con un backend de Cloud SQL para PostgreSQL.
Tarea 1: Una rama sólida para nuestros datos (configuración de Cloud SQL)
Toda buena aplicación necesita un lugar para almacenar sus preciadas bellotas… Me refiero a los datos. Usaremos Cloud SQL para PostgreSQL. Es como un jardín mágico y autónomo para nuestra base de datos, por lo que podemos enfocarnos en lo divertido.
Le pediremos a la CLI de Gemini que cree la base de datos.
Please create a new Cloud SQL for PostgreSQL instance for me in project <myproject>. Call it quickpoll-db and put it in us-central1. Lets use the Development preset for now, and make the root password a-very-secure-password!.

Gemini CLI, con su extensión de Cloud SQL, se pondrá a trabajar. Se mostrará la llamada a la herramienta create_instance. ¡Aprobarlo!
Una vez que se cree la instancia, deberías ver un resultado similar al siguiente:

Puedes crear un archivo .env con la variable de entorno anterior y ejecutarlo antes de reiniciar la CLI de Gemini para que tenga acceso a estas variables.
Mientras nuestra instancia crece, preparemos la tierra. Necesitamos una base de datos y un usuario para nuestra app.
In the quickpoll-db instance, create a new database named quickpolldb.
La CLI de Gemini usará la herramienta create_database en la extensión de Cloud SQL para PostgreSQL para crear la base de datos por ti.

Ahora agreguemos un usuario para que se encargue de ella:
In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.
Esta vez, la CLI de Gemini usará la herramienta create_user.

Tarea 2: La ruta secreta (conectar el backend)
Nuestro backend necesita conocer la ruta secreta a nuestra nueva base de datos. Echemos un vistazo a backend/main.py para ver cómo encuentra su camino.
show me how would the backend/main.py connect to the database

Resultados ¿Ves eso? Usa el conector de Python de Cloud SQL y busca variables de entorno como CLOUD_SQL_POSTGRES_INSTANCE, CLOUD_SQL_POSTGRES_USER, CLOUD_SQL_POSTGRES_PASSWORD y CLOUD_SQL_POSTGRES_DATABASE. Tendremos que proporcionárselas a nuestro servicio de Cloud Run.
Primero, necesitamos CLOUD_SQL_POSTGRES_INSTANCE. Es como un saludo secreto.
What are the details for the Cloud SQL instance quickpoll-db in us-central1?

Verás muchos detalles. Busca el nombre de la conexión y copia ese valor. Se verá de la siguiente manera: your-project-id:us-central1:quickpoll-db
Ahora, antes de implementar la aplicación en Cloud Run, vamos a crear una instancia de la base de datos con las tablas requeridas. Como creamos una base de datos y un usuario independientes, salgamos de la CLI de Gemini y actualicemos el archivo .env que creamos antes con los valores nuevos:
export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Ahora, reinicia Gemini CLI y escribe lo siguiente:
execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

Descubrió automáticamente que la herramienta execute_sql no admite la ejecución de varios comandos SQL en una sola llamada. Por lo tanto, ejecutó cada comando de SQL por separado.
Tarea 3: Backend, ¡despegue! (Implementación en Cloud Run)
Es hora de que nuestro backend abandone el nido. Le indicaremos a Gemini que implemente la carpeta de backend en Cloud Run y le daremos la ruta de acceso secreta a la base de datos.
Deploy the backend folder to a new Cloud Run service called quickpoll-be in us-central1. Here are the secrets (environment variables):
CLOUD_SQL_POSTGRES_INSTANCE=your-project-id:us-central1:quickpoll-db
CLOUD_SQL_POSTGRES_USER=quickpoll-user
CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Gemini empaquetará tu código, creará una imagen de contenedor y la implementará en Cloud Run. Una vez que finalice el proceso, que puede tardar unos minutos, obtendrás una URL para tu nuevo y brillante servicio de backend. Ten a mano esa URL.

Tarea 4: Los detalles finales (configuración e implementación del frontend)
Nuestro frontend es como el rostro amigable de nuestra aplicación. Debe saber dónde encontrar el backend. Indiquemos a dónde debe ir.
Deploy the frontend folder to a new Cloud Run service called quickpoll-fe in us-central1. Here are the secrets (environment variables):
BACKEND_URL=backend-url

Tarea 5: ¡La gran revelación!
¡Muy bien! ¡Llegó el momento de la verdad! Toma la URL de tu servicio quickpoll-fe y ábrela en tu navegador web.
Deberías ver tu aplicación de QuickPoll en vivo y lista para usar. Anímate a crear una encuesta, votar y ver cómo se actualizan los resultados en tiempo real.
¡Lo lograste! Tomaste un proyecto de tu máquina local y lo hiciste realidad en Google Cloud. Y lo hiciste todo desde la comodidad de tu terminal con tu fiel compañero, Gemini CLI.
¡Eso sí que es productividad!
6. Para el desarrollador: Aceleración del ciclo de vida del desarrollo

Muy bien, desarrolladores, ¡aquí comienza la verdadera diversión! Ya exploramos un proyecto, pero ahora es momento de crearlo. Te mostraré cómo Gemini puede ser tu mejor socio de programación, ya que te ayuda a pasar de una idea simple a un código listo para producción más rápido de lo que una ardilla puede encontrar una nuez.
De la idea al código
Piensa en el ciclo de desarrollo típico. No se trata solo de escribir código, ¿verdad? Se trata de la creación de estructuras, la incorporación del manejo de errores, la refactorización y la escritura de pruebas. Gemini puede ayudarte con todo.
Tareas repetitivas y plantillas: ¡Se acabó el copiar y pegar!
Bien, ya tienes la funcionalidad básica de la aplicación. Ahora debes agregar el registro y controlar los posibles errores, ¿verdad? Por lo general, se trata de muchos bloques try...except repetitivos. ¡Ya no! Comencemos por pedirle a la CLI de Gemini que analice el código y sugiera recomendaciones de prácticas recomendadas para el registro de errores y el control de excepciones:
What are the best practices for error handling and logging that should also be included in this application?

La CLI de Gemini analizará el archivo existente y proporcionará algunas recomendaciones de prácticas recomendadas. Piensa en él como un asistente experto que puede ahorrarte tiempo en la investigación.
Ahora, pídele que implemente estas recomendaciones por ti:
please go ahead and implement these in the existing app
Es posible que el resultado real difiera en tu caso, pero, al final, deberías ver los detalles de los cambios que se realizaron. Por ejemplo, en la siguiente captura de pantalla, puedes ver que se agregó structlog para generar registros con formato JSON, se implementó el control de excepciones centralizado y se mejoró la forma en que se registran las respuestas a las solicitudes. Piensa en todo lo que te ahorraste de escribir.

Refactorización: Tu revisor de código personal
Todos queremos escribir código limpio y eficiente. Pero, a veces, tenemos prisa. Gemini puede actuar como tu revisor de código personal. Puedes preguntarle lo siguiente:
please perform a comprehensive code review for best practices and security


Gemini comprende las prácticas recomendadas específicas de cada idioma. Una vez más, el resultado real en tu caso podría ser diferente de las capturas de pantalla anteriores, pero, si lees el resultado, apreciarás el nivel de detalle que Gemini CLI alcanzó para analizar el código. Te ayuda a aprender y mejorar tu código al mismo tiempo.
Generación de pruebas: ¡La mejor parte!
Este es mi truco favorito. Todos sabemos que debemos escribir pruebas, pero puede ser tedioso, especialmente cuando tienes que simular cosas. Bueno, mira esto. Solo tienes que preguntar lo siguiente:
Add a test suite to this application



Gemini analizará tu función, identificará sus entradas y salidas, y determinará cuáles son sus dependencias. Luego, generará un archivo test_main.py completo con varios casos de prueba, incluido un "camino feliz" y, tal vez, una condición de error. Esto representa un gran aumento en la productividad.
Ejecuta las pruebas. (Una tarea de desafío para ti)
Ahora, aquí es donde las cosas se ponen realmente emocionantes. Dejaré esta parte como un desafío para que la explores por tu cuenta. Puedes solicitar a la Gemini CLI que ejecute los casos de prueba que generó. Luego, solo siéntate y observa cómo se desarrolla la magia.
7. Más allá de localhost: integración con GitHub

Hicimos un trabajo increíble en nuestra máquina local, nuestro pequeño rincón del bosque. Sin embargo, el verdadero potencial de la nube es la colaboración y la conexión. Es hora de alzar el vuelo y ver cómo Gemini puede interactuar con el mundo en general, comenzando por el árbol más grande del bosque de desarrolladores: GitHub.
Concepto: Tu asistente integrado de DevOps
Hasta el momento, usamos Gemini como un compañero de programación local. Ahora, lo actualizaremos a un Asistente de DevOps integrado completo. Todo esto es gracias a la integración del Protocolo de contexto del modelo (MCP). Es un nombre elegante, pero solo significa que Gemini puede comunicarse de forma segura con otros servicios en tu nombre, y el primero que dominaremos es GitHub.
Piénsalo. ¿Con qué frecuencia tienes que salir de la terminal para revisar una solicitud de extracción, crear un problema o explorar un repositorio en GitHub? ¡Eso es más cambio de contexto! Con el conjunto de herramientas de github, puedes hacer todo eso aquí mismo. Convierte a Gemini en una interfaz nativa para GitHub.
La documentación oficial del servidor de MCP de GitHub proporciona una amplia orientación sobre sus herramientas expuestas y opciones de configuración. Puedes elegir entre la operación local o remota, ya que la CLI de Gemini admite por completo ambos servidores de MCP remotos.
En este instructivo, se te guiará para configurar la opción de servidor de MCP remoto para GitHub. Primero, necesitarás un token de acceso personal (PAT) de GitHub.
Una vez que tengas tu PAT, es hora de agregar el objeto del servidor de MCP a tu archivo settings.json. A continuación, se muestra mi archivo settings.json completo, pero puedes asegurarte de que tu objeto mcpServers coincida con lo que ves aquí:
{
"security": {
"auth": {
"selectedType": "vertex-ai"
}
},
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "GITHUB_PAT"
},
"timeout": 5000
}
}
}
Después de actualizar tu archivo settings.json con la configuración del servidor de MCP de GitHub, simplemente reinicia la CLI de Gemini o ejecuta el comando /mcp refresh. En la siguiente captura de pantalla, se muestra el servidor de MCP de GitHub que ahora está preparado en mi sistema, y se exhibe el conjunto de herramientas potentes que la CLI de Gemini ahora puede utilizar con el Protocolo de contexto del modelo.

Muestra de comandos de teclas
Gemini incluye un nuevo conjunto de superpoderes específicamente para GitHub. Estos son algunos de mis favoritos:
github.list_repositories: ¿Quieres ver todos los repositorios de tu organización sin abrir un navegador? Esta es tu herramienta. Solo pregunta: "Enumera todos los repositorios de mi organización".github.create_issue: ¿Encontraste un error? No cambies de ventana para crear un problema. Solo tienes que decirle a Gemini: "Crea un problema en el repo desample-flask-apptitulado "Corrige el error de acceso" con esta descripción…" y listo, se creará el problema.github.get_pull_request: ¿Necesitas verificar una RP? Puedes preguntar: "Muéstrame los detalles de la solicitud de extracción número 42 en el repo desample-flask-app". Gemini recuperará el título, la descripción, el estado y quiénes son los revisores.github.get_file_contents: Esta es genial. Puedes leer un archivo desde un repositorio remoto sin tener que clonarlo primero. Es ideal para revisar rápidamente un archivo de configuración o el README de un proyecto que no tienes de forma local.
8. Exploración de GitHub

Basta de charla, ¡volemos! Usaremos nuestros nuevos poderes de GitHub para explorar una organización y un proyecto, todo desde la comodidad de nuestra terminal.
Objetivo: Usar Gemini para explorar y comprender un proyecto alojado en GitHub
Situación: Necesitas familiarizarte con un proyecto en GitHub en el que no has trabajado antes.
Tarea 1: Enumera los repositorios de una organización
Primero, veamos todos los proyectos de una organización de GitHub. En este lab, puedes usar tu propio nombre de usuario de GitHub o una organización a la que pertenezcas. Pidámosle a Gemini que las enumere.
List the repositories in the `[your-org-or-username]` GitHub organization.
(Recuerda reemplazar [your-org-or-username] por tu información real). Gemini usará la herramienta github.list_repositories y te mostrará una lista de todos los proyectos. ¡Genial!
Tarea 2: Busca un repositorio específico
De acuerdo. Verás una lista de repositorios. Ahora, al igual que un desarrollador real, debes escanear esa lista y encontrar el proyecto que te interesa. Para nuestro lab, supongamos que buscamos el repositorio quickpoll que clonamos antes. No necesitas un comando para esta parte. Solo lee el resultado del último paso y busca el repo.
Tarea 3: Enumera las solicitudes de extracción abiertas
Ahora que identificamos nuestro repositorio objetivo, veamos qué sucede con él. ¿Hay solicitudes de extracción abiertas? Preguntemos:
List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.
Gemini usará la herramienta github.list_pull_requests y filtrará el estado open. Luego, se mostrarán todas las PR abiertas, con el número, el título y el creador de cada una. Esta es tu vista instantánea del desarrollo activo del proyecto. Puedes probar esto con un repositorio en el que contribuyas de forma activa y verificar los resultados.

Tarea 4: Investiga una solicitud de extracción
Supongamos que hay una PR interesante en esa lista. Queremos saber más al respecto. Queremos ver la descripción y los archivos que se modificaron. Elige un número de PR de la lista (si no hay ninguno, puedes omitir este paso, pero supongamos que hay uno).
Show me the details and files changed in PR number 1 in the `quickpoll` repo.
Este es un gran ejemplo de una tarea de varios pasos para Gemini. Primero, es probable que use github.get_pull_request para recuperar los detalles principales: el título, el cuerpo, el autor, etcétera. Luego, para obtener los cambios en el archivo, usará una segunda herramienta, github.get_pull_request_files. Luego, combinará toda esta información en un resumen claro y agradable. Acabas de revisar una PR sin salir de la terminal. ¿No es increíble?
9. Del PRD a la confirmación inicial

Aprendiste a explorar, crear y probar. Ahora, vamos a unir todo en una situación real. Este es el momento en que convertimos un plan en un producto. Pasaremos de un documento de requisitos del producto (PRD) a nuestra primera confirmación. ¡Creemos algo increíble!
Objetivo: Simular una tarea de desarrollo del mundo real de principio a fin, combinando el contexto local y remoto
Situación: Se te asignó una función nueva. Los requisitos te esperan en un archivo PRD dentro del repositorio de GitHub del proyecto.
Tarea 1: Comprende el PRD
Este es el paso más importante. Antes de pensar en escribir una sola línea de código, debes comprender el plan. Los requisitos de nuestra nueva función se encuentran en el archivo prd/NEW_FEATURE.md. Vamos a abrirlo y ver qué hay dentro.
explain the requirements mentioned in prd/NEW_FEATURE.md
La CLI de Gemini empleará read_file para mostrar el contenido del PRD. ¡Comienza a usarlo! Se describirá la nueva función: un botón de actualización para que los usuarios actualicen manualmente la lista de encuestas activas. Siempre consulta el plano primero.

Tarea 2: Codificación: Traduce los requisitos a la realidad
¡Este es el momento mágico! Tomaremos los requisitos del PRD y le pediremos a Gemini que escriba el código por nosotros. Seamos específicos y digámosle exactamente lo que queremos.
Implement the changes as per the PRD
La CLI de Gemini entrará en acción y, después de un momento, verás un resultado similar a este. Nuestro nuevo y brillante código ahora tiene un hogar acogedor.

Tarea 3: Verifica tus cambios
Creamos un archivo nuevo con código nuevo. El último paso de este lab es implementar el cambio en Cloud Run y verificarlo.
let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.
Observa cómo esa instrucción proporcionó detalles adicionales, como el nombre del servicio de Cloud Run existente y su región de implementación. Ser específico ayuda a ahorrar tiempo, aunque Gemini CLI siempre te pedirá los detalles que falten si los omites.
Si tu servicio de Cloud Run actualizado encuentra un error, simplemente pídele a la CLI de Gemini que depure y rectifique el código. Recuerda que es tu compañero superpoderoso.
10. Felicitaciones

¡Y con esto terminamos! Acabas de completar un ciclo de desarrollo completo. Pasaste de un documento de requisitos a una nueva función lista para confirmarse y enviarse. Combinaste contexto local, contexto remoto, operaciones del sistema de archivos y generación de código. No solo eres un desarrollador, sino también un arquitecto de nube superproductivo. ¡Felicitaciones!