
¡Bienvenido al taller de Gemini CLI! En este codelab, aprenderás a instalar, configurar y utilizar la interfaz de línea de comandos (CLI) de Gemini para potenciar tu flujo de trabajo de desarrollo.
Este taller está impartido por Carlos Alarcon. Conoce más en carlos-alarcon.com.
Gemini CLI no es solo un chat; es un agente colaborativo que vive en tu terminal, entiende tu código y puede ejecutar tareas complejas utilizando herramientas del sistema.
GEMINI.md)Positive : Este taller está diseñado para desarrolladores de todos los niveles. No necesitas experiencia previa con IA.

El primer paso es instalar la herramienta en tu sistema. Gemini CLI se distribuye como un paquete npm.
npm install -g @google/gemini-cli
gemini --version
Deberías ver un número de versión (ej. 1.0.0 o superior).
Positive : Si encuentras problemas de permisos en Linux/macOS, puedes necesitar usar sudo o configurar npm para instalar paquetes globales sin permisos de administrador.

Antes de empezar a chatear, necesitas conectar Gemini CLI con tu cuenta.
gemini
Negative : Alternativa con API Key: Si prefieres usar una API Key, selecciona "Use Gemini API key" en el menú y sigue las instrucciones para pegar tu clave de Google AI Studio.
Si quieres usar Gemini CLI dentro de scripts o pipelines, puedes ejecutarlo en modo no interactivo: le envías el prompt y termina al responder.
echo "¿Qué es el fine tuning?" | gemini
También puedes pasar el prompt directamente con un flag.
gemini -p "Genera un resumen rápido de este repo"
Tip : Útil para CI/CD y automatizaciones donde no hay TTY; la salida se imprime en stdout y el proceso finaliza al completar la respuesta.
Ahora que estás dentro, ¡probemos lo básico!
Escribe cualquier pregunta o instrucción directamente en el prompt.
Intenta esto:
Explica brevemente qué es la arquitectura MVC.
/)Gemini CLI tiene comandos especiales que empiezan con /.
/clear/help/quit o /exit/tools/memory show, /memory add <texto> o /memory refresh/extensionsPositive : Tarea práctica: Escribe /help para ver la lista completa de comandos disponibles.
Una de las características más potentes es la capacidad de leer tus archivos locales. Usa el símbolo @ para referenciar archivos o directorios.
echo "function suma(a, b) { return a - b; }" > bug.js
Negative : Nota: ¡Hemos introducido un bug intencional, restando en lugar de sumar!
Encuentra el error en este código: @bug.js
Gemini leerá el contenido de bug.js, analizará el código y te explicará que la función suma está restando.
También puedes referenciar carpetas enteras para resumir proyectos:
Resumen de este directorio: @.
Positive : El símbolo @ es extremadamente útil cuando trabajas en proyectos grandes. Puedes referenciar múltiples archivos en un solo prompt.
Gemini CLI no solo lee, también puede ayudarte a organizar tu espacio de trabajo. Vamos a simular una carpeta desordenada y pedirle que la organice.
Abre una nueva terminal y crea un desorden simulado:
mkdir desorden
cd desorden
touch foto1.jpg foto2.png notas.txt script.py data.json todo.md config.yml
cd ..
Entra en la carpeta desorden con Gemini CLI (o navega hasta ella).
Prompt:
Estoy en la carpeta 'desorden'. Mira los archivos que hay y organízalos en subcarpetas lógicas (ej. Imágenes, Documentos, Código). Muévelos automáticamente.
Gemini analizará los archivos (usando herramientas como list_directory) y propondrá un plan:
.jpg, .png a Imágenes/.txt, .md a Documentos/.py, .json, .yml a Código/ o Config/Te pedirá confirmación para ejecutar los comandos run_shell_command (como mv ...). Acepta y observa cómo tu carpeta queda limpia en segundos.
Positive : Este tipo de automatización puede ahorrarte horas cuando trabajas con proyectos grandes o desorganizados.
Gemini CLI puede ejecutar comandos de sistema por ti o permitirte ejecutarlos directamente sin salir de la herramienta.
Usa el prefijo ! para ejecutar un comando de shell y volver al chat.
Intenta esto:
!ls -la
Negative : En Windows usa !dir en lugar de !ls
También puedes pedirle a Gemini que ejecute comandos por ti en lenguaje natural. Gemini te pedirá confirmación antes de ejecutar acciones que modifiquen el sistema.
Prompt:
Crea un archivo llamado "hola.txt" que contenga el texto "Hola desde Gemini CLI".
Gemini generará una llamada a la herramienta run_shell_command o write_file. Aprobar la acción (presionando y si se solicita confirmación) creará el archivo.
Gemini CLI viene equipado con "herramientas" (Tools) que le dan superpoderes más allá de generar texto. Dos de las más útiles son google_web_search y web_fetch.
¿Necesitas información actualizada que el modelo no tiene en su entrenamiento?
Intenta esto:
Busca en internet el precio actual de la accion de Nvidia.
Gemini usará la herramienta google_web_search, obtendrá resultados reales y te dará una respuesta fundamentada.
Si tienes un enlace a una documentación o artículo:
Intenta esto:
Ingresa a https://www.carlos-alarcon.com y dime de que trata
La herramienta web_fetch descargará el contenido de la página para que Gemini pueda analizarlo, incluso si es muy largo.
Para ver qué herramientas tienes disponibles en tu sesión actual:
/tools
Positive : Las herramientas convierten a Gemini CLI en un asistente verdaderamente proactivo que puede interactuar con el mundo real.

Antes de explorar las integraciones avanzadas con MCP, vamos a poner en práctica todo lo aprendido con un proyecto completo y divertido.
Crearás un juego de navegador inspirado en el clásico juego del dinosaurio de Chrome, pero con un giro único: un desarrollador que salta sobre "bugs" de software en lugar de cactus.
✓ HTML5 Canvas para renderizado
✓ JavaScript moderno (ES6+)
✓ Animaciones fluidas (RequestAnimationFrame)
✓ Sistema de colisiones preciso
✓ Gestión de eventos (keyboard + touch)
✓ Audio Web API para efectos de sonido
✓ LocalStorage para guardar high score
✓ Código comentado y mantenible
✓ Sin memory leaks ni problemas de rendimiento
Este ejercicio es perfecto para demostrar el poder de Gemini CLI como asistente de desarrollo. Aquí te mostramos cómo aprovecharlo:
Si quieres ver el verdadero poder de Gemini CLI, intenta este prompt detallado. Copia y pega lo siguiente:
Actúa como un desarrollador senior de videojuegos web. Tu tarea es crear un juego completo y funcional llamado 'Bug Runner', inspirado en el Chrome Dino game.
Requisitos Técnicos:
1. Stack: HTML5 Canvas, CSS3 y Vanilla JavaScript (ES6+).
2. Archivos: Genera `index.html`, `styles.css`, y `game.js`.
3. Assets: NO uses imágenes externas. Usa métodos de canvas para dibujar sprites pixel-art o formas geométricas de colores para representar:
- Jugador (Desarrollador): Un cuadrado azul o sprite generado por código.
- Obstáculos (Bugs): Triángulos rojos o formas "glitchy".
- Power-ups: Círculos verdes o dorados.
4. Responsividad: El juego debe ajustar el canvas al tamaño de la ventana y manejar eventos touch para móviles.
Gameplay:
- Mecánica: Runner infinito con salto (barra espaciadora / tap).
- Obstáculos: 3 tipos de bugs con velocidades/patrones ligeramente diferentes.
- Power-ups: 'Debug Token' que ralentiza el tiempo por 5 segundos.
- Puntuación: Contador visible que incrementa con la distancia. Guardar High Score en LocalStorage.
- Game Loop: Usa `requestAnimationFrame` para 60 FPS estables.
- Estados: Pantalla de inicio, Jugando, Game Over (con botón de reinicio).
Instrucciones adicionales:
- Código limpio, comentado y modular (usa clases para Player, Obstacle, Game).
- Asegúrate de que no haya errores de sintaxis y que el juego sea ejecutable abriendo index.html.
- Incluye un Easter Egg: Si el jugador llega a 1000 puntos, cambia el color de fondo a modo "Matrix".
bug-runner/
├── index.html # Estructura HTML con canvas
├── styles.css # Estilos pixel-art y responsive
├── game.js # Lógica principal del juego
├── player.js # (Opcional) Clase del jugador
├── obstacle.js # (Opcional) Sistema de obstáculos
├── powerup.js # (Opcional) Sistema de power-ups
└── README.md # Documentación del proyecto
requestAnimationFrame para animaciones suaves a 60 FPSwindow.devicePixelRatioTu juego estará completo cuando:
Positive : Este ejercicio combina creatividad, lógica de programación y optimización. Es perfecto para demostrar cómo Gemini CLI puede ser tu pair programmer ideal, ayudándote desde la planificación hasta el debugging.

MCP es un estándar abierto que permite a Gemini conectarse con tus datos y herramientas externas de forma segura. Piensa en ello como "plugins" universales que permiten a la IA leer bases de datos, interactuar con APIs o consultar documentación específica.
Un servidor MCP expone tres tipos de capacidades:
gemini mcp add <alias> <comando_para_iniciar_servidor>
# Ejemplo genérico (Node):
gemini mcp add docs npx -y @acme/mcp-docs-server
-e como variables de entorno:gemini mcp add github npx -y @modelcontextprotocol/server-github -e GITHUB_PERSONAL_ACCESS_TOKEN=tu_token
gemini mcp list
gemini mcp remove <alias>
/tools y /resources (si el servidor soporta recursos).@resource://docs/intro).github, tickets, db).Positive : MCP es un protocolo abierto creado por Anthropic, pero compatible con múltiples sistemas de IA, no solo Gemini.
Imagina que quieres que Gemini tenga acceso instantáneo a la documentación técnica de una librería específica sin tener que buscarla en internet. Para ello usamos servidores de documentación compatibles con MCP como context7.
settings.json (global en ~/.gemini/settings.json o de proyecto en .gemini/settings.json) y añade la entrada para Context7:{
"mcpServers": {
"context7": {
"httpUrl": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Accept": "application/json, text/event-stream"
}
}
}
}
Negative : Usa tu propia API key en CONTEXT7_API_KEY. Tras guardar, reinicia el CLI o usa /memory refresh para recargar la configuración.
Ahora puedes preguntar directamente sobre librerías que antes Gemini no conocía en profundidad.
Prompt:
Busca en la documentación de 'context7' cómo crear una solucion de agentes secuenciales en 'google ADK' explícamelo con un ejemplo.
Gemini usará la herramienta read_resource o similar del servidor context7-docs para obtener la información exacta y responderte con precisión técnica.
Vamos a conectar Gemini CLI con GitHub para que pueda ver tus repositorios, leer issues y revisar pull requests.
gemini mcp add github npx -y @modelcontextprotocol/server-github
gemini mcp add github npx -y @modelcontextprotocol/server-github -e GITHUB_PERSONAL_ACCESS_TOKEN=tu_token_aqui
¡Ahora Gemini es tu asistente de DevOps!
Prompt (Leer Issues):
Lista los últimos 5 issues abiertos en el repositorio 'google-gemini/gemini-cli' y resúmelos.
Prompt (Leer repos):
Dame el top 5 repos de mi cuenta con mas estrellas.
Gemini ejecutará herramientas como github_list_issues o github_read_file proporcionadas por el servidor MCP para traerte esa información en tiempo real.
Positive : Esto es extremadamente útil para code reviews, triage de issues y análisis de dependencias.

Las extensiones de Gemini CLI aumentan las capacidades de la herramienta al agrupar configuraciones de servidores MCP, archivos de contexto (GEMINI.md), comandos personalizados (archivos .toml) y restricciones de herramientas. Son la forma ideal de distribuir flujos de trabajo completos.
Utiliza los siguientes comandos en tu terminal para gestionar tus extensiones:
Instalar una extensión:
gemini extensions install <URL>
Listar extensiones instaladas:
gemini extensions list
Actualizar extensiones:
gemini extensions update
Las extensiones pueden encapsular comandos complejos. Por ejemplo:
gcloud.Ejemplo de instalación (Seguridad):
gemini extensions install https://github.com/google-gemini/gemini-cli-security
Las extensiones son simplemente carpetas que contienen un archivo gemini-extension.json. Este archivo define qué servidores MCP, comandos y contextos se añaden a la CLI.
Positive : Las extensiones transforman Gemini CLI de un chat genérico a una herramienta especializada para tu equipo y proyectos.
Hugging Face ofrece una extensión poderosa que te permite interactuar con modelos de IA, datasets y espacios directamente desde Gemini CLI.
Para instalar la extensión de Hugging Face, ejecuta el siguiente comando en tu terminal:
gemini extensions install https://github.com/huggingface/skills.git --consent
Negative : El flag --consent es necesario para aceptar automáticamente los permisos que requiere la extensión.
Una vez instalada, verifica que la extensión está activa:
gemini extensions list
Deberías ver huggingface/skills en la lista de extensiones instaladas.
Autenticación inicial: dentro de Gemini CLI, ejecuta /mcp auth huggingface-skills para iniciar sesión y autorizar la extensión antes de usarla.
Ahora puedes interactuar con Hugging Face desde Gemini CLI. Aquí algunos ejemplos:
Busca modelos de Hugging Face para tareas de ASR.
Muéstrame datasets de Hugging Face relacionados con sentiment analysis en español.
Dame información sobre el modelo "meta-llama/Llama-2-7b-chat-hf" de Hugging Face:
qué hace, cómo usarlo y sus requisitos.
Usa la skill "HF dataset creator" para redactar nuevas plantillas de clasificación few-shot en español para detectar spam en correos.
Busca Spaces de Hugging Face para generar imágenes con Stable Diffusion.
Positive : Esta extensión es especialmente útil para desarrolladores de ML/AI que trabajan frecuentemente con modelos de Hugging Face.

La extensión de seguridad de Gemini CLI te permite analizar vulnerabilidades, escanear código y mejorar la postura de seguridad de tus proyectos directamente desde la terminal.
Para instalar la extensión de seguridad, ejecuta el siguiente comando:
gemini extensions install https://github.com/gemini-cli-extensions/security
Una vez instalada, verifica que la extensión está activa:
gemini extensions list
Deberías ver security en la lista de extensiones instaladas.
Ahora puedes realizar análisis de seguridad desde Gemini CLI. Aquí algunos ejemplos prácticos:
Analiza la seguridad de mi archivo @src/auth.js y busca vulnerabilidades comunes.
Revisa mi package.json y dime si hay dependencias con vulnerabilidades conocidas.
Escanea mi proyecto en busca de API keys, tokens o credenciales expuestas en el código.
Revisa mi configuración de Docker (@Dockerfile) y sugiere mejoras de seguridad.
Haz una auditoría de seguridad completa del directorio @src/ enfocándote en:
- Inyección SQL
- XSS
- Autenticación insegura
- Manejo de errores
Antes de hacer commit, revisa los cambios actuales (git diff) y
advierte si hay problemas de seguridad en el código modificado.
Analiza mi aplicación web según las vulnerabilidades del OWASP Top 10
y genera un reporte con las que apliquen a mi código.
Revisa mi archivo de configuración de nginx (@nginx.conf) y sugiere
headers de seguridad que debería agregar.
Encuentra todos los puntos de entrada de datos del usuario en mi API
y verifica si tienen validación adecuada.
Puedes integrar la extensión de seguridad en tu pipeline de CI/CD:
# Ejemplo en GitHub Actions o similar
gemini -p "Ejecuta un análisis de seguridad del proyecto y falla si encuentras vulnerabilidades críticas"
Positive : Esta extensión es esencial para desarrolladores que quieren mantener sus proyectos seguros sin salir de la terminal.
Las Skills (Habilidades) permiten extender Gemini CLI con experiencia especializada, flujos de trabajo procedimentales y recursos específicos. A diferencia del contexto general (GEMINI.md) que siempre está activo, las Skills son "expertise bajo demanda".
Una Skill es simplemente un directorio con un archivo SKILL.md. Gemini descubre automáticamente las skills en ~/.gemini/skills (usuario) o .gemini/skills (proyecto).
Vamos a crear una habilidad para que Gemini sea un experto revisor de código.
mkdir -p .gemini/skills/code-reviewer
SKILL.md con la definición:cat > .gemini/skills/code-reviewer/SKILL.md << 'EOF'
---
name: code-reviewer
description:
Experto en revisión de código para estilo, seguridad y performance.
Úsalo cuando el usuario pida "feedback", "revisión" o "check" de su código.
---
# Code Reviewer Instructions
Eres un experto revisor de código. Sigue este proceso:
1. **Analiza**: Revisa los cambios buscando bugs lógicos.
2. **Estilo**: Asegúrate de que cumple con las convenciones del proyecto.
3. **Seguridad**: Busca vulnerabilidades comunes (XSS, SQLi).
4. **Feedback**: Provee una lista de "Puntos Fuertes" y "Mejoras Sugeridas".
EOF
Una vez creada, refresca la memoria y pide una revisión:
/skills reload
Prompt:
Haz un code review de mi archivo game.js
Verás que Gemini activa la tool activate_skill(name="code-reviewer"), carga las instrucciones especializadas y te da un feedback estructurado según lo definiste.
Positive : Las Skills son perfectas para estandarizar procesos en equipos grandes sin saturar el contexto de todos los desarrolladores.
Si ya tienes skills creados por tu equipo o descargados de internet, puedes importarlos fácilmente a tu instalación de Gemini CLI.
Gemini CLI busca skills en dos ubicaciones:
~/.gemini/skills/ - Disponible en todos tus proyectos.gemini/skills/ - Solo disponible en el proyecto actualSi tienes una carpeta con una skill ya creada, simplemente cópiala al directorio de skills:
# Asegúrate de que existe el directorio de skills
mkdir -p ~/.gemini/skills
# Copia la carpeta de la skill
cp -r /ruta/a/mi-skill ~/.gemini/skills/
# Desde la raíz de tu proyecto
mkdir -p .gemini/skills
# Copia la carpeta de la skill
cp -r /ruta/a/mi-skill .gemini/skills/
Si descargaste una skill en formato ZIP, descomprímela directamente en el directorio de skills:
# Asegúrate de que existe el directorio
mkdir -p ~/.gemini/skills
# Descomprime el ZIP en el directorio de skills
unzip mi-skill.zip -d ~/.gemini/skills/
# Desde la raíz de tu proyecto
mkdir -p .gemini/skills
# Descomprime el ZIP
unzip mi-skill.zip -d .gemini/skills/
Después de importar, verifica que la estructura sea correcta. Cada skill debe tener al menos un archivo SKILL.md:
# Listar skills globales
ls -la ~/.gemini/skills/
# Verificar estructura de una skill específica
ls -la ~/.gemini/skills/mi-skill/
# Debería mostrar al menos: SKILL.md
~/.gemini/skills/
├── code-reviewer/
│ ├── SKILL.md # Requerido: definición de la skill
│ ├── templates/ # Opcional: plantillas adicionales
│ └── examples/ # Opcional: ejemplos de uso
├── aws-deployer/
│ └── SKILL.md
└── data-analyst/
├── SKILL.md
└── queries/
Después de importar nuevas skills, recarga la configuración en Gemini CLI:
/skills reload
Para ver todas las skills disponibles en tu sesión actual:
/skills list
# Descargar skill desde un repositorio
cd /tmp
git clone https://github.com/usuario/gemini-skill-ejemplo.git
# Copiar al directorio de skills global
cp -r gemini-skill-ejemplo ~/.gemini/skills/
# O si viene como ZIP
wget https://github.com/usuario/skill/archive/main.zip
unzip main.zip -d ~/.gemini/skills/
mv ~/.gemini/skills/skill-main ~/.gemini/skills/mi-skill
Negative : Asegúrate de revisar el contenido de las skills antes de importarlas, especialmente si provienen de fuentes no confiables.
Positive : Compartir skills entre equipos es una excelente forma de estandarizar flujos de trabajo y mejores prácticas.
Los archivos GEMINI.md son tu memoria persistente: contienen instrucciones que se envían automáticamente al modelo para que no repitas reglas en cada prompt.
~/.gemini/GEMINI.md se aplica a todos tus proyectos.GEMINI.md en el directorio actual y ascendiendo hasta la raíz del repo (carpeta con .git).GEMINI.md de subdirectorios (respeta .gitignore y .geminiignore). Todo se concatena y se muestra en el resumen de contexto.cat > GEMINI.md << 'EOF'
# Instrucciones del Proyecto
- Responde en español y con tono conciso.
- Prefiere ejemplos en TypeScript.
- Pide confirmación antes de ejecutar comandos destructivos.
EOF
api/) para sobre-especificar cuando trabajes allí:mkdir -p api
cat > api/GEMINI.md << 'EOF'
# Contexto API
- Usa FastAPI y tipado estricto.
- Resume antes de proponer cambios grandes.
EOF
@:mkdir -p docs
cat > docs/guia.md << 'EOF'
- Sigue el estilo de commits convencional.
- Ejecuta pruebas con `npm test` antes de sugerir deploy.
EOF
cat > GEMINI.md << 'EOF'
# Instrucciones del Proyecto
@./docs/guia.md
- Mantén las respuestas breves.
EOF
Refresca y valida que se cargaron todas las capas:
/memory refresh
/memory show
Haz una pregunta genérica (ej. ¿Cómo imprimo texto en la consola?) y notarás que respeta el estilo definido.
/memory show: inspecciona el contexto concatenado que verá el modelo./memory add <texto>: añade instrucciones rápidas a ~/.gemini/GEMINI.md sin abrir el editor./memory refresh: vuelve a escanear todos los GEMINI.md tras editar o mover archivos.Tip : Si necesitas usar otro nombre de archivo (ej. CONTEXT.md), puedes configurarlo en settings.json con context.fileName (ver siguiente sección).
settings.json controla el comportamiento del CLI (modelos, UI, contexto, seguridad). Puedes tener uno global y otro por proyecto; el del proyecto sobrescribe al global.
~/.gemini/settings.json para preferencias generales..gemini/settings.json para reglas del repo (se aplica al ejecutarse dentro del proyecto)./etc/gemini-cli/settings.json o equivalente por OS./settings para abrir el editor interactivo./memory refresh si cambiaste context.{
"model": { "name": "gemini-2.0-flash-exp" },
"ui": { "useFullWidth": true, "showCitations": true },
"context": {
"fileName": ["GEMINI.md", "CONTEXT.md"],
"loadMemoryFromIncludeDirectories": true
},
"tools": { "autoAccept": false }
}
"apiKey": "$GEMINI_API_KEY".false; evita dejar opciones obsoletas.¡Felicidades! Has completado el taller avanzado de Gemini CLI.
✅ Gestión: Instalación, autenticación y comandos básicos ✅ Archivos: Lectura (@) y organización automática ✅ Internet: Búsqueda y lectura de webs (google_web_search, web_fetch) ✅ MCP: Conexión avanzada con datos externos (GitHub, Docs) ✅ Extensiones: Ampliación modular de capacidades ✅ Memoria: Personalización persistente con GEMINI.md
Positive : ¡Gracias por participar en este taller! No dudes en experimentar y explorar todas las capacidades de Gemini CLI.