Flujo de ramas del equipo
El equipo usa el siguiente modelo de branching:
- feature/*: Ramas creadas desde
develop o main/master. Agrupan varios PBIs relacionados.
- pbi/*: Ramas creadas desde la rama
feature correspondiente. El PR va de pbi → feature.
- Si hay varios PBIs en un feature, se mergea el primero y los siguientes PBIs se basan en el feature actualizado.
- bug/, hotfix/: Van directo a
main/master/develop.
Pasos
Al escribir una descripción de PR:
- Ejecutar
git branch --show-current para obtener el nombre del branch actual.
- Preguntar al usuario:
a. Plataforma del PR: ¿Azure DevOps o GitHub?
- Si es Azure DevOps: la descripción tiene un límite de 4000 caracteres. Ser conciso.
- Si es GitHub: sin límite de caracteres. Se puede ser más detallado.
b. Rama base contra la cual se compararán los cambios. Sugerir la más probable:
- Si el branch actual es
pbi/* → sugerir la rama feature/* correspondiente.
- Si el branch actual es
feature/* → sugerir develop o main/master.
- Si el branch actual es
bug/* o hotfix/* → sugerir main/master/develop.
- Dejar que el usuario confirme o cambie la sugerencia.
c. ¿Hay cambios de UI/frontend? Si sí, pedir al usuario que proporcione screenshots.
- En GitHub: se embeben directamente en la descripción con
.
- En Azure DevOps: mencionar que se adjuntarán como archivos al PR o incluir como link.
- Ejecutar
git log --oneline [rama-base]..HEAD para ver todos los commits del branch.
- Si el PR es de feature → develop/main/master (PR agregado):
- Ejecutar
git log --oneline --merges [rama-base]..HEAD para identificar los merge commits de PBIs.
- Ejecutar
git log --oneline [rama-base]..HEAD | grep -iE "pbi|merge" para extraer los PBIs incluidos.
- Listar todos los PBIs/branches que se mergearon en el feature.
- Ejecutar
git diff [rama-base]...HEAD --stat para ver el resumen de archivos cambiados.
- Ejecutar
git diff [rama-base]...HEAD para ver todos los cambios en detalle.
- Identificar el número de PBI/ticket del nombre del branch (si existe).
- Detectar si hay endpoints nuevos o modificados (buscar en el diff controllers, rutas HTTP,
[HttpPost], [HttpGet], etc.). Si los hay, documentarlos en la sección de Endpoints.
Formato de salida
Generar primero el título del PR y luego la descripción, siguiendo este template:
**Título del PR:** [Título corto y descriptivo, máximo 70 caracteres, en español]
# Resumen
[1-2 oraciones describiendo el alcance completo del cambio. Ser específico sobre qué se implementó.]
---
## Endpoints
### [N]. [Nombre descriptivo]
`[MÉTODO] [ruta/del/endpoint]` -- descripción breve de qué hace.
Stack: `FilterVM` -> `Business` -> `Controller`.
[Breve explicación del flujo interno: qué datos obtiene, qué valida, qué retorna.]
**Request:**
\```json
{
"Campo1": valor_ejemplo,
"Campo2": "valor_ejemplo"
}
\```
| Campo | Tipo | Requerido | Descripción |
|-------|------|-----------|-------------|
| Campo1 | long | Sí | Descripción del campo |
| Campo2 | string | No | Descripción del campo |
**Response:**
\```json
[
{
"Propiedad1": "valor_ejemplo",
"Propiedad2": 123
}
]
\```
---
## Funcionalidades implementadas
### 1. [Nombre de la funcionalidad]
- Detalle específico del comportamiento implementado
- Componentes o módulos involucrados
- Lógica relevante (cascadas, validaciones, cálculos, etc.)
### 2. [Siguiente funcionalidad]
- ...
---
## Cambios de UI
[Screenshots proporcionados por el usuario. En GitHub embeber con . En Azure DevOps indicar que están adjuntos al PR.]
---
## Archivos modificados
- **[Capa/Área]** ([cantidad]): breve descripción del tipo de cambios (ej: "Business (3): nueva lógica de cálculo de bonos")
- **[Capa/Área]** ([cantidad]): ...
- **Archivos nuevos:** [cantidad] | **Archivos modificados:** [cantidad]
---
## Deuda técnica conocida
| Item | Estado | Notas |
|------|--------|-------|
| [Descripción del item] | [PENDIENTE/BLOQUEADO/EN PROGRESO] | [Contexto adicional] |
Template para PR agregado (feature → develop/main/master)
Cuando el PR es de un feature hacia develop/main/master, usar este template en su lugar:
**Título del PR:** [Título corto y descriptivo, máximo 70 caracteres, en español]
# Resumen
[1-2 oraciones describiendo el alcance completo del feature. Ser específico sobre qué se implementó en conjunto.]
---
## PBIs incluidos
| PBI | PR | Descripción |
|-----|-----|-------------|
| #[número] | PR [número] | Breve descripción de lo que implementó ese PBI |
| #[número] | PR [número] | ... |
---
## Endpoints
### [N]. [Nombre descriptivo]
`[MÉTODO] [ruta/del/endpoint]` -- descripción breve de qué hace.
Stack: `FilterVM` -> `Business` -> `Controller`.
[Breve explicación del flujo interno.]
**Request:**
\```json
{
"Campo1": valor_ejemplo,
"Campo2": "valor_ejemplo"
}
\```
| Campo | Tipo | Requerido | Descripción |
|-------|------|-----------|-------------|
| Campo1 | long | Sí | Descripción del campo |
**Response:**
\```json
[
{
"Propiedad1": "valor_ejemplo",
"Propiedad2": 123
}
]
\```
---
## Funcionalidades implementadas
### 1. [Nombre de la funcionalidad]
- Detalle específico del comportamiento implementado
- Componentes o módulos involucrados
- Lógica relevante (cascadas, validaciones, cálculos, etc.)
### 2. [Siguiente funcionalidad]
- ...
---
## Cambios de UI
[Screenshots proporcionados por el usuario]
---
## Archivos modificados
- **[Capa/Área]** ([cantidad]): breve descripción
- **Archivos nuevos:** [cantidad] | **Archivos modificados:** [cantidad]
---
## Deuda técnica conocida
| Item | Estado | Notas |
|------|--------|-------|
| [Descripción del item] | [PENDIENTE/BLOQUEADO/EN PROGRESO] | [Contexto adicional] |
Reglas
- SIEMPRE generar el título del PR antes de la descripción. El título debe ser corto (máximo 70 caracteres), descriptivo y en español.
- Si no hay endpoints nuevos/modificados, omitir la sección "Endpoints"
- Si no hay cambios de UI, omitir la sección "Cambios de UI"
- Si no hay deuda técnica, omitir esa sección
- Agrupar las funcionalidades por área lógica (filtros, UI, backend, etc.)
- El idioma de la descripción debe ser español
- Si hay archivos de recursos/localización modificados, agruparlos (ej:
SharedResource.*.resx (x4))
- Azure DevOps: La descripción tiene un límite de 4000 caracteres. Si la descripción excede este límite, comprimir las secciones menos críticas (archivos modificados, deuda técnica). Si aún no cabe, mover los detalles de endpoints a un comentario separado del PR.
- GitHub: Sin límite de caracteres. Se puede ser más detallado en todas las secciones.
- Archivos modificados: NO listar cada archivo individual en una tabla. Agrupar por capa/área con cantidad y descripción breve del tipo de cambio. Esto ahorra espacio significativo.
- Endpoints: Usar JSON de ejemplo con valores realistas, no genéricos. Los valores deben reflejar el dominio del proyecto.
Formato de entrega
- IMPORTANTE: La descripción generada DEBE guardarse en un archivo markdown (
.md) en el directorio raíz del repositorio con el nombre pr-description.md. Esto permite al usuario abrir el archivo y copiar el contenido sin problemas de formato.
- Usar la herramienta Write para crear el archivo con el contenido completo de la descripción.
- Después de crear el archivo, indicar al usuario: "Descripción del PR guardada en
pr-description.md. Puedes copiar el contenido desde ahí."
- El archivo
pr-description.md NO debe commitearse. Si existe un .gitignore, agregar pr-description.md si no está incluido.
- No incluir explicaciones adicionales después de crear el archivo a menos que el usuario lo pida.
1---2name: pr-description3description: Genera descripciones de PR detalladas basadas en los cambios del branch actual. Usar cuando se cree un PR, se escriba un PR, o el usuario pida resumir cambios para un pull request.4---56## Flujo de ramas del equipo78El equipo usa el siguiente modelo de branching:910- **feature/***: Ramas creadas desde `develop` o `main/master`. Agrupan varios PBIs relacionados.11- **pbi/***: Ramas creadas desde la rama `feature` correspondiente. El PR va de `pbi → feature`.12 - Si hay varios PBIs en un feature, se mergea el primero y los siguientes PBIs se basan en el feature actualizado.13- **bug/*, hotfix/***: Van directo a `main/master/develop`.1415## Pasos1617Al escribir una descripción de PR:18191. Ejecutar `git branch --show-current` para obtener el nombre del branch actual.202. **Preguntar al usuario:**21 a. **Plataforma del PR:** ¿Azure DevOps o GitHub?22 - Si es Azure DevOps: la descripción tiene un **límite de 4000 caracteres**. Ser conciso.23 - Si es GitHub: sin límite de caracteres. Se puede ser más detallado.24 b. **Rama base** contra la cual se compararán los cambios. Sugerir la más probable:25 - Si el branch actual es `pbi/*` → sugerir la rama `feature/*` correspondiente.26 - Si el branch actual es `feature/*` → sugerir `develop` o `main/master`.27 - Si el branch actual es `bug/*` o `hotfix/*` → sugerir `main/master/develop`.28 - Dejar que el usuario confirme o cambie la sugerencia.29 c. **¿Hay cambios de UI/frontend?** Si sí, pedir al usuario que proporcione screenshots.30 - En GitHub: se embeben directamente en la descripción con ``.31 - En Azure DevOps: mencionar que se adjuntarán como archivos al PR o incluir como link.323. Ejecutar `git log --oneline [rama-base]..HEAD` para ver todos los commits del branch.334. **Si el PR es de feature → develop/main/master** (PR agregado):34 - Ejecutar `git log --oneline --merges [rama-base]..HEAD` para identificar los merge commits de PBIs.35 - Ejecutar `git log --oneline [rama-base]..HEAD | grep -iE "pbi|merge"` para extraer los PBIs incluidos.36 - Listar todos los PBIs/branches que se mergearon en el feature.375. Ejecutar `git diff [rama-base]...HEAD --stat` para ver el resumen de archivos cambiados.386. Ejecutar `git diff [rama-base]...HEAD` para ver todos los cambios en detalle.397. Identificar el número de PBI/ticket del nombre del branch (si existe).408. **Detectar si hay endpoints nuevos o modificados** (buscar en el diff controllers, rutas HTTP, `[HttpPost]`, `[HttpGet]`, etc.). Si los hay, documentarlos en la sección de Endpoints.4142## Formato de salida4344Generar primero el **título del PR** y luego la descripción, siguiendo este template:4546```markdown47**Título del PR:** [Título corto y descriptivo, máximo 70 caracteres, en español]4849# Resumen5051[1-2 oraciones describiendo el alcance completo del cambio. Ser específico sobre qué se implementó.]5253---5455## Endpoints5657### [N]. [Nombre descriptivo]5859`[MÉTODO] [ruta/del/endpoint]` -- descripción breve de qué hace.60Stack: `FilterVM` -> `Business` -> `Controller`.61[Breve explicación del flujo interno: qué datos obtiene, qué valida, qué retorna.]6263**Request:**6465\```json66{67 "Campo1": valor_ejemplo,68 "Campo2": "valor_ejemplo"69}70\```7172| Campo | Tipo | Requerido | Descripción |73|-------|------|-----------|-------------|74| Campo1 | long | Sí | Descripción del campo |75| Campo2 | string | No | Descripción del campo |7677**Response:**7879\```json80[81 {82 "Propiedad1": "valor_ejemplo",83 "Propiedad2": 12384 }85]86\```8788---8990## Funcionalidades implementadas9192### 1. [Nombre de la funcionalidad]9394- Detalle específico del comportamiento implementado95- Componentes o módulos involucrados96- Lógica relevante (cascadas, validaciones, cálculos, etc.)9798### 2. [Siguiente funcionalidad]99100- ...101102---103104## Cambios de UI105106[Screenshots proporcionados por el usuario. En GitHub embeber con . En Azure DevOps indicar que están adjuntos al PR.]107108---109110## Archivos modificados111112- **[Capa/Área]** ([cantidad]): breve descripción del tipo de cambios (ej: "Business (3): nueva lógica de cálculo de bonos")113- **[Capa/Área]** ([cantidad]): ...114- **Archivos nuevos:** [cantidad] | **Archivos modificados:** [cantidad]115116---117118## Deuda técnica conocida119120| Item | Estado | Notas |121|------|--------|-------|122| [Descripción del item] | [PENDIENTE/BLOQUEADO/EN PROGRESO] | [Contexto adicional] |123```124125### Template para PR agregado (feature → develop/main/master)126127Cuando el PR es de un feature hacia develop/main/master, usar este template en su lugar:128129```markdown130**Título del PR:** [Título corto y descriptivo, máximo 70 caracteres, en español]131132# Resumen133134[1-2 oraciones describiendo el alcance completo del feature. Ser específico sobre qué se implementó en conjunto.]135136---137138## PBIs incluidos139140| PBI | PR | Descripción |141|-----|-----|-------------|142| #[número] | PR [número] | Breve descripción de lo que implementó ese PBI |143| #[número] | PR [número] | ... |144145---146147## Endpoints148149### [N]. [Nombre descriptivo]150151`[MÉTODO] [ruta/del/endpoint]` -- descripción breve de qué hace.152Stack: `FilterVM` -> `Business` -> `Controller`.153[Breve explicación del flujo interno.]154155**Request:**156157\```json158{159 "Campo1": valor_ejemplo,160 "Campo2": "valor_ejemplo"161}162\```163164| Campo | Tipo | Requerido | Descripción |165|-------|------|-----------|-------------|166| Campo1 | long | Sí | Descripción del campo |167168**Response:**169170\```json171[172 {173 "Propiedad1": "valor_ejemplo",174 "Propiedad2": 123175 }176]177\```178179---180181## Funcionalidades implementadas182183### 1. [Nombre de la funcionalidad]184185- Detalle específico del comportamiento implementado186- Componentes o módulos involucrados187- Lógica relevante (cascadas, validaciones, cálculos, etc.)188189### 2. [Siguiente funcionalidad]190191- ...192193---194195## Cambios de UI196197[Screenshots proporcionados por el usuario]198199---200201## Archivos modificados202203- **[Capa/Área]** ([cantidad]): breve descripción204- **Archivos nuevos:** [cantidad] | **Archivos modificados:** [cantidad]205206---207208## Deuda técnica conocida209210| Item | Estado | Notas |211|------|--------|-------|212| [Descripción del item] | [PENDIENTE/BLOQUEADO/EN PROGRESO] | [Contexto adicional] |213```214215## Reglas216217- **SIEMPRE** generar el título del PR antes de la descripción. El título debe ser corto (máximo 70 caracteres), descriptivo y en español.218- Si no hay endpoints nuevos/modificados, omitir la sección "Endpoints"219- Si no hay cambios de UI, omitir la sección "Cambios de UI"220- Si no hay deuda técnica, omitir esa sección221- Agrupar las funcionalidades por área lógica (filtros, UI, backend, etc.)222- El idioma de la descripción debe ser español223- Si hay archivos de recursos/localización modificados, agruparlos (ej: `SharedResource.*.resx (x4)`)224- **Azure DevOps:** La descripción tiene un límite de **4000 caracteres**. Si la descripción excede este límite, comprimir las secciones menos críticas (archivos modificados, deuda técnica). Si aún no cabe, mover los detalles de endpoints a un comentario separado del PR.225- **GitHub:** Sin límite de caracteres. Se puede ser más detallado en todas las secciones.226- **Archivos modificados:** NO listar cada archivo individual en una tabla. Agrupar por capa/área con cantidad y descripción breve del tipo de cambio. Esto ahorra espacio significativo.227- **Endpoints:** Usar JSON de ejemplo con valores realistas, no genéricos. Los valores deben reflejar el dominio del proyecto.228229## Formato de entrega230231- **IMPORTANTE**: La descripción generada DEBE guardarse en un archivo markdown (`.md`) en el directorio raíz del repositorio con el nombre `pr-description.md`. Esto permite al usuario abrir el archivo y copiar el contenido sin problemas de formato.232- Usar la herramienta Write para crear el archivo con el contenido completo de la descripción.233- Después de crear el archivo, indicar al usuario: "Descripción del PR guardada en `pr-description.md`. Puedes copiar el contenido desde ahí."234- El archivo `pr-description.md` NO debe commitearse. Si existe un `.gitignore`, agregar `pr-description.md` si no está incluido.235- No incluir explicaciones adicionales después de crear el archivo a menos que el usuario lo pida.