---
name: guardian
description: Protege codigo aprovado contra delecao/reescrita. Consulta registry de skills/agents/projetos antes de qualquer acao. Ativa com /guardian ou "protege isso".
---

# Guardian — Sistema de Protecao do Ecossistema

## Quando ativar
- Quando o usuario digitar `/guardian`
- Quando disser: "protege isso", "nao deixa apagar", "cuidado com o que mexe", "checa antes"
- AUTOMATICAMENTE antes de qualquer Edit/Write/delete em projeto com snapshot

## O que fazer ao ativar

### Passo 1: Identificar o projeto
Detectar em qual projeto o usuario esta trabalhando pela pasta atual ou pelo contexto da conversa.

### Passo 2: Carregar contexto
1. Ler `~/.claude/shield/registry.json` para saber tudo que ja existe no ecossistema
2. Verificar se existe snapshot em `~/.claude/shield/snapshots/{projeto}.json`
3. Se existir, carregar lista de arquivos/rotas/componentes protegidos

### Passo 3: Modo de operacao

#### MODO CONSULTA (antes de criar algo novo)
Quando o usuario pedir pra criar algo, ANTES de comecar:
1. Consultar registry.json pelo dominio relevante
2. Listar tudo que ja existe (skills, agents, projetos) nesse dominio
3. Recomendar usar o que ja tem ao inves de criar do zero
4. So criar novo se o usuario confirmar que nenhum existente serve

Exemplo:
```
Usuario: "cria um sistema de WhatsApp"
Guardian: "Ja existe:
  - Skill /whatsapp-connect (conexao QR + envio)
  - Skill /whatsapp-ai-bot (bot com Gemini + dashboard)
  - Projeto UtilityPro (porta 3400, templates + broadcasts)
  Qual deles voce quer usar? Ou precisa algo diferente?"
```

#### MODO PROTECAO (antes de editar codigo)
Antes de qualquer Edit ou Write em arquivo existente:

1. **Verificar snapshot** — o arquivo esta na lista protegida?
2. **Analisar mudanca** — a edicao remove alguma funcao/rota/componente?
3. **Bloquear se necessario** — se a mudanca deleta algo aprovado, PARAR e perguntar

Regras INVIOLAVEIS:
- NUNCA usar Write para reescrever arquivo inteiro que ja existe — SEMPRE Edit cirurgico
- NUNCA remover funcao/metodo/componente que esta sendo importado por outro arquivo
- NUNCA deletar rota de API sem verificar quem consome
- NUNCA dropar tabela/coluna de banco
- NUNCA remover export que outro arquivo usa
- NUNCA mudar assinatura de funcao publica sem checar dependentes
- NUNCA remover tratamento de erro existente
- NUNCA trocar biblioteca sem confirmar com usuario

#### MODO SNAPSHOT (salvar estado aprovado)
Quando o usuario disser "aprovo", "ta perfeito", "pode salvar", "snapshot":

1. Gerar snapshot do projeto atual:
```bash
# Listar arquivos com hash
find {projeto_path}/src -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" \) -exec md5 {} \; > snapshot_files

# Listar rotas da API
grep -rn "router\.\(get\|post\|put\|delete\|patch\)" {projeto_path}/src/ > snapshot_routes

# Listar componentes React
grep -rn "export.*function\|export default\|export const" {projeto_path}/src/ --include="*.tsx" > snapshot_components

# Listar tabelas do banco
grep -rn "CREATE TABLE\|db\.prepare" {projeto_path}/src/ > snapshot_db
```

2. Salvar em `~/.claude/shield/snapshots/{projeto}.json`:
```json
{
  "project": "nome",
  "path": "/caminho",
  "date": "2026-04-01",
  "files": [{"path": "src/x.ts", "hash": "abc123", "lines": 234}],
  "routes": [{"method": "GET", "path": "/api/users", "file": "src/routes/users.ts"}],
  "components": [{"name": "Header", "file": "src/components/Header.tsx", "exports": ["Header"]}],
  "db_tables": [{"name": "users", "file": "src/db/schema.ts"}],
  "env_vars": ["PORT", "DATABASE_URL", "JWT_SECRET"]
}
```

## Output ao ativar
Mostrar resumo compacto:
```
GUARDIAN ATIVO — {Projeto}
  Snapshot: {data} | {N} arquivos protegidos
  Rotas: {N} endpoints | Componentes: {N}
  Registry: {dominio} — {N} skills disponiveis

  Regra: Edit cirurgico. Nada sera deletado sem sua aprovacao.
```

## Se nao tem snapshot ainda
Perguntar: "Este projeto ainda nao tem snapshot. Quer que eu crie um agora com o estado atual?"
