Flujo General del Equipo
Todo trabajo nace en Trello y termina en producción vía Pull Request. Ningún cambio al código llega a main sin haber pasado por este pipeline completo.
Principio base: el estado de la tarjeta en Trello debe reflejar siempre el estado real del trabajo. Si una tarea está en desarrollo, la tarjeta está en "En desarrollo". Si está en PR abierto, pasa a "En revisión".
Integración con Trello
Trello es el punto de partida y cierre de todo trabajo. El tablero tiene columnas fijas que representan el ciclo de vida de cada tarea.
Columnas del tablero
| Columna | Significado | Responsable |
|---|---|---|
| Backlog | Ideas y tareas pendientes de priorizar | PM / Lead |
| En análisis | Tarea siendo estimada o con dudas por resolver | Dev asignado |
| Ready | Tarea clara, estimada y lista para desarrollarse | PM / Lead |
| En desarrollo | Dev trabajando activamente. Ya existe su branch | Dev asignado |
| En revisión | PR abierto esperando aprobación | Reviewer |
| QA / Testing | Mergeado a develop, en pruebas | QA / Dev |
| Done | Mergeado a main y en producción | — |
Reglas de las tarjetas
- 01Cada tarjeta debe tener un responsable asignado. Sin asignado, nadie lo hace.
- 02El título de la tarjeta debe ser claro y accionable: "Agregar autenticación con Google", no "auth".
- 03La descripción debe incluir: qué se espera, criterios de aceptación y cualquier restricción técnica relevante.
- 04El ID de la tarjeta (ej:
KY-42) debe usarse en el nombre del branch y en los commits. - 05Al abrir el PR, se adjunta el link de la tarjeta Trello en la descripción del PR.
- 06Al mergear el PR, la tarjeta se mueve manualmente (o por automatización) a Done.
Naming convention de tarjetas
Configura el prefijo del proyecto en Trello (ej: KY para Koyere) y usa numeración incremental: KY-1, KY-2, etc. Para obtener IDs numéricos automáticos en Trello, activa el Power-Up Card Numbers desde el menú del tablero. Este ID es la referencia que une Trello ↔ Git.
Etiquetas de Trello
Cada etiqueta responde una pregunta distinta de un vistazo. Si dos etiquetas dicen lo mismo, una sobra. Se usan en combinación: tipo + prioridad + estado especial.
Por tipo de trabajo — ¿qué es esto?
| Etiqueta | Color | Cuándo usarla |
|---|---|---|
| feature | 🔵 Azul | Nueva funcionalidad para el usuario |
| bug | 🔴 Rojo | Algo roto que hay que arreglar |
| hotfix | 🟠 Naranja | Bug crítico que está afectando producción ahora |
| refactor | 🟣 Morado | Mejora interna sin cambio visible al usuario |
| docs | ⚪ Gris | Documentación, README, guías internas |
| design | 🩷 Rosa | Tarea de UI/UX previa al desarrollo |
| devops | 🟡 Amarillo | Infraestructura, CI/CD, Docker, servidores |
| chore | ⬛ Negro | Dependencias, limpieza, configuración general |
Por prioridad — ¿qué tan urgente es?
| Etiqueta | Color | Criterio |
|---|---|---|
| 🔥 crítico | 🔴 Rojo | Bloquea el negocio o afecta producción. Máximo 1 a la vez. |
| alta prioridad | 🟠 Naranja | Debe entrar en el sprint actual |
| normal | 🔵 Azul | Prioridad estándar, entra cuando haya espacio |
| cuando haya tiempo | ⚫ Gris | Nice-to-have, no bloquea nada |
Regla de prioridades: si hay más de 2 tarjetas con 🔥 crítico al mismo tiempo, el sistema de prioridades perdió sentido. Hay que re-evaluar en equipo.
Por estado especial — ¿hay algo que me detenga?
| Etiqueta | Significado |
|---|---|
| 🚧 bloqueado | Depende de otra tarea, persona externa o decisión pendiente |
| ⏳ esperando cliente | El dev terminó su parte, falta respuesta o aprobación del cliente |
| 🔁 revisión técnica | Necesita discusión de arquitectura antes de arrancar |
| ⚠️ deuda técnica | Se sabe que la solución no es ideal; hay que volver a esto |
Por módulo o contexto
Para proyectos con múltiples áreas o clientes en el mismo tablero, agregar etiquetas de contexto de color neutro:
auth pagos api mobile backend frontend infra cliente-ukri cliente-xyz
Sistema recomendado — set mínimo
# Una tarjeta bien etiquetada combina máximo 3 etiquetas: TIPO → feature | bug | hotfix | refactor | chore PRIORIDAD → 🔥 crítico | alta prioridad | normal ESTADO → 🚧 bloqueado | ⏳ esperando cliente (solo si aplica) MÓDULO → según el proyecto # Ejemplo visual de una tarjeta: 🔵 feature · 🟠 alta prioridad · pagos # → feature nueva, urgente, en el módulo de pagos
Lo que NO hacer con etiquetas
- ✗Más de 10 etiquetas en el sistema: el tablero se vuelve ilegible. Menos es más.
- ✗Etiquetas de estado como "en progreso": para eso están las columnas del tablero.
- ✗Etiquetas de persona como "eduardo": para eso existe la asignación de miembros.
- ✗Etiquetas redundantes con las columnas: si ya tienes la columna "En revisión", no necesitas la etiqueta
en-review.
Checklists Base para Tarjetas
Cada tipo de tarjeta tiene su propio checklist. Se agrega al crear la tarjeta y sirve como contrato entre el dev y el equipo sobre qué significa "terminado".
✅ Checklist: Feature nueva
## Análisis - [ ] Los criterios de aceptación están claros - [ ] Se identificaron dependencias con otras tareas o módulos - [ ] Se estimó el tiempo de desarrollo ## Desarrollo - [ ] Branch creado con el ID de esta tarjeta (feature/KY-XX-nombre) - [ ] El código sigue las convenciones del proyecto - [ ] No hayconsole.log, comentarios de debug ni código muerto - [ ] No se comitearon secrets ni archivos.env- [ ] Manejo de errores implementado (no solo el happy path) ## Testing - [ ] Probado localmente en todos los casos de uso - [ ] Casos borde identificados y probados - [ ] Tests unitarios agregados o actualizados (si aplica) ## Pull Request - [ ] Rebase condevelophecho, sin conflictos - [ ] CI pasa en verde - [ ] PR abierto con link a esta tarjeta - [ ] Screenshots adjuntos en el PR (si hay cambios visuales) - [ ] Tarjeta movida a "En revisión"
🐛 Checklist: Bug fix
## Diagnóstico
- [ ] El bug está reproducido localmente
- [ ] Se identificó la causa raíz (no solo el síntoma)
- [ ] Se documentó cómo reproducirlo en la descripción de la tarjeta
## Desarrollo
- [ ] Branch creado: fix/KY-XX-descripcion
- [ ] El fix resuelve la causa raíz, no solo oculta el síntoma
- [ ] No se introdujeron cambios no relacionados al bug
## Validación
- [ ] El bug ya no se reproduce
- [ ] La funcionalidad existente no se rompió (regression check)
- [ ] Test agregado que cubre el caso del bug (para evitar regresión futura)
## Pull Request
- [ ] CI pasa en verde
- [ ] PR abierto con descripción clara del before/after
- [ ] Tarjeta movida a "En revisión"
🚨 Checklist: Hotfix en producción
## Respuesta rápida - [ ] Impacto evaluado: ¿cuántos usuarios afecta? ¿pérdida de datos? - [ ] Equipo notificado en el canal de comunicación - [ ] Branch creado desdemain:hotfix/KY-XX-descripcion## Fix - [ ] Solución mínima y quirúrgica (no refactorizar en un hotfix) - [ ] Probado localmente ## Deploy - [ ] PR aprobado (revisión express, mínimo 1 aprobación) - [ ] Mergeado amain+ tag de versión - [ ] Mergeado de vuelta adevelop- [ ] Verificado en producción post-deploy - [ ] Post-mortem breve documentado en la tarjeta (qué pasó, por qué, cómo evitarlo)
🔧 Checklist: Refactor / Deuda técnica
## Alcance - [ ] Justificación documentada: ¿por qué refactorizar esto ahora? - [ ] Alcance delimitado: qué entra y qué NO entra en este refactor - [ ] Equipo avisado si se tocan módulos compartidos ## Desarrollo - [ ] El comportamiento externo no cambió (misma API, mismos outputs) - [ ] Tests existentes siguen pasando sin modificación - [ ] No se mezclaron features ni fixes con el refactor ## Validación - [ ] Code review con foco en que la lógica sea equivalente - [ ] Performance no degradó (si aplica, benchmark antes/después)
🚀 Checklist: Release
## Pre-release - [ ] Todas las tarjetas del sprint están en "Done" - [ ]developestá estable (CI verde, sin conflictos) - [ ] CHANGELOG actualizado con los cambios de esta versión - [ ] Versión bumpeada según semver (MAJOR.MINOR.PATCH) ## Deploy - [ ] Branchrelease/vX.X.Xcreado y testeado - [ ] Mergeado amaincon tag de versión - [ ] Mergeado de vuelta adevelop- [ ] Deploy ejecutado y verificado en producción ## Post-release - [ ] Cliente/stakeholder notificado - [ ] Monitoreo activo las primeras 2 horas post-deploy - [ ] Todas las tarjetas del release movidas a "Done"
Tip: en Trello puedes guardar estos checklists como plantillas reutilizables. Ve a cualquier tarjeta → Checklist → "Copiar items de…" y selecciona la tarjeta plantilla. Crea una tarjeta oculta por tipo (Feature template, Bug template, etc.) con el checklist vacío y reutilízalas cada vez.
Modelo de Ramas
Se usa un modelo simplificado de Git Flow adaptado a equipos pequeños. Solo existen dos ramas permanentes; el resto son temporales.
Código en producción. Solo recibe merges desde develop en forma de releases. Nadie pushea directo aquí, jamás.
Rama de integración continua. Todas las features y fixes se mergean aquí primero. Debe estar siempre en estado funcional.
Ramas temporales
| Tipo | Formato | Ejemplo |
|---|---|---|
| feature | feature/KY-42-nombre-descriptivo |
feature/KY-42-login-google |
| fix | fix/KY-55-descripcion-bug |
fix/KY-55-error-webhook-pago |
| hotfix | hotfix/KY-60-descripcion |
hotfix/KY-60-crash-produccion |
| release | release/v1.2.0 |
release/v2.0.0 |
| chore | chore/descripcion |
chore/actualizar-dependencias |
Vida corta: una rama de feature no debe vivir más de 3 días hábiles. Si una tarea es demasiado grande, hay que dividirla en subtareas en Trello.
Crear una rama correctamente
# Siempre partir desde develop actualizado git checkout develop git pull origin develop # Crear la rama con el ID de la tarjeta Trello git checkout -b feature/KY-42-login-google # Al terminar, sincronizar antes del PR git fetch origin git rebase origin/develop
Estándar de Commits
Se usa Conventional Commits con el ID de la tarjeta Trello obligatorio. Esto permite trazar cualquier cambio de código a su tarjeta original.
Formato
tipo(scope): descripción en imperativo [KY-42] # Cuerpo opcional: explica el POR QUÉ, no el qué # El qué ya lo dice el diff del código
Tipos de commit
| Tipo | Cuándo usarlo |
|---|---|
feat | Nueva funcionalidad para el usuario |
fix | Corrección de un bug |
refactor | Cambio de código que no agrega ni corrige nada |
docs | Solo cambios en documentación |
test | Agregar o modificar tests |
chore | Build, dependencias, configuración de herramientas |
style | Formato, espacios, comas — sin cambio de lógica |
perf | Mejoras de rendimiento |
Ejemplos correctos
feat(auth): agregar login con Google OAuth [KY-42] fix(api): corregir error 500 en webhook de Wompi [KY-55] refactor(pagos): extraer lógica de validación a servicio propio [KY-61] docs: actualizar README con instrucciones de instalación [KY-30] chore: actualizar dependencias a versiones estables
Ejemplos incorrectos
arregle cosas — no dice qué ni por qué
WIP — trabajo en progreso no debe comitearse (usa git stash)
fix fix fix — no es descriptivo
feat: nuevo login con Google que permite que los usuarios puedan autenticarse usando su cuenta de Google mediante OAuth 2.0 — demasiado largo (máx 72 chars)
Reglas adicionales
- 01Un commit = un cambio lógico. No mezclar feature con fix en el mismo commit.
- 02Usar
git add -ppara staging interactivo. Evita elgit add .irreflexivo. - 03No commitear archivos
.env, credenciales, tokens ninode_modules. Verificar el.gitignoreantes del primer commit del proyecto. - 04Si el commit rompe un build o test, se corrige en el mismo branch antes de abrir el PR. No se sube código roto.
Pull Requests
El PR es la unidad de entrega del equipo. Representa una tarea de Trello completada y lista para integrar.
Cuándo abrir un PR
- ✓La funcionalidad está completa y funcionando localmente.
- ✓Se hizo
rebasecondevelopy no hay conflictos pendientes. - ✓El CI (tests, lint) pasa en verde.
- ✓El código fue auto-revisado por el autor antes de subir.
Template del PR
## ¿Qué hace este PR? Descripción clara y concisa del cambio. ## Trello https://trello.com/c/xxxxx/KY-42-login-google ## Tipo de cambio - [ ] Nueva feature - [ ] Bug fix - [ ] Refactor - [ ] Documentación ## Checklist - [ ] Mi código sigue las convenciones del proyecto - [ ] Hice auto-review de mis cambios - [ ] No hay secrets ni datos sensibles - [ ] El CI pasa en verde - [ ] Agregué/actualicé tests si aplica ## Screenshots (si aplica)
Tamaño del PR
| Tamaño | Líneas cambiadas | Evaluación |
|---|---|---|
| ✅ Ideal | < 200 líneas | Fácil de revisar, merge rápido |
| ⚠️ Aceptable | 200 – 500 líneas | Justificar por qué no se dividió |
| ❌ Problemático | > 500 líneas | Dividir en subtareas antes de continuar |
Un PR grande es señal de que la tarjeta de Trello fue mal estimada o mal dividida. El problema se resuelve en la planificación, no en el merge.
Draft PRs
Si necesitas feedback temprano antes de terminar, abre un Draft PR. Esto comunica al equipo que el trabajo está en progreso y no está listo para merge. Convierte a PR normal cuando esté listo.
Code Review
El code review protege la calidad del código y distribuye el conocimiento del proyecto en el equipo. Nadie aprueba su propio PR.
Responsabilidades del reviewer
- 01Revisar en un plazo máximo de 24 horas hábiles desde que se asignó el PR.
- 02Verificar que el PR cumple con los criterios de aceptación de la tarjeta Trello.
- 03Probar el cambio localmente si es una feature crítica o si afecta partes sensibles del sistema.
- 04Comentar de forma constructiva. El objetivo es mejorar el código, no criticar al autor.
Tipos de comentario
El PR no puede mergearse hasta resolverlo. Bug, security issue, violación de arquitectura, etc.
Mejora recomendada. El autor puede aplicarla o justificar por qué no. No bloquea el merge.
Detalle menor de estilo o preferencia. El autor decide si lo aplica. Nunca bloquea.
Reconocer buenas decisiones o código bien escrito. El feedback positivo también importa.
Cómo dar feedback
Bien: "SUGGESTION: Podríamos extraer esta función a un helper para reutilizarla en el módulo de pagos también."
Mal: "Esto está mal hecho" — sin contexto, sin solución propuesta, actitud negativa.
El autor ante los comentarios
- 01Responder a cada comentario: aplicar el cambio, o explicar por qué no aplica.
- 02Marcar la conversación como "Resolved" una vez atendida.
- 03No tomar el feedback de forma personal. Es sobre el código, no sobre la persona.
Merge y Release
Estrategia de merge
| Tipo | Estrategia | Por qué |
|---|---|---|
| feature/fix → develop | Squash merge | Un commit limpio por feature en develop |
| develop → main | Merge commit (--no-ff) | Preserva el historial de releases |
| hotfix → main | Merge commit | Trazabilidad del hotfix |
Proceso de release
# 1. Crear rama de release desde develop git checkout develop && git pull git checkout -b release/v1.2.0 # 2. Actualizar versión y CHANGELOG # (actualiza package.json o version.txt según el proyecto) git commit -m "chore: bump version to 1.2.0" # 3. Mergear a main git checkout main git merge --no-ff release/v1.2.0 # 4. Taggear la versión git tag -a v1.2.0 -m "Release v1.2.0" git push origin main --tags # 5. Mergear de vuelta a develop para sincronizar git checkout develop git merge --no-ff release/v1.2.0 git push origin develop # 6. Eliminar la rama de release git branch -d release/v1.2.0
Hotfixes en producción
# Los hotfix nacen desde main, no desde develop git checkout main && git pull git checkout -b hotfix/KY-99-crash-login # Fix, commit, PR → aprobación rápida # Merge a main + tag # Luego sincronizar develop también git checkout develop git merge --no-ff hotfix/KY-99-crash-login
Versionado semántico
v1.0.0 → formatoMAJOR.MINOR.PATCH
MAJOR: cambios que rompen compatibilidad
MINOR: features nuevas
PATCH: bug fixes
Las 10 Reglas de Oro
Estas reglas no son opcionales. Son el acuerdo del equipo.
- 01Nadie pushea directo a
mainni adevelop. Todo entra por PR con al menos una aprobación. - 02Sin tarjeta Trello, no hay branch. Todo trabajo tiene su tarea correspondiente antes de escribir código.
- 03Ramas de vida corta. Máximo 3 días hábiles. Si tarda más, la tarea es demasiado grande.
- 04Commits atómicos y descriptivos. Un commit, un cambio lógico. Con el ID de Trello siempre.
- 05El CI es ley. Si el pipeline falla, el PR no se mergea. No hay excepciones.
- 06Nadie revisa su propio PR. El autor abre, otro aprueba.
- 07Reviews en máximo 24 horas hábiles. Un PR esperando revisión está bloqueando al equipo.
- 08Cero secrets en el repositorio. Variables de entorno, tokens, contraseñas — nunca en git.
- 09La tarjeta Trello sigue el estado real. Si estás en desarrollo, la tarjeta dice "En desarrollo". Sin excepciones.
- 10Comunicar antes de tocar código compartido. Si vas a refactorizar un módulo que otros usan, avisar en el canal del equipo primero.
Recuerda: estas reglas no existen para complicar el trabajo, sino para que el equipo pueda moverse rápido sin romperse entre sí. Un proceso claro reduce conflictos, reuniones y tiempo perdido arreglando errores que se pudieron evitar.
Herramientas del Equipo
Git hooks con Husky
# Instalar npm install --save-dev husky commitlint @commitlint/config-conventional # commitlint.config.js module.exports = { extends: ['@commitlint/config-conventional'] } # Hook: rechaza commits mal formateados automáticamente
Alias útiles de Git
git config --global alias.lg "log --oneline --graph --all --decorate" git config --global alias.st "status -sb" git config --global alias.undo "reset --soft HEAD~1" git config --global alias.save "stash push -m"
.gitignore base
# Entorno .env .env.local .env.*.local # Dependencias node_modules/ vendor/ # Builds dist/ build/ *.jar *.class # IDE .idea/ .vscode/ *.iml # OS .DS_Store Thumbs.db