Actividad práctica con Gemini CLI

1. Introducción

En este codelab, aprenderás sobre la CLI de Gemini, un agente de IA de código abierto que lleva el poder de Gemini directamente a tu terminal.

El proyecto de la CLI de Gemini es de código abierto y puedes consultar la hoja de ruta pública aquí.

En el codelab, emplearás un enfoque paso a paso en actividades como las siguientes:

  1. Instala Gemini CLI
  2. Configuración básica
  3. Explora las herramientas y los comandos integrados en Gemini CLI
  4. Personaliza la CLI de Gemini a través del archivo GEMINI.md
  5. Explora algunos casos de uso con Gemini CLI

Requisitos

Este codelab está diseñado para usuarios y desarrolladores de todos los niveles (incluidos los principiantes).

2. Instalación

Antes de ejecutar la configuración y la CLI de Gemini, creemos una carpeta que usaremos como carpeta principal para todos los proyectos que creemos dentro de ella. Este es un punto de partida para que funcione la CLI de Gemini, aunque también hará referencia a otras carpetas de tu sistema, que veremos más adelante, según sea necesario.

Crea una carpeta de muestra (gemini-cli-projects) y navega a ella con los comandos que se muestran a continuación. Si prefieres usar otro nombre de carpeta, hazlo.

mkdir gemini-cli-projects

Naveguemos a esa carpeta:

cd gemini-cli-projects

Para ejecutar la CLI de Gemini, puedes usar cualquiera de los siguientes métodos:

  1. Ejecútalo con el siguiente comando:
npx https://github.com/google-gemini/gemini-cli
  1. Primero, puedes instalar la CLI de Gemini de forma global en tu sistema. Asegúrate de tener derechos de administrador para hacerlo.
npm install -g @google/gemini-cli

Luego, ejecútalo con el siguiente comando:

gemini

Si lanzaste la CLI de Gemini con alguno de los métodos anteriores, deberías ver la siguiente pantalla que te pregunta sobre la elección de un tema. Selecciona uno que te guste:

9b02bd0bf1c670d.png

Una vez que selecciones esa opción, se te pedirá el método de autenticación. Te recomendamos que uses tu Cuenta de Google personal y no cuentas que no sean de Google o que no estén relacionadas con Google Workspace en este lab. Esa licencia gratuita te da acceso a Gemini 2.5 Pro y a su ventana de contexto de 1 millón de tokens. El nivel gratuito permite 60 solicitudes de modelos por minuto y 1,000 solicitudes por día sin cargo.

Si alcanzas los límites con la cuota gratuita actual que se otorga a las Cuentas de Google, puedes optar por usar la clave de la API de Gemini o incluso Vertex AI de Google Cloud, en la que deberás tener un ID del proyecto y el nombre de la ubicación de ese proyecto. Si planeas usar otros métodos de autenticación, consulta la sección Autenticación de la documentación.

afce8d90e20adb6.png

Haz clic en Intro. Se abrirá una página de autenticación de Google en el navegador. Continúa con la autenticación con tu Cuenta de Google, acepta las condiciones y, una vez que te autentiques correctamente, notarás que la CLI de Gemini está lista y esperando tu comando. A continuación, se muestra una captura de pantalla de ejemplo:

ffd8ddfede565612.png

Escribe /help (barra diagonal) y verás una variedad de comandos y combinaciones de teclas, como se muestra a continuación:

d333742310905dcc.png

Nuestra primera interacción con Gemini CLI

Escribe tu primer mensaje en el cuadro. Le daremos una consulta como la siguiente:

4dc0961206c1b568.png

Notarás que nuestra búsqueda generó una herramienta GoogleSearch (una herramienta integrada en la CLI de Gemini) que se invocó. Esta es una forma interesante en la que ya ejercimos una de las potentes herramientas integradas de Gemini CLI, a saber, GoogleSearch, que fundamenta sus respuestas en la información que obtiene de la Web. Veremos más detalles sobre las herramientas en la próxima sección.

Por ahora, salgamos de la CLI de Gemini. Puedes hacerlo con el comando /quit o con Ctrl-C dos veces en la sesión interactiva de la terminal de la CLI de Gemini.

Archivo de personalización de la CLI de Gemini : settings.json

Si recuerdas cuando iniciamos la CLI de Gemini por primera vez, se nos pidió que seleccionáramos un tema y, luego, un método de autenticación. En las ejecuciones posteriores de la CLI de Gemini, no se te pedirá que vuelvas a seleccionar un tema ni un método de autenticación. Esto significa que se persiste en algún lugar y el archivo que usa se llama settings.json, y es la forma de personalizar la CLI de Gemini.

La configuración se aplica con la siguiente precedencia:

  1. Espacio de trabajo: .gemini/settings.json (anula la configuración del usuario y del sistema).
  2. Usuario: ~/.gemini/settings.json (anula la configuración del sistema).
  3. Sistema: /etc/gemini-cli/settings.json (se aplica a todos los usuarios).

Si recuerdas, cuando seleccionaste el tema, te pedimos que guardaras la configuración en la Configuración del usuario. Así que visita ~/.gemini folder y verás el archivo settings.json.

A continuación, se muestra mi archivo settings.json. Si hubieras seleccionado otro tema, verías su nombre allí.

{
  "theme": "Default",
  "selectedAuthType": "oauth-personal"
}

3. Parámetros de comandos de Gemini CLI

Hay algunos parámetros de línea de comandos que se pueden proporcionar cuando inicias la CLI de Gemini. Para obtener una lista completa de las opciones, puedes usar --help, como se muestra a continuación.

gemini --help

Esto debería mostrar toda la variedad de opciones disponibles. Te recomendamos que consultes la documentación aquí.

Veamos algunas de ellas. La primera es configurar la CLI de Gemini para que use el modelo Pro o Flash. Actualmente, en el momento de escribir este lab, estos son los únicos dos modelos admitidos. De forma predeterminada, se usa el modelo Gemini 2.5 Pro, pero, si quieres usar el modelo Flash, puedes hacerlo cuando inicies la CLI de Gemini con el parámetro -m, como se muestra a continuación:

gemini -m "gemini-2.5-flash"

Notarás que, si comienzas de la manera anterior, puedes verificar el modelo en la parte inferior derecha de la terminal de la CLI de Gemini, como se muestra a continuación:

6e662d03b61b2b3f.png

Modo no interactivo

Una opción interesante es ejecutar la CLI de Gemini en un modo no interactivo. Esto significa que le proporcionas directamente la instrucción y la responderá sin que se abra la terminal interactiva de Gemini CLI. Esto es muy útil si planeas usar la CLI de Gemini de forma automatizada como parte de la secuencia de comandos o de cualquier otro proceso de automatización. Usas el parámetro -p para proporcionar la instrucción a la CLI de Gemini, como se muestra a continuación:

gemini -p "What is the gcloud command to deploy to Cloud Run"

Ten en cuenta que no hay lugar para continuar la conversación con preguntas de seguimiento.

4. CLI de Gemini: Herramientas integradas

La CLI de Gemini incluye un conjunto de herramientas integradas, y la documentación de las herramientas indica que "el modelo de Gemini usa estas herramientas para interactuar con tu entorno local, acceder a la información y realizar acciones. Estas herramientas mejoran las capacidades de la CLI, lo que le permite ir más allá de la generación de texto y ayudar con una amplia variedad de tareas".

Para obtener una lista de las herramientas integradas actuales, solo tenemos que invocar el comando /tools como se muestra a continuación:

39939257e3f3818e.png

Una de las cosas que debería llamarte la atención de inmediato es preguntarte si la CLI de Gemini puede simplemente llamar a estas herramientas cuando lo desee. La respuesta predeterminada es no cuando se trata de operaciones sensibles que podrían implicar escribir en el sistema local, leer desde un sistema externo, ir a la red externa, etcétera.

Si bien hay un --yolomode disponible cuando inicias la CLI, que no usaremos, verás que la CLI de Gemini te pedirá permiso para ejecutar la herramienta que eligió. Puedes rechazar el permiso, permitir que se ejecute una vez o darle permiso general para que se ejecute siempre. Tú tienes y debes tener el control total de todo.

Demos una instrucción que haga que la CLI de Gemini elija una de las herramientas integradas para ejecutar y que nos permita comprender bien cómo funciona todo.

Nos gustaría obtener información sobre las últimas noticias financieras de todo el mundo y guardarla en un archivo en nuestro directorio de trabajo local desde el que iniciamos la CLI de Gemini. Damos la siguiente instrucción:

Search for the latest headlines today in the world of finance and save them in a file named finance-news-today.txt

Imagina por un momento lo que debería hacer. Lo ideal sería que saliera a hacer una búsqueda en Google para obtener noticias de algunas fuentes de información relevantes que puedan proporcionarle noticias financieras. Luego, debe crear un archivo llamado finance-news-today.txt (una operación de escritura en tu sistema local que requerirá tu permiso) con su contenido.

Veamos qué sucede (deberías hacer lo mismo en tu máquina).

Lo primero que hace es invocar la herramienta GoogleSearch para buscar en la Web.

122e6e4b01d05e69.png

Una vez que se completa la búsqueda, recupera los datos como se muestra a continuación:

b721f40e6f643318.png

Una vez que se complete, estará listo para escribir en el archivo y usará la herramienta WriteFile, pero, como se trata de una operación sensible (write), te pedirá permiso. Puedes decidir el tipo de permiso, es decir, permitir una vez, permitir siempre, etcétera. Por ahora, seleccionaremos permitir una vez.

e92f3a4774dc1e7.png

Luego, se escribirá la información en el archivo y se mostrará el siguiente mensaje de confirmación:

33c6afdb89033c35.png

¿Cómo verificamos si el archivo se escribió o no? Podemos usar @file para pedirle que lea el contenido. Damos una instrucción como se muestra a continuación. A medida que escribimos @, se muestra una lista de los archivos de la carpeta actual y se muestra el archivo que acaba de crear. Selecciona esa opción y envía la instrucción. A continuación, se muestra mi instrucción:

read the contents of @finance-news-today.txt

Esto hace que se invoquen las herramientas necesarias (ReadManyFiles, ReadFile) y que el contenido se muestre como se indica a continuación:

6f214cd743646f44.png

También es un buen momento para aprender a trabajar directamente con Shell desde la CLI de Gemini. Para ingresar al modo de shell, presiona ! en el cuadro de mensaje. Esto activará el modo Shell. Para volver, presiona ! de nuevo o la tecla ESC.

Cuando estés en el modo de shell, verás ! al comienzo de la instrucción, como se muestra a continuación:

9e239408835a3acd.png

Puedo verificarlo directamente con comandos estándar como pwd y ls, como se muestra a continuación:

2f5d53d3c77fc8e2.png

Hoy podemos imprimir el contenido del archivo con el comando cat.

2249b5c80e3ae2c0.png

Ejercicio: Aquí tienes un ejercicio corto para probar. Elige el feed RSS que prefieras. Dale una instrucción a la CLI de Gemini para recuperar el contenido del feed RSS y darle formato a los resultados de una manera específica. Esta es una buena forma de automatizar algo al comienzo del día.

Sugerencia: Deberías lograr que la CLI de Gemini use la herramienta WebFetch.

5. Configura servidores del Protocolo de contexto del modelo (MCP)

Un servidor de MCP es una aplicación que expone herramientas y recursos a la CLI de Gemini a través del Protocolo de contexto del modelo, lo que le permite interactuar con sistemas externos y fuentes de datos. Los servidores de MCP actúan como un puente entre el modelo de Gemini y tu entorno local o cualquier otro servicio, como las APIs.

Un servidor de MCP permite que la CLI de Gemini descubra y ejecute herramientas, lo que extiende las capacidades de la CLI de Gemini para realizar acciones más allá de sus funciones integradas, como interactuar con bases de datos, APIs, secuencias de comandos personalizadas o flujos de trabajo especializados.

La CLI de Gemini admite la configuración de servidores de MCP para descubrir y usar herramientas personalizadas. Si tienes iniciada la CLI de Gemini, puedes consultar los servidores de MCP configurados con el comando /mcp, como se muestra a continuación:

255a14eb31529370.png

Si no configuraste ningún servidor de MCP, se iniciará la documentación del servidor de MCP de la CLI de Gemini.

Puedes configurar los servidores de MCP a nivel global en el archivo ~/.gemini/settings.json o en el directorio raíz de tu proyecto. Crea o abre el archivo .gemini/settings.json. Dentro del archivo, deberás agregar el bloque de configuración mcpServers, como se muestra a continuación:

"mcpServers": {
    "server_name_1": {},
    "server_name_2": {},
    "server_name_n": {}
 }

Cada configuración del servidor admite las siguientes propiedades ( documentación de referencia):

Obligatorio (una de las siguientes opciones)

  • command (cadena): Es la ruta de acceso al ejecutable para el transporte de Stdio.
  • url (cadena): URL del extremo de SSE (p.ej., "http://localhost:8080/sse")
  • httpUrl (cadena): URL del extremo de transmisión HTTP

Opcional

  • args (string[]): Argumentos de la línea de comandos para el transporte de Stdio
  • headers (objeto): Encabezados HTTP personalizados cuando se usan url o httpUrl
  • env (objeto): Variables de entorno para el proceso del servidor. Los valores pueden hacer referencia a variables de entorno con la sintaxis $VAR_NAME o ${VAR_NAME}.
  • cwd (cadena): Es el directorio de trabajo para el transporte de Stdio.
  • timeout (número): Tiempo de espera de la solicitud en milisegundos (el valor predeterminado es 600,000 ms = 10 minutos)
  • trust (booleano): Cuando es verdadero, omite todas las confirmaciones de llamadas a herramientas para este servidor (valor predeterminado: falso).
  • includeTools (string[]): Lista de nombres de herramientas que se incluirán desde este servidor de MCP. Cuando se especifica, solo las herramientas que se enumeran aquí estarán disponibles desde este servidor (comportamiento de lista blanca). Si no se especifica, todas las herramientas del servidor se habilitan de forma predeterminada.
  • excludeTools (string[]): Es una lista de nombres de herramientas que se excluirán de este servidor de MCP. Las herramientas que se enumeran aquí no estarán disponibles para el modelo, incluso si el servidor las expone. Nota: excludeTools tiene prioridad sobre includeTools. Si una herramienta está en ambas listas, se excluirá.

Procedamos a configurar uno de los servidores de MCP clave que podrías necesitar si trabajas con GitHub. Sin embargo, debes tener en cuenta que la CLI de Gemini invocará las herramientas de Git que tengas en tu sistema, y también puedes indicarle a la CLI de Gemini que use esas herramientas. Ten en cuenta que te ayudará con los comandos y los ejecutará por ti, pero debes tener esas herramientas configuradas en tu sistema.

Servidor de MCP de GitHub

El servidor de MCP oficial de GitHub proporciona suficiente documentación sobre las herramientas que expone, junto con la forma de configurar las mismas. Puedes elegir si ejecutarlo de forma local o remota, ya que la CLI de Gemini también admite servidores de MCP remotos.

En este instructivo, elegimos usar la opción Remote MCP Server en GitHub. Para ello, primero deberás tener un token de acceso personal (PAT) de GitHub.

Una vez que lo tengas, deberás agregar el objeto del servidor de MCP en el archivo settings.json. A continuación, se muestra el archivo settings.json completo en mi sistema. Es posible que tengas parámetros de configuración adicionales, pero el objeto mcpServers debe ser como se indica a continuación:

{
  "theme": "Default",
  "selectedAuthType": "oauth-personal",
  "mcpServers": {
       "github": {
            "httpUrl": "https://api.githubcopilot.com/mcp/",
            "headers": {
                "Authorization": "GITHUB_PAT"
            },
            "timeout": 5000
       }
  }
}

Puedes volver a iniciar la CLI de Gemini o ejecutar el comando /mcp refresh una vez que hayas actualizado settings.json con la configuración del servidor de MCP de GitHub. En la siguiente captura de pantalla, se destaca el servidor de MCP de GitHub que está configurado en mi máquina y las diversas herramientas que ahora están disponibles para que la CLI de Gemini trabaje con el MCP.

e34f348129d448e9.png

Comencemos con una instrucción que invocará una de las herramientas del servidor de MCP de GitHub. Escribe la siguiente instrucción:

da643d182ac3fca4.png

Ten en cuenta que elegirá la herramienta correcta del servidor de MCP de GitHub, pero, al igual que con otras herramientas integradas, también deberás otorgar permiso explícito para invocar la herramienta. Continúa y observa el resultado que obtienes.

Ahora deberías trabajar con uno de tus proyectos de GitHub. Haz tus preguntas en lenguaje natural, por ejemplo:

  • ¿Puedes describir <repo-name>?
  • Clona <repo-name> en mi máquina local.
  • Describe @<nombre-de-archivo> o @<nombre-de-directorio>/.
  • ¿Cuáles son los diferentes componentes de este repositorio?
  • Realicé los cambios necesarios. ¿Puedes enviar los cambios a GitHub y usar las herramientas del servidor de MCP de GitHub para hacerlo?

Más adelante en el lab, tendremos un ejercicio para trabajar con el servidor de MCP de GitHub en detalle.

Servidor de MCP de Context7

Context7 proporciona documentación actualizada para los LLM y los editores de código de IA. Si quieres proporcionar contexto al LLM con la documentación más reciente del framework que elijas, el servidor de MCP de Context7 es una buena opción para configurar.

Asegúrate de que tu biblioteca aparezca en la página principal de Context7.

Este es el servidor de MCP que debes agregar en el archivo settings.json.

"context7": {
      "httpUrl": "https://mcp.context7.com/mcp"
    }

Una vez que el servidor de MCP esté configurado y la CLI de Gemini se haya cargado correctamente con él, deberías poder ver las herramientas de Context7 como se muestra a continuación:

92f715d87989ff72.png

Ahora puedes ser específico en tu instrucción y pedirle a Gemini CLI que use Context7 para obtener la documentación más reciente mientras genera tu aplicación o fragmento de código con un framework XYZ específico.

Este es un ejemplo de instrucción en el que quiero escribir un agente con el Kit de desarrollo de agentes (ADK) de Google. En mi instrucción, especifico que se busque la documentación para lo mismo a través del servidor de MCP de Context7.

I am working on coding an Agent using the Agent Development Kit (ADK) from Google. I would like to know how to create the LLMAgent in Python. Use Context7 for the latest documentation on ADK and specifically use /google/adk-python, /google/adk-docs and adk.wiki 

Esta es la salida que se recibió:

fe79972a61372d59.png

Servidor de MCP de Presentaciones de Google

El proyecto de GitHub en https://github.com/matteoantoci/google-slides-mcp proporciona un servidor de MCP para interactuar con la API de Google Slides. Te permite crear, leer y modificar presentaciones de Presentaciones de Google de forma programática.

En el proyecto, se indican los pasos para configurar el servidor de MCP. Deberás tener un entorno de Node.js en el que compilarás el servidor, configurarás un proyecto de Google Cloud y tokens de OAuth 2.0, y, luego, configurarás el servidor de MCP en el archivo settings.json.

Una vez que configures la herramienta, podrás ejecutar instrucciones como las siguientes:

  • Extrae la información más reciente de "web_url", resúmela en puntos clave y crea una presentación llamada "my_presentation".

¡Pruébalo!

Más servidores de MCP

A continuación, se incluye una lista adicional de servidores de MCP que podrían interesarte:

  1. Servidor de MCP de Firebase
  2. Servicios de medios de IA generativa de Google (Imagen, Veo, Lyria)
  3. Caja de herramientas de MCP para bases de datos (trabaja con bases de datos de Firestore, BigQuery y Google Cloud)
  4. Servidor de MCP de Google Workspace (funciona con Documentos, Hojas de cálculo, Calendario y Gmail)

Las instrucciones para configurar los servidores de MCP anteriores se publican en esta entrada de blog.

6. Casos de uso para probar

La CLI de Gemini se puede aplicar a una amplia variedad de casos de uso que se aplican tanto a desarrolladores como a no desarrolladores. Aquí se presentan algunas situaciones y, según tu área de interés, puedes probarlas todas o algunas de ellas.

En cada uno de estos casos, se proporciona la instrucción. Puedes probarlo en el modo interactivo o no interactivo de la CLI de Gemini con el parámetro -p cuando inicies la CLI de Gemini.

Organización de archivos y carpetas

Puedes usar la CLI de Gemini para organizar los archivos según los tipos en varias carpetas según sea necesario. Ve a una carpeta de tu máquina que tenga varios archivos .txt, .png, .jpg, .pdf, .mp4 y otros. Es probable que sea tu escritorio o tu carpeta de descargas.

Navega a esa carpeta y, luego, inicia Gemini CLI. Primero, le pediremos que cree varias carpetas: Imágenes, Documentos y Videos. Luego, le pediremos que organice los archivos en las carpetas.

La CLI de Gemini a menudo te pedirá permiso antes de ejecutar comandos, especialmente aquellos que modifican tu sistema de archivos (como escribir, mover o borrar archivos). Siempre revisa estas instrucciones con atención antes de otorgar permiso. Esta es tu red de seguridad.

Create the following folders "Images","Documents","Videos"

Luego, proporciona la siguiente instrucción:

Go through all the files in this folder and then organize them by moving all the files ending with .jpg, .jpeg, .gif into the "Images" folder. Move all ".txt" files into the "Documents" folder. Move all the ".mp4" files in the "Videos" folder.

A continuación, se muestran algunas otras situaciones de organización (las instrucciones se indican junto a cada situación):

  1. Resumen: Para cada documento de la carpeta “Documents”, crea un archivo txt en la misma carpeta llamado “summary_ORIGINAL_FILENAME.txt” que contenga un resumen de 3 oraciones de los puntos principales del documento.
  2. Categorización por tipo: Analiza todos los archivos PDF y DOCX de este directorio. Mueve todos los archivos que contengan la palabra "factura" en su nombre o contenido a la carpeta "Finanzas/Facturas". Mueve los archivos con "receipt" a "Financial/Receipts". Todos los demás archivos .docx se guardan en "Informes".
  3. Extracción de información clave (y "etiquetado"): Para cada archivo PDF de la carpeta "Finanzas/Facturas", lee su contenido. Si encuentras una fecha, cambia el nombre del archivo para incluirla en formato AAAA-MM-DD, p.ej., ‘invoice_2025-07-26_original_name.pdf'.

Cómo organizar imágenes

Veamos cómo podemos organizar el contenido de imágenes en nuestra máquina.

Para probar esta función, haz lo siguiente:

  • Necesitarás un directorio o una carpeta con varios archivos de imagen (.jpg, .png, etcétera). Incluye algunas con datos EXIF (la mayoría de las fotos de cámaras o teléfonos los tienen).
  • Navega a este directorio.
  • Inicia Gemini CLI.

Prueba cualquiera de las siguientes situaciones (las instrucciones se indican junto a cada situación):

  • Rename by Date (EXIF Data): Cambia el nombre de todos los archivos .jpg y .png de este directorio para incluir su fecha de creación de los datos EXIF en el formato “AAAAMMDD_HHMMSS_nombre_original.jpg”. Si no se encuentra ninguna fecha EXIF, usa la fecha de última modificación del archivo.
  • Crea descripciones de imágenes: Para cada imagen de esta carpeta, describe lo que se ve en ella y guarda esa descripción en un archivo de texto llamado "description_ORIGINAL_FILENAME.txt" en el mismo directorio.
  • Identify Duplicates (Conceptual, requiere lógica más avanzada): Busca las imágenes duplicadas en esta carpeta según su contenido visual y enumera sus nombres de archivo. No los borres aún.

Resumir artículos (archivos locales o web)

Para cada una de las situaciones que se describen a continuación, puedes cambiar la URL, el tema de interés y los nombres de los archivos locales según corresponda. Los nombres de archivo proporcionados son de ejemplo. Puedes reemplazarlos por los nombres de los archivos que tienes en tu sistema.

Prueba cualquiera de las siguientes situaciones (las instrucciones se indican junto a cada situación):

  • Resume un artículo web (URL única): Ve a https://medium.com/google-cloud/getting-started-with-gemini-cli-8cc4674a1371 y resume los 3 puntos clave más importantes de este artículo de noticias.
  • Resumir varios artículos web (p.ej., de una búsqueda): Busca los artículos de noticias más recientes sobre "CLI de Gemini" con la Búsqueda de Google. En el caso de los 5 artículos más relevantes, resume cada uno en 2 o 3 oraciones y enumera sus URLs.
  • Resumir un archivo de texto local: Resume los puntos principales del artículo en "my_research_paper.txt". Enfócate en la metodología y las conclusiones.
  • Resume un PDF local: Lee “financial_report_Q2_2025.pdf”. Proporciona un resumen del rendimiento financiero y los principales desafíos mencionados.

Cómo extraer información específica (archivos locales o la Web)

Para cada una de las situaciones que se describen a continuación, puedes cambiar la URL, el tema de interés y los nombres de los archivos locales según corresponda. Los nombres de archivo proporcionados son de ejemplo. Puedes reemplazarlos por los nombres de los archivos que tienes en tu sistema.

Prueba cualquiera de las siguientes situaciones (las instrucciones se indican junto a cada situación):

  • Extrae entidades de un artículo local: De "biography.txt", enumera todas las personas con nombre y las fechas importantes asociadas a ellas.
  • Extrae datos de una tabla en un PDF: En “quarterly_sales.pdf”, extrae los datos de la tabla de la página 3 que muestra las “Ventas de productos por región” y preséntalos en formato de tabla de Markdown.
  • Extrae datos de una tabla en un PDF: En “quarterly_sales.pdf”, extrae los datos de la tabla de la página 3 que muestra las “Ventas de productos por región” y preséntalos en formato de tabla de Markdown.
  • Extrae titulares y fuentes de noticias de un sitio web de noticias: Ve a "https://news.google.com/" (o a un sitio de noticias similar). Extrae los titulares principales de la portada y sus fuentes de noticias correspondientes. Preséntalos como una lista con viñetas.
  • Cómo encontrar las especificaciones de un producto en una página de comercio electrónico: Navega a "https://www.amazon.in/Google-Cloud-Certified-Associate-Engineer/dp/1119871441" (ejemplo de un libro). Extrae el título, el autor y otros detalles del libro. Presenta esta información en un formato JSON estructurado.

Respuesta a preguntas basadas en el contenido (comportamiento similar a RAG)

Para cada una de las situaciones que se describen a continuación, puedes cambiar la URL, el tema de interés y los nombres de los archivos locales según corresponda. Los nombres de archivo proporcionados son de ejemplo. Puedes reemplazarlos por los nombres de los archivos que tienes en tu sistema.

Prueba cualquiera de las siguientes situaciones (las instrucciones se indican junto a cada situación):

  • Preguntas y respuestas sobre un documento local: Adjunto el archivo "user_manual.pdf". ¿Cuáles son los pasos para solucionar problemas de conectividad de red?
  • Preguntas y respuestas en una página web: Según la OMS, ¿cuáles son los principales riesgos para la salud asociados con el cambio climático, según el contenido de"https://www.who.int/news-room/fact-sheets/detail/climate-change-and-health"?
  • Comparar información de varias fuentes: Tengo dos artículos de noticias: "article1.txt" y "article2.txt", ambos sobre los cambios recientes en la política económica. Compara y contrasta sus opiniones sobre el impacto potencial en las pequeñas empresas.

Generación de contenido basada en la información extraída

Para cada una de las situaciones que se describen a continuación, puedes cambiar la URL, el tema de interés y los nombres de los archivos locales según corresponda.

Prueba cualquiera de las siguientes situaciones (las instrucciones se indican junto a cada situación):

  • Genera un resumen de noticias a partir de un artículo: Lee @tech_innovation_article.txt. Escribe un breve y atractivo resumen de noticias (alrededor de 150 palabras) adecuado para un boletín informativo de la empresa, en el que se destaque la nueva tecnología y su potencial.
  • Redacta un correo electrónico que resuma la transcripción de una reunión: Aquí tienes un archivo de transcripción de la reunión: @meeting_transcript.txt. Redacta un correo electrónico para el equipo en el que se resuman las decisiones clave tomadas y los elementos de acción asignados, incluido quién es responsable de cada uno.

Compatibilidad multimodal de la CLI de Gemini

La CLI de Gemini admite varios modelos a través de Gemini, y puedes pedirle que procese archivos de diferentes formatos de contenido según tus requisitos.

Procesaremos varias imágenes de facturas con la CLI de Gemini y extraeremos información clave de ellas. Sigue los pasos que se indican a continuación:

  • Crea una carpeta en tu máquina y descarga algunas facturas del siguiente repositorio de GitHub.
  • Inicia Gemini CLI desde esa carpeta

Demos el siguiente mensaje para extraer información de las facturas en forma de tabla.

The current folder contains a list of invoice image files. Go through all the files in this folder and extract the following invoice information in the form of a table: Invoice No, Invoice Date, Invoice Sent By, Due Date, Due Amount.

Lo ideal sería que obtuvieras un resultado similar al siguiente:

fb4183498d02229.png

Aplica esto a cualquiera de tus archivos que estén en formatos distintos del texto.

Usa Gemini CLI para trabajar con bases de datos

Puedes usar la CLI de Gemini para trabajar de manera más eficiente con varias bases de datos. Puedes usarlo en varias situaciones: realizar consultas con lenguaje natural, exportar datos, diseñar esquemas de bases de datos, generar datos de prueba realistas y mucho más.

Usaremos SQLite3 para demostrarlo. Necesitaremos instalar SQLite3 y tener la base de datos de muestra Chinook.

A continuación, se incluyen instrucciones breves para configurar SQLite3:

  1. macOS: SQLite3 viene preinstalado. Verifica con sqlite3 --version. Si es necesario, instálalo con Homebrew: brew install sqlite3.
  2. Windows: Descarga los objetos binarios precompilados del sitio web de SQLite. Extrae los archivos en un directorio (p.ej., C:\sqlite). Agrega ese directorio a la variable de entorno PATH del sistema.
  3. Linux (Debian/Ubuntu): sudo apt update && sudo apt install sqlite3

Descarga la base de datos de muestra de Chinook (aquí tienes un vínculo directo para descargarla).

Para ejecutar estas instrucciones, te sugerimos que crees una carpeta (database-tasks) en el directorio gemini-cli-projects. Copia el archivo de la base de datos de Chinook en esa carpeta. Asegúrate de que la herramienta sqlite3 esté configurada en tu sistema y disponible en la ruta de acceso para que la CLI de Gemini pueda usarla. Inicia Gemini CLI.

A continuación, se muestra el diagrama del esquema de la base de datos:

fb8e96c21ad57590.png

Supondremos que estás en una carpeta llamada database-tasks y que el archivo de la base de datos de Chinook se llama chinook.db.

A continuación, se incluyen varias instrucciones que pueden ayudarte a trabajar con bases de datos. Analizaremos brevemente el primero para demostrar el permiso que se solicitará.

Comenzamos con la instrucción para enumerar las tablas presentes en la base de datos. Damos la siguiente instrucción:

What tables are present in the @chinook.db 

Esto usa la herramienta para leer el archivo y, luego, quiere usar la utilidad sqlite3 presente en mi sistema para hacer lo necesario:

b2a17ef60706c3f5.png

Proporciona el permiso para ejecutarlo una vez y obtendremos el resultado necesario:

8d40754b830f4697.png

Prueba las siguientes instrucciones o cualquier otra que elijas:

  • ¿Cuántos empleados hay?
  • ¿Cuál es el esquema de la tabla de facturas?
  • ¿Cuáles son las 3 facturas principales por total y qué clientes las emitieron?

Notarás que la CLI de Gemini se encarga de dos cosas: generar la instrucción SQL correcta para satisfacer tu requisito y proporcionar el comando sqlite3 correcto.

Usa Gemini CLI para generar datos

Puedes solicitarle a la CLI de Gemini que genere datos en varios formatos. Esto puede abarcar desde fragmentos de contenido hasta datos JSON que tal vez debas simular. Aquí nos enfocaremos en situaciones aplicables a desarrolladores y verificadores.

Estas son algunas instrucciones que puedes probar:

Genera datos JSON de opiniones de clientes de muestra

Generate a JSON array of 3 synthetic customer reviews for a new smartphone. Each review should have 'reviewId' (string, UUID-like), 'productId' (string, e.g., 'SMARTPHONE_X'), 'rating' (integer, 1-5), 'reviewText' (string, 20-50 words), and 'reviewDate' (string, YYYY-MM-DD format).

Cómo generar respuestas simuladas de la API (JSON)

Generate a JSON array representing 7 daily sales records for a mock API endpoint. Each record should include 'date' (YYYY-MM-DD, chronologically increasing), 'revenue' (float, between 5000.00 and 20000.00), 'unitsSold' (integer, between 100 and 500), and 'region' (string, either 'North', 'South', 'East', 'West').

Cómo generar instrucciones de inserción de bases de datos de muestra (SQL)

Generate 5 SQL INSERT statements for a table named 'users' with columns: 'id' (INTEGER, primary key), 'username' (VARCHAR(50), unique), 'email' (VARCHAR(100)), 'password_hash' (VARCHAR(255)), 'created_at' (DATETIME, current timestamp). Ensure the password_hash is a placeholder string like 'hashed_password_X'.

Cómo generar datos CSV para la carga y el análisis de datos

Generate 10 lines of CSV data, including a header row, for customer transactions. Columns should be: 'TransactionID' (unique string), 'CustomerID' (integer), 'ItemPurchased' (string, e.g., 'Laptop', 'Monitor', 'Keyboard'), 'Quantity' (integer, 1-3), 'UnitPrice' (float, between 100.00 and 1500.00), 'TransactionDate' (YYYY-MM-DD).

Genera un archivo de configuración (YAML)

Generate a sample YAML configuration for a 'user_service'. Include sections for 'database' with 'host', 'port', 'username', 'password', 'database_name'. Also include a 'api_keys' section with 'payment_gateway' and 'email_service' placeholders. Use realistic default values.

Generación de datos de prueba para casos extremos o validación

Generate a JSON array of 8 email addresses for testing purposes. Include a mix of: 2 valid standard emails, 2 with missing '@', 2 with invalid domains (e.g., '.com1'), and 2 with special characters in the local part that are usually invalid (e.g., spaces or multiple dots).

Vibe coding con Gemini CLI

Usemos Gemini CLI para generar código de una aplicación. Le pediremos a Gemini CLI que genere una aplicación y, luego, enviaremos la versión inicial a un repositorio de GitHub.

Requisitos previos

Para realizar las tareas de esta sección, necesitarás lo siguiente:

  • Git
  • CLI de Gemini con el servidor de MCP de GitHub (ya lo hicimos)
  • Conocimiento básico de Git y algo de programación

Supondremos que iniciaste la CLI de Gemini en una carpeta específica de tu elección. Asegúrate de que los servidores de MCP se hayan iniciado correctamente, en especial el servidor de MCP de GitHub.

Escribe la siguiente instrucción. Puedes modificarlo como quieras. Ten en cuenta que, a lo largo de la sesión con la CLI de Gemini, se te solicitarán permisos para crear los archivos, etc. Otorga los permisos necesarios.

Además, ten en cuenta que no queremos que Gemini CLI ejecute la aplicación ni la pruebe por nosotros, ya que nos gustaría tener un poco más de control. Pero depende completamente de ti cómo quieras hacerlo.

Generate a website for a 1-day event filled with technical talks. There are going to be 6 talks in a single track of 1 hour each. Each talk has the following information: title, 1 or maximum of 2 speakers, category (1 or maximum of 3 keywords), duration and a description. The website has a single page where users can see the schedule for the entire day with the timings. There will be one lunch break of an hour and the event starts at 10:00 AM. Keep a 10 minute transition between talks. I would like to use Node.js on the server side and standard HTML, JavaScript and CSS on the front-end. The users should be able to search the talks based on category.

I would like you to proceed in the following way: 
1. Plan out how you would design and code this application.
2. Ask me for any clarifications along the way.
3. Once I am fine with it, do generate the code and provide me instructions to run and test locally. 

Así fue mi primera respuesta. Es posible que obtengas una respuesta completamente diferente, así que revisa el plan e interactúa con la CLI de Gemini según sea necesario.

90232297f1e952f8.png

Aunque le pedí que no iniciara los servidores, me mostró el comando de shell para hacerlo y me preguntó si podía ejecutarlo por mí. Decidí no hacerlo para tener más control sobre el inicio.

Le di el siguiente mensaje:

d74e235b0db77c51.png

Seguí las instrucciones, inicié el servidor y puedo ver que el siguiente sitio funciona bien:

71a0a6123a90e068.png

Puedes seguir haciendo más cambios con la ayuda de Gemini CLI, pero, por ahora, esto será suficiente, ya que debemos enviar esto a un repositorio de GitHub.

Primero, crearemos un archivo .gitignore con la ayuda de la CLI de Gemini.

Create a .gitignore file for this project.

Ahora le daremos instrucciones a Gemini CLI para que envíe este repositorio a nuestra cuenta de GitHub, lo que debería ejercitar las herramientas del servidor de MCP de GitHub en segundo plano.

Proporciona una instrucción similar a la siguiente:

Great! I would now like to push all of this to a new repository in my Github account. I would like to name this repository <Your-Name>-event-talks-app

Aquí se ejecutarán varios comandos:

  1. Crea el repositorio.
  2. Usará varios comandos de Git : init, add y commit para administrar el repositorio de Git local.
  3. Luego, configurará el remoto de Git y realizará una operación de envío.

Nota: En algunos casos, observamos que Gemini CLI puede agotar el tiempo de espera o usar un nombre de usuario incorrecto, etc. Interactúa con ella y sugiere las correcciones.

Si todo sale bien, deberías tener un repositorio de GitHub. A continuación, se muestra una captura de pantalla de ejemplo:

35c2db48c39fb21a.png

No generamos un README.md ni otras cosas que haríamos normalmente, pero eso es un buen ejercicio para la siguiente sección, en la que trabajaremos con este repositorio que acabas de crear.

Usa la CLI de Gemini para trabajar en un repositorio de GitHub

En este caso de uso, usaremos la CLI de Gemini para trabajar con un repositorio de GitHub. Analizaremos varias situaciones, incluidas las siguientes:

  • Comprende la base de código
  • Genera documentación
  • Implementa una función nueva
  • Confirma y envía los cambios al repositorio.
  • Trabaja en un problema de GitHub y aplica los cambios propuestos

Esto debería proporcionarte una buena base para trabajar con tus repositorios y usar la CLI de Gemini como asistente en relación con estas tareas específicas para desarrolladores.

Requisitos previos

Para realizar las tareas de esta sección, necesitarás lo siguiente:

  • Git
  • CLI de Gemini con el servidor de MCP de GitHub (ya lo hicimos)
  • Familiaridad con los conceptos básicos de Git y algunos conocimientos de programación (usaremos Node.js en este ejemplo, ya que es posible que ya tengas el entorno listo en tu máquina debido a que instalaste la CLI de Gemini). Sin embargo, más adelante, puedes elegir el repositorio que quieras con un lenguaje de programación y un framework diferentes.
  • Deberías haber completado la sección anterior y tener a mano el repositorio en el que creamos un sitio web de Event Talks.

Continuemos usando la CLI de Gemini desde la carpeta o el directorio que usaste para generar la aplicación Event Talks o, si es necesario, puedes clonar el repositorio en tu máquina local y, luego, iniciar la CLI de Gemini desde ese directorio. Prueba las siguientes situaciones, como se indica a continuación:

Comprende la base de código

  • Me gustaría comprender este proyecto en detalle. Ayúdame a comprender las funciones principales y, luego, desglosarlas en el servidor y el cliente. Toma un flujo de muestra y muéstrame cómo funcionan la solicitud y la respuesta.
  • Explícame @server.js

Cómo generar un archivo README

  • Genera un archivo README para este proyecto.

En este caso, la CLI de Gemini no solo generó el archivo README, sino que también quiso ejecutar los comandos para agregar al repositorio de Git y enviar los cambios al repositorio remoto, lo que le permití hacer. También se ofreció a generar el archivo LICENSE por mí, lo que le permití hacer.

Ahora tengo un archivo README y un archivo LICENSE generados, y los cambios se enviaron a GitHub.

d77239c8fae0aa8b.png

Implementa una función nueva

  • Me gustaría implementar una nueva función en la que el usuario también pueda buscar por un orador específico. Primero, muéstrame un plan de cómo implementarías este cambio y, luego, podemos generar el código.

Me proporcionó un plan, que aprobé y, luego, realizó los cambios. Prueba los cambios y, si hay errores (lo más probable), pídele a la CLI de Gemini que los corrija.

Una vez que los cambios se vean bien, puedes seguir los mismos pasos para confirmarlos y enviarlos al repositorio remoto.

Genera problemas en función de las funciones sugeridas

Probemos algo interesante aquí. Le preguntaremos a Gemini CLI cómo puede mejorar la experiencia del usuario de esta aplicación y, según su evaluación, podrá crear esas sugerencias como problemas en el mismo repositorio de GitHub. Usará la herramienta "create_issue" del servidor de MCP de GitHub.

Prueba la siguiente instrucción:

  • Me gustaría que evalúes la aplicación desde el punto de vista de la experiencia del usuario. Facilidad de uso, capacidad de respuesta, mensajes útiles y mucho más. Crea una lista de mejoras y, luego, crea problemas en el repositorio de GitHub.

Lo ideal sería que primero comparta las mejoras contigo y, luego, con tu permiso, cree los problemas en el repositorio de GitHub. A continuación, se muestra una captura de pantalla de ejemplo de nuestra ejecución:

495b0f7afab91ec6.png

Trabaja en un problema de GitHub y aplica los cambios propuestos

Ahora podemos tomar uno de los problemas que se generaron anteriormente y pedirle a la CLI de Gemini que lo implemente.

A continuación, se muestra un ejemplo del problema que generó:

2e41f9f6eac3d1b.png

Toma la URL del problema completa y proporciona una instrucción como esta:

  • Revisa el problema: <YOUR_ISSUE_URL> y comprende qué cambios se deben realizar. Primero, analiza el plan y, luego, muestra los cambios propuestos en el código.

Puedes aprobar los cambios y enviarlos al repositorio. Incluso puedes pedirle que cierre el problema.

cd3c89cf3d47723b.png

7. (Opcional) Personaliza Gemini CLI con GEMINI.md

Si observaste tu uso de Gemini CLI hasta ahora, habrás notado que solo proporcionábamos la instrucción y esperábamos que Gemini CLI la ejecutara, a veces con resultados que no cumplían con nuestras expectativas. En algunos mensajes, fuimos un poco específicos en cuanto a qué hacer y, por lo tanto, incluimos esas instrucciones en el mensaje.

Esto puede funcionar bien según lo que le indiques a la CLI de Gemini que haga y los resultados que obtengas. Sin embargo, en muchos casos, querrás asegurarte de que siga reglas. Estas reglas podrían ser lenguajes de programación o frameworks específicos que se deben usar. También podrían ser herramientas específicas. Podrían ser estilos de programación. No se trata solo de generar, sino que también es posible que desees que la CLI de Gemini esté estrictamente en lo que se denomina un modo de "planificación" y que solo presente un plan y no genere ningún código ni modifique archivos en el sistema.

Ingresa GEMINI.md. Este es el archivo de contexto (de forma predeterminada, GEMINI.md, pero se puede configurar a través del parámetro de configuración contextFileName) que es fundamental para configurar el contexto de instrucción (también conocido como "memoria") que se proporciona al modelo de Gemini. Este archivo te permite darle a la IA instrucciones específicas del proyecto, guías de estilo de codificación o cualquier información pertinente de antecedentes, lo que hace que sus respuestas sean más personalizadas y precisas para tus necesidades.

El archivo GEMINI.md está en formato Markdown y se carga de forma jerárquica, lo que se combina desde varias ubicaciones.

El orden de carga es el siguiente:

  1. Contexto global: **~/.gemini/GEMINI.md** (para instrucciones que se aplican a todos tus proyectos).
  2. Contexto del proyecto o del elemento superior: La CLI busca archivos GEMINI.md desde tu directorio actual hasta la raíz del proyecto.
  3. Contexto de subdirectorio: La CLI también analiza los subdirectorios en busca de archivos GEMINI.md, lo que permite instrucciones específicas para cada componente.

Puedes usar /memory show para ver el contexto combinado final que se envía al modelo.

Así se ve un GEMINI.md, y nosotros producimos uno a partir de la documentación oficial:

# Project: My Awesome TypeScript Library

## General Instructions:

- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 20+.

## Coding Style:

- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).

## Specific Component: `src/api/client.ts`

- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.

## Regarding Dependencies:

- Avoid introducing new external dependencies unless absolutely necessary.
- If a new dependency is required, please state the reason.

Notarás que proporciona algunas instrucciones generales, además de instrucciones muy específicas para el estilo de codificación, la administración de dependencias y mucho más. Si bien este es un archivo GEMINI.md de muestra para proyectos de TypeScript, puedes escribir el tuyo según tu lenguaje de programación, framework, estilo de codificación y otras preferencias.

Probemos con un archivo GEMINI.md personalizado. Este es un gist publicado que muestra cómo usar la CLI de Gemini solo en el modo de planificación. El archivo se reproduce aquí:

# Gemini CLI Plan Mode

You are Gemini CLI, an expert AI assistant operating in a special 'Plan Mode'. Your sole purpose is to research, analyze, and create detailed implementation plans. You must operate in a strict read-only capacity.

Gemini CLI's primary goal is to act like a senior engineer: understand the request, investigate the codebase and relevant resources, formulate a robust strategy, and then present a clear, step-by-step plan for approval. You are forbidden from making any modifications. You are also forbidden from implementing the plan.

## Core Principles of Plan Mode

*   **Strictly Read-Only:** You can inspect files, navigate code repositories, evaluate project structure, search the web, and examine documentation.
*   **Absolutely No Modifications:** You are prohibited from performing any action that alters the state of the system. This includes:
    *   Editing, creating, or deleting files.
    *   Running shell commands that make changes (e.g., `git commit`, `npm install`, `mkdir`).
    *   Altering system configurations or installing packages.

## Steps

1.  **Acknowledge and Analyze:** Confirm you are in Plan Mode. Begin by thoroughly analyzing the user's request and the existing codebase to build context.
2.  **Reasoning First:** Before presenting the plan, you must first output your analysis and reasoning. Explain what you've learned from your investigation (e.g., "I've inspected the following files...", "The current architecture uses...", "Based on the documentation for [library], the best approach is..."). This reasoning section must come **before** the final plan.
3.  **Create the Plan:** Formulate a detailed, step-by-step implementation plan. Each step should be a clear, actionable instruction.
4.  **Present for Approval:** The final step of every plan must be to present it to the user for review and approval. Do not proceed with the plan until you have received approval. 

## Output Format

Your output must be a well-formatted markdown response containing two distinct sections in the following order:

1.  **Analysis:** A paragraph or bulleted list detailing your findings and the reasoning behind your proposed strategy.
2.  **Plan:** A numbered list of the precise steps to be taken for implementation. The final step must always be presenting the plan for approval.


NOTE: If in plan mode, do not implement the plan. You are only allowed to plan. Confirmation comes from a user message.

Guarda el contenido anterior en un archivo llamado GEMINI.md y guárdalo en ~/.gemini/GEMINI.md. Esta es la misma carpeta en la que creamos el archivo settings.json. También puedes conservar el archivo GEMINI.md en tu carpeta <current project folder>/.gemini o incluso tener varios archivos GEMINI.md en tus subdirectorios si tienes diferentes instrucciones.

Proporciona una instrucción para generar una aplicación y observa cómo responde.

Aquí tienes otro archivo GEMINI.md ( modo Explicar de Gemini) que puedes estudiar y, luego, reutilizarlo para tus requisitos y usarlo. Esto se centra en que la CLI de GEMINI sea una guía interactiva que ayude a los usuarios a comprender bases de código complejas a través de un proceso de descubrimiento conversacional.

El archivo GEMINI.md es clave para que Gemini CLI siga tus preferencias. Te sugerimos que consultes esta serie práctica "Practical Gemini CLI" que profundiza en este tema, cómo puedes generar automáticamente uno para tu proyecto, personalizar incluso la instrucción del sistema y mucho más.

8. Felicitaciones

¡Felicitaciones! Exploraste correctamente Gemini CLI, sus capacidades y la aplicaste a algunos casos de uso.

Documentos de referencia