---
name: vrumm-setup
description: >
  Configures which branches the vrumm pack treats as protected, stored in
  .vrumm.json at the repository root. Use when user says "/vrumm-setup",
  "configurar branches protegidas", "mudar branch protegida", "proteger branch",
  "protected branches config", or asks to change which branches block direct push.
---

# /vrumm-setup — Configurar Branches Protegidas

Definir quais branches o vrumm trata como protegidas (bloqueio de push
direto pelo hook e guards das skills). A configuração fica em `.vrumm.json`
na **raiz do repositório**:

```json
{
  "protectedBranches": ["main", "staging"]
}
```

Padrão quando o arquivo não existe: `main`, `master`, `staging`.

Guardrail fail-safe do hook: arquivo malformado ou lista vazia → o hook
ignora o arquivo e volta ao padrão. Não é possível desligar a proteção
corrompendo o config.

## Regras de diálogo (obrigatórias)

- Toda alteração da configuração passa por `AskUserQuestion`.
  Nunca assumir resposta padrão nem prosseguir por inferência.
- Remover uma branch da proteção é decisão de risco: exige confirmação
  dedicada exibindo a consequência.
- A lista final nunca pode ficar vazia — exigir pelo menos 1 branch.
- Se a resposta vier fora das opções oferecidas, re-perguntar.

## Passo 1 — Exibir configuração atual

Ler `.vrumm.json` na raiz do repositório (`git rev-parse --show-toplevel`).

Exibir:
- Lista de branches protegidas em vigor (do arquivo ou o padrão, indicando
  a origem: "configurado" ou "padrão — sem .vrumm.json")
- Branches existentes no remote para referência: `git branch -r`

## Passo 2 — Escolher a ação

Usar `AskUserQuestion`:
- **Adicionar branch à proteção**
- **Remover branch da proteção**
- **Redefinir lista completa**
- **Restaurar padrão** — remove o `.vrumm.json` (volta a main/master/staging)
- **Apenas consultar** — encerrar sem alterar

## Passo 3 — Coletar as branches

**Adicionar:** usar `AskUserQuestion` (múltipla seleção) listando as
branches do remote que ainda não estão protegidas, com opção de digitar
nome manualmente (para branch que ainda não existe, ex: `production`).

**Remover:** usar `AskUserQuestion` (múltipla seleção) listando apenas as
branches atualmente protegidas. Em seguida, confirmação dedicada de risco:
exibir "A(s) branch(es) <lista> deixará(ão) de bloquear push direto" e
perguntar:
- **Confirmar remoção da proteção** — usuário assume explicitamente
- **Cancelar** — manter configuração atual

**Redefinir:** usuário informa a lista completa; validar que não fica vazia.

Se a operação resultar em lista vazia, informar que não é permitido e
voltar ao Passo 2.

## Passo 4 — Confirmação final + Gravar

Exibir o diff da configuração (antes → depois) e confirmar via
`AskUserQuestion`:
- **Gravar** — prosseguir
- **Cancelar** — encerrar sem alterar

Gravar `.vrumm.json` na raiz do repositório com JSON válido e indentado
(2 espaços). Para "Restaurar padrão", deletar o arquivo.

## Passo 5 — Validar e informar

Validar o arquivo gravado: `node -e "JSON.parse(require('fs').readFileSync('.vrumm.json','utf8'))"`.

Informar ao usuário:
- A nova lista em vigor (o hook lê o arquivo em runtime — a mudança vale
  imediatamente, sem reiniciar a sessão)
- Que `.vrumm.json` deve ser commitado para o guardrail valer para o time
  (usar o fluxo normal `/vrumm` + `/vrumm-go`, nunca push direto)
