Skip to content
Back to skills

Release

ASecurity

Corta una nueva versión — mueve la sección Unreleased del CHANGELOG a una versión SemVer con fecha, crea el commit y el tag, y opcionalmente el release de GitHub. Úsalo cuando la persona pida publicar/cortar una versión o preparar un release (p. ej. "corta la versión 1.2.0", "prepara el release", "publica una nueva versión"). No hace push sin confirmación.

  • 15 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 20, 2026
ai-agentsgorailsgitsecurity

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add brayandiazc/project-starter-template-es-ai --skill release --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Release?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Release
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/brayandiazc-release/badge)](https://www.skillsdirectory.com/skills/brayandiazc-release)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: release
description: Corta una nueva versión — mueve la sección Unreleased del CHANGELOG a una versión SemVer con fecha, crea el commit y el tag, y opcionalmente el release de GitHub. Úsalo cuando la persona pida publicar/cortar una versión o preparar un release (p. ej. "corta la versión 1.2.0", "prepara el release", "publica una nueva versión"). No hace push sin confirmación.
---

Corta una versión siguiendo Keep a Changelog y Semantic Versioning (ver `CHANGELOG.md`
y `CONTRIBUTING.md`).

> **Automatización:** al fusionar `develop` → `main`, el workflow
> `.github/workflows/release.yml` detecta la versión fechada más reciente del
> CHANGELOG y, si no tiene tag, publica el tag y el release de GitHub solo. Esta
> skill prepara el corte (mover Unreleased → `X.Y.Z` con fecha y elegir la versión
> SemVer); el tag/release manual solo hace falta si el workflow no está activo.

## Pasos

1. **Precondiciones.** Verifica que el árbol esté limpio (`git status`) y que estés en la
   rama correcta según `CONTRIBUTING.md`: con Git Flow el release sale de `develop` hacia
   `main`, salvo un hotfix, que se corta en la propia `hotfix/*` (ver abajo); sin
   `develop`, desde `main`. Si hay cambios sin commit, detente y avisa.
2. **Leer lo pendiente.** Toma las entradas de la sección `## [Unreleased]` de
   `CHANGELOG.md`. Si está vacía, no hay nada que publicar: dilo y detente.
3. **Proponer la versión.** Lee la última versión publicada (tag `v*` o CHANGELOG) y
   propone el bump SemVer según el contenido: cambios incompatibles → **major**; solo
   `Added`/`Changed` → **minor**; solo `Fixed`/`Security` → **patch**. Deja que la
   persona confirme o corrija con AskUserQuestion.
4. **Actualizar el CHANGELOG.** Mueve las entradas de `Unreleased` a una nueva sección
   `## [X.Y.Z] - YYYY-MM-DD` (fecha de hoy), deja `Unreleased` con sus categorías vacías
   y actualiza los enlaces de comparación del pie del archivo.
5. **Sincronizar la versión del manifiesto.** Si el stack tiene un archivo que declara
   versión, súbela a `X.Y.Z` en el mismo commit — si no, el proyecto publica `v0.4.0`
   con el manifiesto diciendo `0.1.0`. Busca el que aplique y actualiza también su
   lockfile si el gestor lo regenera:
   - `package.json` (+ `package-lock.json` / `pnpm-lock.yaml`) · `*.gemspec` o
     `lib/**/version.rb` · `Cargo.toml` (+ `Cargo.lock`) · `pyproject.toml` ·
     `composer.json` · `pubspec.yaml` · `build.gradle` · `VERSION`.
   - Si no hay ninguno (proyecto sin manifiesto versionado), dilo y sigue: el
     CHANGELOG es la única fuente de la versión.
6. **Commit, sin tag.** Crea el commit `chore(release): vX.Y.Z` (con la coautoría de IA
   de `docs/conventions/ai-agents.md`) en una rama `chore/corte-vX.Y.Z` — recuerda que
   `git-guardrails.sh` no deja commitear directo en `develop`.
   **NO crees ni publiques el tag aquí.** `release.yml` solo publica si la versión
   **no tiene tag**: si lo creas tú, el workflow la da por publicada, no crea el release
   de GitHub, y encima el tag apunta al commit de la rama en vez de al merge en `main`.
7. **Llevarlo a producción.** PR de la rama de corte → `develop`, y después PR
   `develop` → `main`. Al fusionar en `main`, `release.yml` crea el tag `vX.Y.Z` sobre
   el merge y publica el release con las notas de esa sección del CHANGELOG.
8. **Solo si el workflow no está activo** (proyecto sin Actions, o `release.yml`
   borrado): entonces sí, tag anotado a mano y
   `gh release create vX.Y.Z --title "vX.Y.Z" --notes "<sección del CHANGELOG>"`.

## El corte es lo último antes de fusionar a `main`

El job `release` de `quality.yml` (`.github/scripts/check-release.sh`) bloquea los PRs
hacia `main` si la versión de arriba del CHANGELOG ya está publicada, si quedaron
entradas sueltas en `## [Unreleased]`, o si esa versión es **heredada de la plantilla**
(un CHANGELOG sin resetear deja arriba la última versión del repositorio origen). Es la misma regla dicha al revés: **nada llega a
producción sin versión**. Si el PR a `main` falla por eso, no lo esquives — corta la
versión.

## Hotfix (release desde `main`)

Un `hotfix/*` no pasa por `develop`, pero **también publica versión** (siempre un
**patch**). El orden es:

1. En la rama `hotfix/*` (nacida de `main`): el fix, su entrada en `## [Unreleased]` y
   el corte con esta skill — pasos 3 a 6, con el bump `patch`.
2. PR `hotfix/*` → `main`. El job `release` lo valida y, al fusionar, `release.yml`
   publica el tag y el release.
3. **Sincroniza a `develop`** con un PR `main` → `develop` (lo exige
   [`CONTRIBUTING.md`](../../../CONTRIBUTING.md)): si te lo saltas, `develop` no tiene
   ni el fix ni la sección de versión del CHANGELOG, y el próximo corte la pisa.

Ejemplo: "corta la versión" → propone `v1.3.0` → CHANGELOG actualizado + commit en
`chore/corte-v1.3.0`; el tag y el release los pone `release.yml` al llegar a `main`.

NO crees el tag a mano cuando `release.yml` esté activo (le robas el release), NO hagas
push ni publiques sin confirmación explícita, NO inventes entradas de changelog que no
estén en `Unreleased`, y NO saltes una versión SemVer.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.