Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:05:32 +08:00
commit 5c74f5699f
51 changed files with 11373 additions and 0 deletions

328
commands/pr-auto-update.md Normal file
View File

@@ -0,0 +1,328 @@
## Actualización Automática de PR
## Resumen
Un comando que actualiza automáticamente las descripciones y etiquetas de Pull Request. Analiza los cambios de Git para generar y establecer descripciones y etiquetas apropiadas.
## Uso
```bash
/pr-auto-update [opciones] [número de PR]
```
### Opciones
- `--pr <número>`: Especificar número de PR objetivo (se detecta automáticamente desde la rama actual si se omite)
- `--description-only`: Actualizar solo la descripción (mantener etiquetas sin cambios)
- `--labels-only`: Actualizar solo etiquetas (mantener descripción sin cambios)
- `--dry-run`: Mostrar contenido generado sin realizar actualizaciones reales
- `--lang <idioma>`: Especificar idioma (es, en)
### Ejemplos Básicos
```bash
# Auto-actualizar PR para rama actual
/pr-auto-update
# Actualizar PR específico
/pr-auto-update --pr 1234
# Actualizar solo descripción
/pr-auto-update --description-only
# Verificar con dry-run
/pr-auto-update --dry-run
```
## Detalles de Características
### 1. Auto Detección de PR
Detecta automáticamente el PR correspondiente desde la rama actual:
- Busca PR abierto relacionado con la rama actual
- Obtiene información del PR usando GitHub CLI
- Soporta tanto GitHub.com como GitHub Enterprise
### 2. Generación de Descripción
Genera automáticamente descripción del PR analizando:
- **Análisis de Commits**: Resumen de mensajes de commit
- **Detección de Cambios**: Cambios principales en archivos
- **Extracción de Propósito**: Identificación del objetivo del cambio
- **Referencias de Issues**: Detección automática de #123 mentions
### 3. Sugerencia de Etiquetas
Sugiere etiquetas apropiadas basadas en:
- **Tipo de Cambio**: `enhancement`, `bug`, `documentation`
- **Área de Impacto**: `frontend`, `backend`, `database`
- **Prioridad**: `high priority`, `low priority`
- **Estado**: `work in progress`, `ready for review`
### 4. Análisis de Impacto
Analiza el impacto de los cambios:
- **Archivos Modificados**: Lista de archivos y estadísticas
- **Dependencias**: Cambios en package.json, Gemfile, etc.
- **Breaking Changes**: Detección de cambios incompatibles
- **Cobertura de Tests**: Verificación de tests agregados
## Formato de Descripción Generada
### Estructura Estándar
```markdown
## 📋 Resumen
[Descripción breve del propósito del PR]
## 🎯 Objetivo
- [Problema que resuelve]
- [Beneficio que aporta]
## 📝 Cambios Realizados
- [Cambio principal 1]
- [Cambio principal 2]
- [Cambio principal 3]
## 🧪 Testing
- [ ] Tests unitarios agregados/actualizados
- [ ] Tests de integración pasando
- [ ] Probado manualmente
## 📊 Impacto
- **Archivos modificados**: X archivos
- **Líneas agregadas**: +XXX
- **Líneas eliminadas**: -XXX
## 📌 Issues Relacionados
- Resuelve #123
- Relacionado con #456
## 📸 Capturas de Pantalla
[Si aplica, capturas de UI/resultado]
## ⚠️ Notas para Revisores
[Puntos específicos que necesitan atención]
```
### Personalización por Tipo
**Para Features**:
- Enfoque en funcionalidad nueva
- Documentación de uso
- Ejemplos de implementación
**Para Bugfixes**:
- Descripción del bug original
- Causa raíz identificada
- Solución implementada
**Para Refactoring**:
- Justificación del cambio
- Mejoras de rendimiento/mantenibilidad
- Compatibilidad hacia atrás
## Integración con CI/CD
### GitHub Actions
```yaml
name: Auto Update PR
on:
pull_request:
types: [opened, synchronize]
jobs:
update-pr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Update PR Description
run: |
/pr-auto-update --pr ${{ github.event.pull_request.number }}
```
### Pre-commit Hook
```bash
#!/bin/bash
# .git/hooks/pre-push
if [ -n "$(git status --porcelain)" ]; then
echo "Actualizando PR antes de push..."
/pr-auto-update --dry-run
fi
```
## Configuración
### Archivo `.pr-auto-update.yml`
```yaml
# Configuración personalizada
language: es # Idioma por defecto
labels:
enabled: true
custom:
- "needs-review"
- "urgent"
description:
template: "custom" # usar template personalizado
include_stats: true
include_screenshots: false
```
### Variables de Entorno
```bash
export PR_AUTO_UPDATE_LANG=es
export PR_AUTO_UPDATE_TEMPLATE=detailed
export GITHUB_TOKEN=ghp_xxxxx
```
## Solución de Problemas
### Error: "No se encontró PR asociado"
```bash
# Verificar rama actual
git branch --show-current
# Listar PRs abiertos
gh pr list
# Crear PR si no existe
gh pr create
```
### Error: "Permisos insuficientes"
```bash
# Verificar autenticación
gh auth status
# Re-autenticar si necesario
gh auth login
```
### Descripción no se actualiza
```bash
# Forzar actualización
/pr-auto-update --pr 1234 --force
# Verificar cambios locales
git status
git diff main...HEAD
```
## Patrones Comunes
### Proyecto Flutter
```markdown
Implementado {nombre_funcionalidad} para resolver {problema_usuario}.
- **Implementación UI**: Creada nueva pantalla {nombre_pantalla}
- **Gestión de Estado**: Agregados providers de Riverpod
- **Integración API**: Implementadas queries y mutaciones GraphQL
- **Tests**: Agregados tests de widgets y tests unitarios
- **Arquitectura**: {patrón_utilizado}
- **Dependencias**: {paquetes_agregados}
- **Rendimiento**: {optimizaciones_realizadas}
```
### Proyecto Node.js
```markdown
Implementado endpoint {nombre_API} para {caso_uso}.
- **Implementación API**: Creado nuevo endpoint {ruta_endpoint}
- **Validación**: Agregada lógica de validación de requests
- **Base de Datos**: Implementadas operaciones en tabla {nombre_tabla}
- **Tests**: Agregados tests de integración y unitarios
- **Autenticación**: Validación de tokens JWT
- **Autorización**: Control de acceso basado en roles
- **Validación de Entrada**: Protección contra inyección SQL
```
### Mejora CI/CD
```markdown
Mejorado workflow de GitHub Actions para {efecto_logrado}.
- **Rendimiento**: Reducido tiempo de build en {tiempo}
- **Confiabilidad**: Reforzado manejo de errores
- **Seguridad**: Mejorada gestión de secretos
- **Paralelización**: Ejecución paralela de {nombre_jobs}
- **Caché**: Optimizada estrategia de caché para {objetivo_cache}
- **Monitoreo**: Agregado monitoreo de {métricas}
```
## Mejores Prácticas
1. **Ejecutar antes de solicitar revisión**: Asegura descripciones actualizadas
2. **Usar `--dry-run` primero**: Revisa cambios antes de aplicar
3. **Mantener commits limpios**: Facilita generación de descripción
4. **Configurar templates**: Consistencia en equipo
5. **Integrar con CI**: Automatización completa
## Casos de Uso Avanzados
### Monorepo con Múltiples Packages
```bash
# Detectar cambios por package
git diff main...HEAD --name-only | grep "^packages/"
/pr-auto-update
"Genera descripción separada para cada package modificado"
```
### PR con Múltiples Colaboradores
```bash
# Incluir co-autores
git log --format="%an <%ae>" | sort -u
/pr-auto-update
"Incluye sección de colaboradores en la descripción"
```
### Release PR
```bash
# Para PRs de release
git log v1.0.0...HEAD --oneline
/pr-auto-update --labels-only
"Agrega etiquetas de release y changelog"
```
## Limitaciones
- Requiere GitHub CLI instalado y configurado
- No modifica PRs ya mergeados
- Límite de 65,536 caracteres en descripción
- No puede cambiar título del PR (usar `gh pr edit` para eso)
## Ver También
- `/pr-create` - Crear nuevo PR
- `/pr-review` - Generar revisión de PR
- `/commit-message` - Generar mensajes de commit
- `gh pr` - GitHub CLI para PRs