14. Desarrollo interno / contribución

Objetivo del tema

Aprender cómo está organizado el proyecto de Gemini CLI, cómo configurar el entorno de desarrollo, ejecutar pruebas y entender la automatización usada en GitHub.

Si quieres contribuir al repositorio oficial o mantener un fork, esta guía resume los pasos recomendados por el equipo.

14.1 Estructura del proyecto

Gemini CLI es un monorepo de TypeScript administrado con npm. Los paquetes principales son:

Ruta Contenido
packages/cli Interfaz de terminal (frontend). Maneja el REPL, comandos, prompts y UI.
packages/core Servidor local (backend). Gestiona herramientas, memoria, telemetría, sandbox y comunicación con la API de Gemini.
packages/tools Implementaciones compartidas de herramientas (filesystem, shell, web, etc.).
packages/mcp Componentes relacionados con el Model Context Protocol.
packages/companion Especificación y utilidades para plugins de IDE (companion spec).

Consulta package.json en la raíz para ver scripts globales; cada paquete tiene su propio package.json con scripts específicos.

14.2 Configuración del entorno

  1. Clona el repositorio:
    git clone https://github.com/google-gemini/gemini-cli.git
    cd gemini-cli
  2. Instala dependencias (en la raíz):
    npm install
  3. Compila los paquetes y prepara los enlaces:
    npm run build
    npm run link

El script npm run link suele registrar los paquetes localmente para poder ejecutar la versión en desarrollo con npm run start (CLI) o npm run dev según la configuración actual.

Si trabajas en extensiones o plugins, podrías necesitar npm run package en paquetes concretos para generar artefactos.

14.3 Pruebas y calidad

  • Pruebas unitarias: ejecuta npm test o los scripts definidos en cada paquete.
  • Linter / formateo: el repo utiliza herramientas como eslint y prettier; busca en package.json scripts como npm run lint o npm run format.
  • Pruebas integrales: existen suites para validar comandos, herramientas y flujos de extensiones. Revisa packages/core y packages/tools para scripts específicos.
  • Tipo de compilación: npm run build utiliza tsc o esbuild según el paquete para generar dist/.

Antes de enviar un PR, asegúrate de que el linter y las pruebas pasen localmente.

14.4 Automatización en GitHub

El repositorio usa varias GitHub Actions:

  • Inicialización del repositorio: la PR Add Gemini automation configuró scripts para crear issues y PRs con prompts y etiquetado automático.
  • Triaging de issues:
    • Al abrir un issue, un bot ejecuta el CLI con un prompt de triage, aplica etiquetas y categorías.
    • Un workflow programado revisa periódicamente issues sin etiqueta y aplica las faltantes.
  • Releases:
    • Flujos para nightly builds (publican versiones -nightly en npm y GitHub).
    • Flujos manuales para releases oficiales: actualizan versiones, empaquetan y publican en npm + GitHub Releases.

Como contribuidor, solo necesitas abrir issues o PRs; la automatización se ocupa de etiquetar, comparar y publicar según corresponda.

14.5 Buenas prácticas para PRs

  • Mantén los cambios acotados y describe claramente el objetivo en el PR.
  • Incluye resultados de pruebas o pasos de verificación en la descripción.
  • Sigue las guías de estilo (lint) y conventions (nombres de scripts, commit semántico si aplica).
  • Consulta el archivo CONTRIBUTING.md para requisitos adicionales (CLA, revisores, etc.).

Conclusión: contribuir a Gemini CLI implica dominar el monorepo, ejecutar scripts de build/test y conocer las automatizaciones que mantienen el proyecto. Con un entorno configurado y las pruebas al día, tus PRs se integrarán con facilidad en los releases oficiales.