Initial commit
This commit is contained in:
233
commands/pr-create.md
Normal file
233
commands/pr-create.md
Normal file
@@ -0,0 +1,233 @@
|
||||
## Crear PR
|
||||
|
||||
Crea Pull Requests automáticamente analizando tus cambios Git para un flujo de trabajo más fluido.
|
||||
|
||||
### Uso
|
||||
|
||||
```bash
|
||||
# Auto-crear PR desde tus cambios
|
||||
git add . && git commit -m "feat: Implementar autenticación de usuario"
|
||||
"Crear un Draft PR con la descripción y etiquetas correctas"
|
||||
|
||||
# Mantener tu plantilla existente
|
||||
cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md
|
||||
"Llenar los espacios en blanco pero mantener la estructura de plantilla intacta"
|
||||
|
||||
# Marcar como listo cuando termine
|
||||
gh pr ready
|
||||
"Cambiar a Ready for Review después de verificar calidad"
|
||||
```
|
||||
|
||||
### Ejemplos Básicos
|
||||
|
||||
```bash
|
||||
# 1. Crear rama y commit
|
||||
git checkout main && git pull
|
||||
git checkout -b feat-user-profile
|
||||
git add . && git commit -m "feat: Implementar característica de perfil de usuario"
|
||||
git push -u origin feat-user-profile
|
||||
|
||||
# 2. Crear PR
|
||||
"Por favor crear un PR:
|
||||
1. Verificar qué cambió con git diff --cached
|
||||
2. Usar la plantilla PR de .github/PULL_REQUEST_TEMPLATE.md
|
||||
3. Elegir hasta 3 etiquetas que coincidan con los cambios
|
||||
4. Crearlo como Draft (mantener comentarios HTML)"
|
||||
|
||||
# 3. Hacer listo después de que CI pase
|
||||
"Una vez que CI esté verde, marcar el PR como Ready for Review"
|
||||
```
|
||||
|
||||
### Pasos de Ejecución
|
||||
|
||||
#### 1. Crear Rama
|
||||
|
||||
```bash
|
||||
# Nomenclatura de rama: {tipo}-{asunto}
|
||||
git checkout main
|
||||
git pull
|
||||
git checkout -b feat-user-authentication
|
||||
|
||||
# Confirmar que estás en la rama correcta
|
||||
git branch --show-current
|
||||
```
|
||||
|
||||
#### 2. Commit
|
||||
|
||||
```bash
|
||||
# Staged tus cambios
|
||||
git add .
|
||||
|
||||
# Commit con mensaje claro
|
||||
git commit -m "feat: Implementar API de autenticación de usuario"
|
||||
```
|
||||
|
||||
#### 3. Push al Remoto
|
||||
|
||||
```bash
|
||||
# Primer push (establece upstream)
|
||||
git push -u origin feat-user-authentication
|
||||
|
||||
# Pushes posteriores
|
||||
git push
|
||||
```
|
||||
|
||||
#### 4. Crear Draft PR con Análisis Automático
|
||||
|
||||
**Paso 1: Analizar Cambios**
|
||||
|
||||
```bash
|
||||
# Ver qué archivos cambiaron
|
||||
git diff --cached --name-only
|
||||
|
||||
# Revisar los cambios reales (primeras 1000 líneas)
|
||||
git diff --cached | head -1000
|
||||
```
|
||||
|
||||
**Paso 2: Auto-generar Descripción**
|
||||
|
||||
```bash
|
||||
# Prioridad de plantilla:
|
||||
# 1. Mantener descripción PR existente como está
|
||||
# 2. Usar .github/PULL_REQUEST_TEMPLATE.md
|
||||
# 3. Recurrir a plantilla por defecto
|
||||
|
||||
cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md
|
||||
# Llenar solo secciones vacías - no tocar comentarios HTML o separadores
|
||||
```
|
||||
|
||||
**Paso 3: Auto-seleccionar Etiquetas**
|
||||
|
||||
```bash
|
||||
# Obtener etiquetas disponibles (no interactivo)
|
||||
"Recuperar etiquetas disponibles de .github/labels.yml o repositorio GitHub y seleccionar automáticamente etiquetas apropiadas basadas en cambios"
|
||||
|
||||
# Auto-selección por coincidencia de patrones (máx 3)
|
||||
# - Documentación: *.md, docs/ → documentation|docs
|
||||
# - Pruebas: test, spec → test|testing
|
||||
# - Correcciones de errores: fix|bug → bug|fix
|
||||
# - Nuevas características: feat|feature → feature|enhancement
|
||||
```
|
||||
|
||||
**Paso 4: Crear PR vía GitHub API (Preservar Comentarios HTML)**
|
||||
|
||||
```bash
|
||||
# Crear PR
|
||||
"Crear un Draft PR con la siguiente información:
|
||||
- Título: Auto-generado desde mensaje de commit
|
||||
- Descripción: Correctamente llenado usando .github/PULL_REQUEST_TEMPLATE.md
|
||||
- Etiquetas: Auto-seleccionadas desde cambios (máx 3)
|
||||
- Rama base: main
|
||||
- Preservar todos los comentarios HTML"
|
||||
```
|
||||
|
||||
### Sistema de Selección Automática de Etiquetas
|
||||
|
||||
#### Determinar desde Patrones de Archivos
|
||||
|
||||
- **Documentación**: `*.md`, `README`, `docs/` → `documentation|docs|doc`
|
||||
- **Pruebas**: `test`, `spec` → `test|testing`
|
||||
- **CI/CD**: `.github/`, `*.yml`, `Dockerfile` → `ci|build|infra|ops`
|
||||
- **Dependencias**: `package.json`, `pubspec.yaml` → `dependencies|deps`
|
||||
|
||||
#### Determinar desde Contenido
|
||||
|
||||
- **Correcciones de errores**: `fix|bug|error|crash|repair` → `bug|fix`
|
||||
- **Nuevas características**: `feat|feature|add|implement|new-feature|implementation` → `feature|enhancement|feat`
|
||||
- **Refactoring**: `refactor|clean|restructure` → `refactor|cleanup|clean`
|
||||
- **Rendimiento**: `performance|perf|optimize` → `performance|perf`
|
||||
- **Seguridad**: `security|secure` → `security`
|
||||
|
||||
#### Restricciones
|
||||
|
||||
- **Máx 3 etiquetas**: Límite superior para selección automática
|
||||
- **Solo etiquetas existentes**: Prohibido crear nuevas etiquetas
|
||||
- **Coincidencia parcial**: Determinado por inclusión de palabra clave en nombres de etiquetas
|
||||
|
||||
### Pautas del Proyecto
|
||||
|
||||
#### Enfoque Básico
|
||||
|
||||
1. **Siempre empezar como Draft**: Todos los PRs deben crearse en estado Draft
|
||||
2. **Mejora gradual de calidad**: Fase 1 (Implementación básica) → Fase 2 (Agregar pruebas) → Fase 3 (Actualizar documentación)
|
||||
3. **Etiquetas apropiadas**: Agregar siempre hasta 3 etiquetas
|
||||
4. **Usar plantillas**: Usar siempre `.github/PULL_REQUEST_TEMPLATE.md`
|
||||
5. **Espaciado español**: Agregar siempre espacio de ancho medio entre texto español y alfanuméricos
|
||||
|
||||
#### Convención de Nomenclatura de Ramas
|
||||
|
||||
```text
|
||||
{tipo}-{asunto}
|
||||
|
||||
Ejemplos:
|
||||
- feat-user-profile
|
||||
- fix-login-error
|
||||
- refactor-api-client
|
||||
```
|
||||
|
||||
#### Mensajes de Commit
|
||||
|
||||
```text
|
||||
{tipo}: {descripción}
|
||||
|
||||
Ejemplos:
|
||||
- feat: Implementar API de autenticación de usuario
|
||||
- fix: Corregir error de login
|
||||
- docs: Actualizar README
|
||||
```
|
||||
|
||||
### Sistema de Procesamiento de Plantillas
|
||||
|
||||
#### Prioridad de Procesamiento
|
||||
|
||||
1. **Descripción PR existente**: Mantener todo lo que ya está escrito
|
||||
2. **Plantilla del proyecto**: Usar `.github/PULL_REQUEST_TEMPLATE.md`
|
||||
3. **Plantilla por defecto**: Usar esta si no existe nada más
|
||||
|
||||
#### Reglas de Preservación de Contenido Existente
|
||||
|
||||
- **No tocar contenido existente**: Dejar lo que ya está ahí solo
|
||||
- **Llenar solo los espacios en blanco**: Agregar contenido donde falta
|
||||
- **Mantener comentarios funcionales**: Como `<!-- Copilot review rule -->`
|
||||
- **Mantener comentarios HTML**: Todos `<!-- ... -->` permanecen como están
|
||||
- **Mantener separadores**: Cosas como `---` se quedan
|
||||
|
||||
#### Manejo de Preservación de Comentarios HTML
|
||||
|
||||
**Importante**: GitHub CLI (`gh pr edit`) automáticamente escapa comentarios HTML, y el procesamiento shell puede causar mezcla de strings inválidos como `EOF < /dev/null`.
|
||||
|
||||
**Soluciones Fundamentales**:
|
||||
|
||||
1. **Uso de opción --field de GitHub API**: Preservar comentarios HTML con procesamiento de escape apropiado
|
||||
2. **Simplificación de Procesamiento de Plantilla**: Evitar procesamiento complejo de pipes y redirecciones
|
||||
3. **Enfoque de Preservación Completa**: Abolir procesamiento de eliminación de comentarios HTML, preservar completamente plantillas
|
||||
|
||||
### Respuestas a Comentarios de Revisión
|
||||
|
||||
```bash
|
||||
# Hacer commit de tus correcciones
|
||||
git add .
|
||||
git commit -m "fix: Abordar feedback de revisión"
|
||||
git push
|
||||
```
|
||||
|
||||
### Notas
|
||||
|
||||
#### Importancia de Preservación de Comentarios HTML
|
||||
|
||||
- **Problema de GitHub CLI**: `gh pr edit` escapa comentarios HTML y puede romper cosas
|
||||
- **La solución**: Usar opción `--field` de GitHub API para manejo apropiado
|
||||
- **Mantener todo**: No eliminar comentarios HTML - mantener toda la plantilla
|
||||
|
||||
#### Restricciones de Automatización
|
||||
|
||||
- **No nuevas etiquetas**: Solo puede usar etiquetas de `.github/labels.yml`
|
||||
- **Máx 3 etiquetas**: Ese es el límite para auto-selección
|
||||
- **No tocar contenido manual**: Nunca cambiar lo que alguien escribió
|
||||
|
||||
#### Calidad Paso a Paso
|
||||
|
||||
- **Empezar con Draft**: Cada PR comienza como borrador
|
||||
- **Verificar CI**: Ejecutar `gh pr checks` para ver el estado
|
||||
- **Marcar como listo**: Usar `gh pr ready` cuando la calidad se vea bien
|
||||
- **Seguir la plantilla**: Adherirse a la estructura de tu proyecto
|
||||
Reference in New Issue
Block a user