# Specsfy Specialist Versioning

> Gerenciar a versão do sistema pelo SEMVER da raiz e validar tags Docker. Use como apoio focal da `$specsfy-specialist-deploy`.

- Skill: `promovaweb/specsfy-specialist-versioning` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add promovaweb/specsfy-specialist-versioning`
- Raw SKILL.md: https://api.skillmd.com/api/skills/promovaweb/specsfy-specialist-versioning/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: promovaweb (https://skillmd.com/u/promovaweb)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/promovaweb/specsfy-specialist-versioning

---


# Versionamento

## Quando usar

- Acionar pela `$specsfy-specialist-deploy` ao preparar release, imagem
  destinada a deploy, tag Git ou promoção entre ambientes.
- Em pedido completo de release ou deploy, devolver a coordenação para
  `$specsfy-specialist-deploy` depois de preparar e conferir a versão.
- Não publicar imagem, tag, GitHub Release nem executar deploy sem autorização
  explícita. A preparação local pode criar ou atualizar `SEMVER`.

## Fluxo

1. Localizar a raiz do projeto e ler `SEMVER`, tags Git, changelog e artefatos
   relacionados à entrega.
2. Criar `SEMVER` somente quando ele estiver ausente e a versão inicial tiver
   sido confirmada.
3. Classificar a alteração como `patch`, `minor` ou `major`, explicar o efeito
   e propor a próxima versão antes de escrever.
4. Atualizar `SEMVER` durante a preparação autorizada e propagar o mesmo valor
   para metadados, imagem e manifestos que pertencem à entrega.
5. Executar testes e conferir que a versão é superior à publicação anterior.
6. Quando houver autorização para publicar, enviar primeiro o artefato
   imutável. Criar a tag Git e a GitHub Release somente depois que o artefato
   estiver disponível.
7. Entregar a versão, o digest, o commit, os ambientes alcançados e os comandos
   de reversão.

## Padrões

- Manter `SEMVER` na raiz com uma única versão estável `MAJOR.MINOR.PATCH` e
  quebra de linha final.
- Usar `patch` para correção compatível, `minor` para capacidade compatível e
  `major` para mudança incompatível.
- Tratar `SEMVER` como fonte da versão preparada. Tags Git, anotações OCI,
  changelog e referência da stack devem reproduzir o mesmo valor.
- Publicar imagens com tag SemVer e commit, registrar o digest e fazer o deploy
  por digest quando a plataforma permitir.
- Conferir se uma tag imutável já existe antes do push. Nunca substituir uma
  imagem ou tag publicada.
- Usar o utilitário local para operações determinísticas:

```bash
node scripts/semver.mjs current --project .
node scripts/semver.mjs bump patch --project .
node scripts/semver.mjs verify 1.4.1 --project .
node scripts/semver.mjs docker-tag registry.example/app --project .
node scripts/semver.mjs verify-docker-tag registry.example/app:1.4.1 --project .
```

Ao instalar a skill, ajuste o primeiro caminho para apontar para
`specsfy-specialist-versioning/scripts/semver.mjs` dentro da biblioteca de
skills do agente.

## Antipadrões

- Usar `latest` como identidade de uma entrega.
- Alterar `SEMVER` depois que a imagem já foi compilada com outro valor.
- Criar a tag Git antes de confirmar a presença da imagem no registry.
- Recompilar o mesmo número para corrigir uma publicação. Prepare um novo
  incremento.
- Misturar a preparação local com autorização implícita para publicar ou
  alterar um ambiente remoto.

## Validação

- Executar `current` e `verify` para confirmar o conteúdo de `SEMVER`.
- Gerar a tag Docker com `docker-tag` e executar `verify-docker-tag` antes do
  build, push ou deploy; uma tag diferente do `SEMVER` interrompe o fluxo.
- Comparar a versão com a tag Git anterior e recusar valor igual ou inferior.
- Comparar `SEMVER`, tag da imagem, anotações OCI, changelog e manifesto de
  deploy.
- Confirmar o digest publicado antes de criar a tag Git.
- Conferir que o rollback aponta para uma versão e um digest já disponíveis.

## Skills relacionadas

- `$specsfy-specialist-deploy` é a única responsável por coordenar o fluxo
  completo de release ou deploy.
- `$specsfy-specialist-docker` constrói e publica a imagem identificada pela
  versão preparada aqui.
- `$specsfy-specialist-docker-swarm` aplica no cluster a imagem e o digest
  conferidos por esta skill.
- `$specsfy-specialist-ansible` transporta os manifestos versionados e executa
  o preflight nos hosts.
- `$specsfy-specialist-delivery-engineering` coordena testes, promoção, tag e
  GitHub Release.

Leia [references/standards.md](references/standards.md) para a correspondência
entre SemVer, Git, imagens OCI e a sequência de publicação.

