---
name: health-score
description: Calcula nota de saude 0-100 do projeto analisando protecao, backend, frontend, integracao e qualidade. Ativa com /health-score ou "qual a nota?".
---

# Health Score — Nota de Saude do Projeto (0-100)

## Quando ativar
- Quando o usuario digitar `/health-score`
- Quando disser: "qual a nota?", "ta tudo amarrado?", "como ta a saude?", "score do projeto", "nota do projeto"

## O que fazer ao ativar

### Passo 1: Coletar dados
1. Verificar se existe snapshot do Guardian em `~/.claude/shield/snapshots/{projeto}.json`
2. Verificar se existe scan recente do Scanner em `~/.claude/shield/reports/{projeto}-scan-*.json`
3. Se nao existir scan, rodar o Scanner primeiro (skill /scanner)

### Passo 2: Calcular score por categoria

#### PROTECAO (20 pontos)
| Check | Pontos | Como verificar |
|-------|--------|---------------|
| Snapshot existe | 5 | Arquivo existe em ~/.claude/shield/snapshots/ |
| Snapshot atualizado (< 7 dias) | 5 | Data do snapshot |
| Nenhum arquivo protegido deletado | 5 | Comparar snapshot com estado atual |
| Nenhuma rota removida | 5 | Comparar rotas do snapshot com rotas atuais |

#### BACKEND (20 pontos)
| Check | Pontos | Como verificar |
|-------|--------|---------------|
| Zero imports quebrados | 4 | Resultado do scanner |
| Zero rotas orfas | 4 | Resultado do scanner |
| ENV completo | 4 | Todas env vars tem .env.example |
| Zero secrets hardcoded | 4 | Resultado do scanner |
| Error handling adequado | 4 | Async handlers com try/catch |

#### FRONTEND (20 pontos)
| Check | Pontos | Como verificar |
|-------|--------|---------------|
| Zero componentes orfaos | 4 | Resultado do scanner |
| Zero links quebrados | 4 | Resultado do scanner |
| Zero console.log | 4 | Resultado do scanner |
| Assets todos existem | 4 | Resultado do scanner |
| Acessibilidade basica ok | 4 | img com alt, button com type |

#### INTEGRACAO (20 pontos)
| Check | Pontos | Como verificar |
|-------|--------|---------------|
| API match (front chama o que back tem) | 5 | Cruzamento de endpoints |
| Portas corretas | 5 | Configs apontam pras portas certas |
| CORS configurado | 5 | Origem do front permitida |
| WebSocket sincronizado | 5 | Eventos cruzados |

#### QUALIDADE (20 pontos)
| Check | Pontos | Como verificar |
|-------|--------|---------------|
| TypeScript sem any excessivo (<5) | 5 | Contagem de any |
| Arquivos dentro do limite (< 500 linhas) | 5 | wc -l dos arquivos |
| Zero TODO/FIXME criticos | 5 | Grep por TODO/FIXME |
| Dependencias atualizadas | 5 | Sem vulnerabilidades conhecidas |

### Passo 3: Calcular nota final

```
SCORE = Protecao + Backend + Frontend + Integracao + Qualidade
```

### Passo 4: Classificar

| Score | Status | Cor | Acao |
|-------|--------|-----|------|
| 90-100 | BLINDADO | Verde | Pode deployar |
| 70-89 | SAUDAVEL | Azul | Pequenos ajustes |
| 50-69 | ATENCAO | Amarelo | Corrigir antes de avancar |
| 30-49 | RISCO | Laranja | Parar e resolver |
| 0-29 | CRITICO | Vermelho | Nao mexer em nada novo |

### Passo 5: Mostrar resultado

```
HEALTH SCORE — {Projeto}
=========================

  ██████████████████░░  87/100  SAUDAVEL

  Protecao      ████████████████████  20/20
  Backend       ████████████████░░░░  16/20
  Frontend      ██████████████░░░░░░  14/20
  Integracao    ████████████████████  20/20
  Qualidade     ████████████████░░░░  17/20

  O que melhorar:
  - Backend: 2 rotas sem error handling (server.ts:45, api.ts:112)
  - Frontend: 3 console.log esquecidos (Dashboard.tsx, Settings.tsx)
  - Qualidade: 1 arquivo com 623 linhas (routes.ts — considerar split)

  Historico:
  28/03: 82 → 01/04: 87 (+5)
```

### Passo 6: Salvar historico
Salvar em `~/.claude/shield/reports/{projeto}-score-{data}.json`:
```json
{
  "project": "nome",
  "date": "2026-04-01",
  "score": 87,
  "status": "SAUDAVEL",
  "breakdown": {
    "protecao": 20,
    "backend": 16,
    "frontend": 14,
    "integracao": 20,
    "qualidade": 17
  },
  "issues": [...],
  "improved_since_last": 5
}
```

## Integracao com Guardian e Scanner
- Usa dados do Scanner para calcular backend/frontend/integracao/qualidade
- Usa dados do Guardian (snapshot) para calcular protecao
- Se score < 50, recomendar ativar Guardian em modo estrito
- Se score cair entre medicoes, alertar o usuario
