Use when the user wants to publish changes, create a release, commit to git, or says "haz release", "publica los cambios", "sube a git", "crear release".
Analiza los cambios pendientes, determina la versión semver, actualiza el CHANGELOG, hace commit, push y crea un release en GitHub.
FASE 1: Análisis de cambios
↓
FASE 2: Determinar versión
↓
FASE 3: Actualizar CHANGELOG
↓
FASE 4: Commit y push
↓
FASE 5: Crear release en GitHub
Ejecuta estos comandos para entender qué ha cambiado:
# Estado actual
git status
# Cambios en archivos
git diff
# Último tag/release
git describe --tags --abbrev=0 2>/dev/null || echo "No hay tags previos"
# Commits desde el último tag (si existe)
git log $(git describe --tags --abbrev=0 2>/dev/null)..HEAD --oneline 2>/dev/null || git log --oneline -10
Presenta al usuario un resumen de los cambios detectados:
## Cambios detectados
### Archivos modificados:
- kb-article/kb-article.md
- kb-article/scripts/zendesk.ts
### Resumen de cambios:
- [descripción breve de cada cambio significativo]
Analiza los cambios y determina el tipo de incremento:
MAJOR (x.0.0) - Cambios breaking:
MINOR (0.x.0) - Nueva funcionalidad:
PATCH (0.0.x) - Correcciones y mejoras menores:
Obtén la versión actual:
git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0"
Propón la nueva versión y explica por qué:
## Versión propuesta: v1.2.0
**Razón:** Se añadió nueva funcionalidad (comando `update` en zendesk.ts)
¿Te parece bien esta versión o prefieres otra?
Espera confirmación del usuario antes de continuar.
cat CHANGELOG.md
Genera la entrada para el CHANGELOG siguiendo el formato existente:
## [X.Y.Z] - YYYY-MM-DD
### Added
- Descripción de funcionalidades nuevas
### Changed
- Descripción de cambios en funcionalidades existentes
### Fixed
- Descripción de correcciones
Solo incluye las secciones que apliquen (Added, Changed, Fixed, Removed, etc.)
Mueve el contenido de [Unreleased] a la nueva versión y deja [Unreleased] vacío:
## [Unreleased]
## [X.Y.Z] - YYYY-MM-DD
[contenido movido de Unreleased + cambios actuales]
git add -A
Usa un mensaje descriptivo que resuma los cambios:
git commit -m "feat: descripción breve de los cambios principales
- Detalle 1
- Detalle 2
- Detalle 3"
Convenciones de prefijos:
feat: nueva funcionalidadfix: corrección de bugsdocs: documentaciónrefactor: refactorizacióngit push origin main
Las notas deben incluir:
gh release create vX.Y.Z --title "vX.Y.Z - Título descriptivo" --notes "$(cat <<'EOF'
## Cambios en esta versión
### Added
- ...
### Changed
- ...
### Fixed
- ...
EOF
)"
✅ Release creado exitosamente
- **Versión:** vX.Y.Z
- **URL:** https://github.com/usuario/repo/releases/tag/vX.Y.Z
- **Commit:** [hash]
El CHANGELOG.md ha sido actualizado y los cambios están publicados.
/release
O cuando el usuario diga: