releasing-versionslisted
Install: claude install-skill orobsonn/claude-harness
# Release
Cria release versionada via PR seguindo `~/.claude/rules/releases.md`. Tem 2 modos:
- **OPEN** — abre PR `chore: release vX.Y.Z` (default quando nao ha PR pendente)
- **FINISH** — apos merge do PR, cria tag + GitHub Release (detectado automaticamente)
## Pre-requisitos
- Estar em repo git com `origin` apontando pra GitHub
- `CHANGELOG.md` existe na raiz e tem `## [Unreleased]` preenchido (no MODO OPEN)
- `package.json` existe na raiz com `version`
- `gh` CLI autenticado
- Settings do repo: "Allow squash merging" ligado (e os outros desligados)
## Input do usuario
- **Tipo de bump** (no MODO OPEN) — patch (default), minor, major
- **Deploy apos release** — NAO acoplado por default. Apos `gh release create`, o usuario decide se invoca `/deploy`
## Detectar modo
```bash
# Pull main pra ter visao atualizada
git checkout main && git fetch origin && git pull --ff-only
LAST_MSG=$(git log -1 --format=%s)
```
- Se `$LAST_MSG` casa com `^chore: release v[0-9]+\.[0-9]+\.[0-9]+$` E nao existe tag pra essa versao → **MODO FINISH**
- Se ha branch local ou PR aberto `chore/release-*` → reportar estado e perguntar (provavel meio caminho)
- Caso contrario → **MODO OPEN**
---
## MODO OPEN — abrir PR de release
### 1. Pre-flight em main
```bash
git status # working tree limpo
git log origin/main..HEAD --oneline # main em sync (vazio = ok)
```
Se nao estiver limpo / sync, parar e pedir pra resolver.
### 2. Validar `[Unreleased]` no CHANGELOG
```bas