Luna genera mensajes de commit concisos usando la API de OpenRouter, permitiéndote usar tu propia clave y elegir cualquier modelo compatible.
- Selector de archivos interactivo: elige qué archivos modificados poner en staging, directo desde la TUI
- Commits por archivo: un commit por cada archivo seleccionado
- Impulsado por OpenRouter: resúmenes AI basados en los diffs de los archivos, usando el modelo que elijas
- Prefijos convencionales: agrega el prefijo si falta
- Emojis elegidos por la IA: con
-e, el modelo elige un emoji estilo gitmoji que coincide con la intención del commit - Control de longitud: objetivo < 60 caracteres, máximo configurable (por defecto 72)
- Filtrado inteligente: ignora binarios e imágenes comunes
- Lista todos los archivos modificados vía
git status --porcelain(modificados, en staging, sin seguimiento), excepto los ignorados - Eliges qué archivos incluir:
↑/↓para moverte,espaciopara seleccionar,apara seleccionar todos,enterpara confirmar - Pone en staging los archivos seleccionados (
git add) y los procesa uno por uno - Envía el diff de cada archivo al modelo de OpenRouter configurado
- Si
-eestá activo, el modelo antepone un emoji acorde a la mensaje; si la respuesta no tiene un prefijo conocido, se elige uno al azar entre:chore:,refactor:,feat:,fix:,docs:,test:, etc. - Trunca a
maxCommitLengthy realiza el commit congit commit -m <mensaje> -- <archivo>
- Windows
- Git instalado y disponible en el PATH
- Clave API de OpenRouter (
https://openrouter.ai/keys) - Una Nerd Font configurada como fuente de la terminal, para que los íconos de la interfaz se vean correctamente
- Copia
bin/Luna.exea un directorio, por ejemploC:\Users\usuario\Luna - Agrega esa carpeta al PATH del sistema:
- Presiona
Win + R, ejecutasysdm.cpl, abre "Variables de entorno" - Edita la variable
Path→ "Nuevo" → pega la ruta de la carpeta - Guarda y reabre la terminal
- Presiona
$ go build -o ./bin/Luna.exe main.goO usa el script auxiliar:
$ ./build.shLuna lee la configuración desde archivos de proyecto y globales:
- Proyecto:
.lunacfg(en la raíz del repositorio o en el directorio padre más cercano) - Global:
.lunarc(en el directorio home del usuario)
Prioridad:
- Clave API y modelo: Global → Proyecto → Predeterminado
- Otras configuraciones: Proyecto → Predeterminado
Configuración predeterminada (desde el código):
ignoredPatterns:*.exe,*.dll,*.png,*.jpg,*.jpeg,*.gif,*.bincommitPrefixes:chore:,refactor:,feat:,fix:,docs:,test:maxCommitLength:72defaultEmoji:false
$ Luna apikey TU_CLAVE_OPENROUTER
$ Luna model openai/gpt-4o-miniEsto guarda la clave y el modelo en tu .lunarc global. Reabre la terminal después de configurarlos. Explora los modelos disponibles en openrouter.ai/models.
Ejecuta Luna dentro de un repositorio Git con cualquier cambio (en staging, sin staging o sin seguimiento) — elegirás qué archivos poner en staging desde la TUI.
help|h: Muestra la ayudacommit|c: Genera y commitea mensajes por archivoapikey <TU_CLAVE>|k <TU_CLAVE>: Configura la clave APImodel <MODEL_ID>|m <MODEL_ID>: Configura el modelo de OpenRouterconfig|cfgcon subcomandos:init: Crea.lunacfgen el directorio actualshow: Muestra la configuración combinadaedit: Placeholder (aún no implementado)
$ Luna commit # o Luna cUsa ↑/↓ para moverte, espacio para seleccionar archivos, a para seleccionar todos, enter para ponerlos en staging y commitearlos.
$ Luna c -e # habilita emojis en los mensajesGenerating commit for file: src/main.go
Committed src/main.go with message:
🚀 feat: add user authentication system
Generating commit for file: README.md
Committed README.md with message:
📝 docs: update installation instructions
- Luna omite archivos binarios/imágenes comunes
- Si el modelo devuelve una respuesta vacía, el fallback es
update <archivo> - Prefijos soportados:
feat:,fix:,docs:,refactor:,test:,chore: maxCommitLengthse aplica siempre (por defecto 72)
- Error:
Set your API key first: luna apikey <KEY>- Ejecuta
Luna apikey TU_CLAVEy reabre la terminal
- Ejecuta
- Error:
Set your model first: luna model <MODEL_ID>- Ejecuta
Luna model MODEL_ID(ver openrouter.ai/models)
- Ejecuta
- Error al ejecutar comandos Git
- Verifica que estés dentro de un repositorio Git y que Git esté instalado
- No se encontraron cambios
- No aparece nada en
git status; modifica o crea un archivo primero
- No aparece nada en
- La clave API no funciona
- Verifica que la clave sea válida y que el modelo elegido esté disponible en tu cuenta de OpenRouter
Hecho con ❤️ por hax — versión 1.3 (Beta)