---
name: remove-backend
description: Remove o backend do modulo, transformando em frontend-only. Use apenas para modulos pure-view que nao precisam chamar APIs externas — o que eh raro.
user-invocable: true
disable-model-invocation: false
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
---

# Remove Backend

O quickstart vem com backend Hono por padrao porque a grande maioria dos modulos precisa proxyar APIs (banco via DPG, backoffices internos, APIs externas). Se seu modulo eh **pure-view** — so le dados que ja vem do shell context ou de `context.getProviderToken()` direto — da pra remover o backend.

Uso: `/remove-backend`

**Antes de rodar, confirme:**
- Seu modulo NAO chama nenhuma API externa? (Keycloak, backoffices, bancos, terceiros)
- Seu modulo NAO precisa de secrets do Vault?
- Seu modulo so usa o `ShellContext` (user, permissions, audit, theme, sharedCache, eventBus)?

Se alguma resposta for "precisa sim", **nao rode essa skill** — mantenha o backend, mesmo que inicialmente vazio.

## Passo 0 — Confirmacoes

1. Verifique que `backend/` existe. Se nao, nada a fazer.
2. Pergunte ao usuario:
   > "Seu modulo vai chamar alguma API externa (Keycloak, backoffices, banco, API de terceiro)? (s/n)"
   Se ele responder "s" ou hesitar, PARE e explique que remover o backend vai forcar a refazer quando precisar.
3. Pergunte:
   > "Tem certeza que quer remover `backend/`? Vou fazer backup em `backend.bak.<timestamp>/`, mas os templates do chart tambem vao ser ajustados. (s/n)"
   Confirmacao explicita necessaria.

## Passo 1 — Backup

```bash
mv backend backend.bak.$(date +%Y%m%d-%H%M%S)
```

## Passo 2 — Desabilitar backend no chart

Em `charts/{id}/values.yaml`:
```yaml
backend:
  enabled: false
```

Nao remova o bloco inteiro — apenas `enabled: false`. Isso mantem as imagens/resources listadas caso o dev queira reativar.

## Passo 3 — Remover templates do backend no chart

Delete:
- `charts/{id}/templates/deployment-backend.yaml`
- `charts/{id}/templates/service-backend.yaml`

O nginx ConfigMap (`charts/{id}/templates/nginx-configmap.yaml`) **nao precisa** mudar — o bloco `location /api/` ja esta dentro de `{{- if .Values.backend.enabled }}`, entao quando `enabled: false` ele some da configuracao renderizada automaticamente.

## Passo 4 — Remover `useBackendApi` e `ExampleBackendCall`

- Delete `src/hooks/useBackendApi.ts`
- Delete `src/components/ExampleBackendCall.tsx`
- Em `src/components/App.tsx`, remova o import e o uso de `<ExampleBackendCall />`

Se o dev ja tinha componentes que usavam `useBackendApi`, mostre as referencias e peca pra ele decidir o que fazer antes de continuar.

## Passo 5 — Pipeline

Em `.woodpecker-templates/build.yaml` (ou `.woodpecker/build.yaml` se ja foi ativado pelo `/platform-setup`):
- Delete os steps `build-backend` e `build-and-publish-backend`
- Em `argo-update-stage`, remova `build-and-publish-backend` do `depends_on:`

## Passo 6 — Atualizar `module.json`

```json
{
  "hasBackend": false
}
```

## Passo 7 — Atualizar scripts em `package.json`

Remova os scripts `dev:backend` e `dev:all` do `package.json` raiz. Remova `concurrently` das `devDependencies`:

```bash
npm uninstall concurrently
```

## Passo 8 — Atualizar Makefile

Remova os targets `dev-backend`, `dev-all`, `test-backend`, `build-backend` do `Makefile`.

## Passo 9 — Verificacao

```bash
npm run typecheck
npm run build
helm template charts/{id}/ -f platform/configs/values-stage.yaml > /tmp/rendered.yaml
grep -c "kind: Deployment" /tmp/rendered.yaml  # deve retornar 1 (so o frontend)
```

Se o helm template ainda mostrar um deployment de backend, algo ficou para tras.

## Passo 10 — Commit sugerido

```
refactor: remove backend — module is pure-view

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
```

## Regras

- SEMPRE faca backup antes de deletar (`backend.bak.*`).
- NAO delete `backend.bak.*` automaticamente.
- Se o dev tinha secrets no Vault relacionadas ao backend (via `/add-secrets`), avise que ele precisa limpar manualmente.
- Se ja tinha rodado `/platform-setup`, avise que o proximo deploy vai tentar deletar o service/deployment do backend do k8s — isso eh esperado.
