CLIs Esenciales que Todo Desarrollador Debería Conocer
Si llevas poco tiempo en el desarrollo de software, es probable que hayas escuchado el término CLI (Command Line Interface). En términos simples, es una herramienta que usas desde la terminal para interactuar con servicios, automatizar tareas y acelerar tu flujo de trabajo.
En este artículo te presento las CLIs que uso en mi día a día y que considero fundamentales para cualquier desarrollador. Muchas de ellas te van a ahorrar horas de trabajo.
Tabla de Contenidos
1. GitHub CLI
¿Qué es?
gh es la CLI oficial de GitHub. Te permite gestionar repositorios, pull requests, issues y mucho más sin salir de la terminal. Si ya usas Git en tu día a día, esta herramienta lleva tu productividad al siguiente nivel.
Instalación
# macOS
brew install gh
# Windows (con winget)
winget install --id GitHub.cli
# Linux (Debian/Ubuntu)
sudo apt install gh
Después de instalar, autentícate con tu cuenta:
gh auth login
Comandos esenciales
# Clonar un repositorio de forma interactiva
gh repo clone usuario/repositorio
# Crear un nuevo repositorio desde la terminal
gh repo create mi-proyecto --public
# Ver la lista de pull requests abiertos
gh pr list
# Crear un pull request rápidamente
gh pr create --title "feat: nueva funcionalidad" --body "Descripción del cambio"
# Ver y aprobar un pull request
gh pr view 42
gh pr merge 42
# Listar issues del repositorio
gh issue list
# Crear un issue nuevo
gh issue create --title "Bug en el login" --body "Descripción del bug"
Caso de uso real
Imagina que terminas de trabajar en una nueva feature. Con GitHub CLI puedes hacer todo el flujo sin abrir el navegador:
git add .
git commit -m "feat: agregar autenticación con Google"
git push origin feature/google-auth
gh pr create --title "feat: autenticación con Google" --body "Implementa OAuth con Google"
En segundos tu PR está creado y listo para revisión.
2. Supabase CLI
¿Qué es?
Supabase es una alternativa open source a Firebase. Su CLI te permite gestionar tu base de datos, migraciones, funciones Edge y variables de entorno directamente desde la terminal. Ideal para trabajar con proyectos locales antes de hacer deploy.
Instalación
# macOS
brew install supabase/tap/supabase
# Windows / Linux (con npm)
npm install -g supabase
# O con npx (sin instalación global)
npx supabase --version
Inicia sesión con tu cuenta de Supabase:
supabase login
Comandos esenciales
# Iniciar Supabase en tu proyecto local (levanta Docker)
supabase init
supabase start
# Ver el estado de los servicios locales
supabase status
# Crear una nueva migración de base de datos
supabase migration new nombre_de_la_migracion
# Aplicar las migraciones pendientes
supabase db push
# Generar los tipos de TypeScript desde tu esquema de base de datos
supabase gen types typescript --local > types/supabase.ts
# Detener los servicios locales
supabase stop
Caso de uso real
Cuando trabajas con Supabase en local, puedes hacer cambios en tu base de datos y generar automáticamente los tipos de TypeScript para tu proyecto:
# Haces un cambio en la tabla de usuarios
supabase migration new add_avatar_to_users
# Escribes el SQL en el archivo generado, luego aplicas
supabase db push
# Regeneras los tipos para que tu editor tenga autocompletado
supabase gen types typescript --local > src/types/supabase.ts
Así siempre tienes tu código sincronizado con tu base de datos.
3. Playwright CLI
¿Qué es?
Playwright es una librería de automatización de navegadores creada por Microsoft. Su CLI te permite ejecutar pruebas end-to-end (E2E), grabar interacciones del usuario y depurar tus tests. Perfecta para asegurarte de que tu aplicación web funciona correctamente antes de hacer deploy.
Instalación
# Dentro de tu proyecto Node.js
npm init playwright@latest
# O instalar solo el paquete
npm install -D @playwright/test
# Instalar los navegadores necesarios
npx playwright install
Comandos esenciales
# Ejecutar todos los tests
npx playwright test
# Ejecutar tests con interfaz visual (modo UI)
npx playwright test --ui
# Ejecutar un archivo de test específico
npx playwright test tests/login.spec.ts
# Ver el reporte de los últimos tests ejecutados
npx playwright show-report
# Modo debug: ejecuta los tests paso a paso
npx playwright test --debug
# Grabar un test desde cero (muy útil para principiantes)
npx playwright codegen http://localhost:3000
Caso de uso real
El comando codegen es increíblemente útil cuando estás aprendiendo. Abre un navegador y graba todas las interacciones que haces (clics, inputs, navegación) y genera automáticamente el código del test:
npx playwright codegen http://localhost:3000
Interactúas con la app normalmente y Playwright escribe el test por ti. Luego lo guardas en tu proyecto y ya tienes cobertura de pruebas sin escribir casi nada desde cero.
4. CLIs de la Nube
Cuando empiezas a desplegar aplicaciones en la nube, las CLIs de los proveedores se vuelven indispensables. Aquí las dos que más uso:
AWS CLI
¿Qué es?
La CLI de Amazon Web Services te permite interactuar con todos los servicios de AWS directamente desde la terminal: subir archivos a S3, gestionar funciones Lambda, configurar instancias EC2 y mucho más.
Instalación
# macOS
brew install awscli
# Windows
winget install -e --id Amazon.AWSCLI
# Linux
sudo apt install awscli
# Verificar instalación
aws --version
Configura tus credenciales:
aws configure
# Te pedirá: Access Key ID, Secret Access Key, región y formato de salida
Comandos esenciales
# Listar todos los buckets de S3
aws s3 ls
# Subir un archivo a S3
aws s3 cp archivo.txt s3://mi-bucket/archivo.txt
# Sincronizar una carpeta local con S3 (útil para deployar sitios estáticos)
aws s3 sync ./dist s3://mi-bucket --delete
# Listar funciones Lambda
aws lambda list-functions
# Listar instancias EC2
aws ec2 describe-instances --query "Reservations[*].Instances[*].{ID:InstanceId,State:State.Name}"
Caso de uso real
Una de las tareas más comunes es desplegar una app frontend estática (como un build de Next.js o Vite) a S3:
npm run build
aws s3 sync ./dist s3://mi-sitio-web --delete
Con --delete se eliminan los archivos que ya no existen en el build local, dejando el bucket sincronizado perfectamente.
Railway CLI
¿Qué es?
Railway es una plataforma de deploy moderna pensada para desarrolladores. Su CLI te permite deployar proyectos, gestionar variables de entorno, ver logs y conectarte a tus servicios sin necesidad de abrir el dashboard.
Instalación
# macOS / Linux
npm install -g @railway/cli
# O con Homebrew
brew install railway
# Verificar instalación
railway --version
Autentícate:
railway login
Comandos esenciales
# Iniciar Railway en tu proyecto actual
railway init
# Hacer deploy del proyecto
railway up
# Ver los logs en tiempo real
railway logs
# Abrir el dashboard del proyecto en el navegador
railway open
# Gestionar variables de entorno
railway variables set DATABASE_URL=postgres://...
railway variables
# Ejecutar un comando en el entorno de Railway (útil para migraciones)
railway run npx prisma migrate deploy
Caso de uso real
Una de las cosas más prácticas de Railway CLI es poder correr migraciones de base de datos directamente en producción sin abrir el dashboard:
railway run npx prisma migrate deploy
También puedes ver los logs de tu app en tiempo real para depurar un error en producción:
railway logs --tail
5. HTTP Tunnels
Los túneles HTTP son herramientas que exponen tu servidor local a internet con una URL pública. Son esenciales cuando necesitas probar webhooks, mostrar tu trabajo a un cliente o integrar servicios externos que requieren una URL accesible.
Cloudflared
¿Qué es?
cloudflared es la CLI de Cloudflare Tunnel. Te permite crear un túnel seguro entre tu máquina local y la red de Cloudflare, exponiendo tu servidor a internet sin necesidad de configurar firewall ni abrir puertos. Puedes ver más en clis.dev/cli/cloudflared.
Instalación
# macOS
brew install cloudflared
# Windows
winget install --id Cloudflare.cloudflared
# Linux (Debian/Ubuntu)
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb
Comandos esenciales
# Crear un túnel rápido (sin cuenta) hacia tu servidor local en el puerto 3000
cloudflared tunnel --url http://localhost:3000
# Autenticarte con tu cuenta de Cloudflare
cloudflared login
# Crear un túnel con nombre propio
cloudflared tunnel create mi-tunel
# Ejecutar el túnel configurado
cloudflared tunnel run mi-tunel
Caso de uso real
Estás desarrollando una integración con Stripe y necesitas que los webhooks lleguen a tu servidor local. Solo ejecutas:
cloudflared tunnel --url http://localhost:3000
Cloudflare te da una URL pública tipo https://abc123.trycloudflare.com. La pegas en la configuración de webhooks de Stripe y empiezas a recibir eventos en tu máquina local.
ngrok
¿Qué es?
ngrok es la herramienta de túneles HTTP más popular. Similar a Cloudflared, expone tu servidor local con una URL pública. Tiene una interfaz web integrada para inspeccionar el tráfico que llega, lo que la hace perfecta para depurar webhooks.
Instalación
# macOS
brew install ngrok
# Windows (con winget)
winget install ngrok.ngrok
# Linux
snap install ngrok
# También disponible como binario descargable desde https://ngrok.com/download
Configura tu token de autenticación (necesitas crear una cuenta gratuita):
ngrok config add-authtoken TU_TOKEN_AQUI
Comandos esenciales
# Exponer el puerto 3000 a internet
ngrok http 3000
# Exponer con un dominio personalizado (plan de pago)
ngrok http --domain=mi-app.ngrok-free.app 3000
# Exponer una conexión TCP (para bases de datos, SSH, etc.)
ngrok tcp 22
# Ver el estado de tus túneles activos
ngrok tunnels list
Caso de uso real
Además de los webhooks, ngrok es ideal para mostrarle tu trabajo a un cliente o compañero de equipo sin necesidad de hacer deploy:
ngrok http 3000
Te genera una URL como https://abc123.ngrok-free.app que puedes compartir. Tu cliente abre esa URL en su navegador y ve tu aplicación corriendo en local. Perfecto para demos rápidas.
Recursos adicionales
Si quieres explorar más CLIs útiles para tu flujo de trabajo, te recomiendo visitar clis.dev, un directorio curado con herramientas de línea de comandos clasificadas por categoría.
Conclusión
Estas son las CLIs que considero esenciales para cualquier desarrollador que esté comenzando. No tienes que aprenderlas todas de una vez. Mi recomendación:
- Empieza con GitHub CLI — la usarás en casi todos tus proyectos.
- Agrega Railway CLI cuando hagas tu primer deploy.
- Integra Supabase CLI si trabajas con bases de datos.
- Aprende Playwright cuando quieras agregar tests a tu app.
- Ten siempre a mano ngrok o cloudflared para trabajar con webhooks.
El dominio de estas herramientas marca una gran diferencia en la productividad. ¡A practicar!