Full production deployment pipeline: merge development to main, run /test-all fixing all errors, commit, push to trigger GitHub Actions, and monitor the workflow until deployment completes. Use when the user says "pase a producción", "hagamos un pase", "deploy to production", "pasamos a prod", "subamos a producción", or "vamos a producción".
75
94%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Eres el orquestador de deploys de Nicolify. Tu objetivo es llevar el código desde ramas dispersas hasta producción con cero intervención manual, verificando calidad en cada paso.
El usuario puede decir:
Antes de tocar nada, entender el estado completo:
git status
git branch -a
git log --oneline -10
git stash listVerificar:
git fetch --prune originReportar al usuario:
"Encontré X ramas con cambios pendientes: [lista]. ¿Procedo a mergear todas a main, o excluyo alguna?"
Si el usuario ya indicó exclusiones, proceder sin preguntar.
git checkout main
git pull origin maingit merge developmentSi hay conflictos:
git log --oneline -20 # verificar que todos los commits están en mainNO pushear todavía. Primero pasar las pruebas.
Objetivo: Correr la suite smoke de Playwright localmente antes de pushear a main. Se ejecuta NATIVAMENTE en Linux (no Docker — Docker crashea la laptop).
docker compose up -d.env en la raíz del repo con credenciales Clerk E2Ecd frontend && npx playwright test --project=smokeEsto corre 32 smoke tests en ~2 minutos. playwright.config.ts carga .env automáticamente.
SUCCESS (32 passed): Continuar con Fase 3 (verificación local lint+tests).
FAILURE:
error-context.md en frontend/test-results/*/E2E_CLERK_USER_PASSWORD del .env.first() al locator del POMtest-results/ tiene permisos root: docker run --rm -v $PWD/frontend:/f alpine sh -c 'rm -rf /f/test-results/'NOTA: Si el usuario pide "pase rápido" o indica urgencia, se puede saltar esta fase. E2E NO es parte del pase a producción real (push a main) — es validación extra.
Esta fase se divide en dos sub-fases. Las dos son blocker antes del push. Saltarse 3b porque "el nativo pasó" reproduce el ciclo de 5 deploys fallidos del 2026-04-27 (env vars, TZ=UTC, Node heap, dockerignore).
/test-all nativo (rápido, ~30-60s)Invocar el skill /test-all completo. Esto ejecuta:
Invocar el script que replica el job quality-gates del workflow CI:
bash scripts/ci-parity.sh
# or:
make ci-parityConstruye las MISMAS imágenes Docker que CI (target=test de
backend/Dockerfile y frontend/Dockerfile) y corre las mismas
verificaciones con TZ=UTC y NODE_OPTIONS=--max-old-space-size=4096.
Por qué este gate es no-negociable (resumido — full table en
/test-all.md Step 12):
| Diferencia | Falla histórica |
|---|---|
backend/.env.test ≠ backend/.env | Kimi K2 temperature clamp tests |
| TZ=UTC vs host UTC-3..-5 | Lima locale period window |
| Node heap ~1GB en container | tsc --noEmit OOM SIGABRT |
.dockerignore excluye data/ | test_seed_marketing_kb FileNotFoundError |
Si ci-parity falla pero /test-all nativo pasó: el problema es el
ambiente CI, NO el código. Investigar y arreglar antes del push (no
empujar y arreglar en CI loop).
Para cada error encontrado en 3a o 3b:
Orden de prioridad de fixes:
Si un fix en un módulo rompe otro módulo:
Repetir 3a + 3b hasta que TODOS los steps pasen. Máximo 3 iteraciones completas. Si después de 3 iteraciones aún falla, reportar los errores restantes y pedir dirección.
Una vez que /test-all pasa completamente:
git add <archivos-modificados> # NUNCA git add . sin revisar
git commit -m "chore(ci): fix all CI errors for production deploy
- [lista de fixes aplicados]
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>"git push origin mainIMPORTANTE: Este push activa el GitHub Actions pipeline (deploy-prod.yml).
Inmediatamente después del push, iniciar monitoreo:
gh run list --branch main --limit 1 --json databaseId,status,conclusion,name,createdAtCada ~30 segundos, verificar el estado:
gh run view <run-id> --json status,conclusion,jobsReportar al usuario en cada check:
SUCCESS:
"Deploy completado exitosamente en X minutos. Pipeline: quality-gates PASS → security-scan PASS → push images PASS. Imágenes publicadas:
ghcr.io/alpacapurpura/visionarias-backend:latestyghcr.io/alpacapurpura/visionarias-frontend:latest"
FAILURE:
"Deploy FALLÓ en el job [nombre]. Error: [detalle]. ¿Quiero investigar y corregir? Si es un fix rápido, puedo hacerlo y re-pushear."
Si falla, ofrecer investigar los logs:
gh run view <run-id> --log-failedSolo después de un deploy exitoso:
git checkout development
git merge main## Pase a Producción — Resumen
| Fase | Resultado |
|---|---|
| Ramas mergeadas | X de Y |
| CI fixes aplicados | N archivos modificados |
| /test-all | PASS (X iteraciones) |
| GitHub Actions | SUCCESS (Xm Xs) |
| Ramas limpiadas | X eliminadas |
Deploy ID: <run-id>
Imágenes: ghcr.io/alpacapurpura/visionarias-{backend,frontend}:latestgit push --force a maingit revert HEAD + push (NUNCA force push)caa08df
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.