---
name: rollback-plan
description: "Para features de alto risco (infra, migrations, auth, CI/CD), gera plano de rollback com etapas reversíveis e critério de acionamento. Salva em features/<feature>/ROLLBACK.md."
---

# Objetivo

Garantir que qualquer feature de alto risco tenha um plano de rollback documentado, testável e acionável antes de chegar em produção.

# Quando usar
Use esta skill quando a feature tocar:

- migrations de banco de dados
- autenticação, autorização ou sessões
- infraestrutura Docker, Kubernetes ou scripts de boot
- pipelines de CI/CD ou hooks críticos
- integrações externas com estado persistente
- mudanças de schema ou contratos de API

# Quando NÃO usar
Não use esta skill para:

- features puramente de UI sem efeito colateral persistente
- refatorações internas sem mudança de contrato
- hotfixes simples que afetam apenas lógica local

# Leia antes de agir

1. `../release-prep/scripts/release_context.py --format json`
2. `features/<feature>/SPEC.md` — escopo e critérios de aceite
3. `features/<feature>/REPORT.md` — riscos identificados
4. Código da feature (diff do branch) — para identificar operações irreversíveis

# Processo

1. Identifique operações irreversíveis ou de alto impacto no diff.
2. Para cada operação, defina:
   - **Critério de acionamento**: quando acionar o rollback (ex: erro em produção, métrica fora de range)
   - **Etapas de rollback**: passo a passo para desfazer
   - **Comando ou script**: se possível, comando concreto
   - **Tempo estimado**: quanto leva o rollback
   - **Dependências**: o que precisa estar disponível para executar o rollback
3. Documente em `features/<feature>/ROLLBACK.md`.

# Estrutura de ROLLBACK.md

```markdown
# Rollback — <feature-id>

## Critério de acionamento
<quando acionar>

## Etapas

### 1. <operação de risco>
- Rollback: <comando ou descrição>
- Tempo estimado: <X min>
- Dependência: <o que precisa estar disponível>

## Validação pós-rollback
- [ ] <verificação 1>
- [ ] <verificação 2>

## Contato de escalação
<quem acionar se o rollback falhar>
```

# Regras obrigatórias

- Não invente etapas de rollback que não sejam executáveis.
- Se uma operação for irreversível (ex: drop de tabela), documente isso explicitamente e exija aprovação manual antes do deploy.
- Não substitui `security-review` — execute após ela.

# Saída final esperada

1. `features/<feature>/ROLLBACK.md` criado
2. lista de operações irreversíveis identificadas
3. recomendação: prosseguir ou escalar para revisão manual
