validar-cns-cartao-suslisted
Install: claude install-skill roldaobatista/roldao-method
# validar-cns-cartao-sus
Valida o Cartão Nacional de Saúde brasileiro localmente (sem chamar API). Implementa o algoritmo público do DataSUS.
## O que faz
Recebe um CNS com ou sem máscara e retorna JSON com:
- `valido: true | false`
- `tipo: "definitivo" | "provisorio" | null`
- `mensagem: <razão da falha em PT-BR, ou confirmação>`
## Como usar
```bash
python3 .claude/skills/validar-cns-cartao-sus/scripts/validar-cns.py "100 0000 0000 0007"
# {"valido": true, "tipo": "definitivo", "mensagem": "CNS definitivo valido"}
python3 .claude/skills/validar-cns-cartao-sus/scripts/validar-cns.py "800000000000001"
# {"valido": true, "tipo": "provisorio", "mensagem": "CNS provisorio valido"}
echo "100000000000007" | python3 .claude/skills/validar-cns-cartao-sus/scripts/validar-cns.py -
# le do stdin
```
> **Windows:** `python` em vez de `python3` (ou `py` se usar Python Launcher).
Exit code: 0 se válido, 1 se inválido, 2 se erro de input (faltou argumento).
## Algoritmo
CNS tem 15 dígitos. O primeiro dígito define o tipo:
### CNS definitivo (começa com 1 ou 2)
Primeiros 11 dígitos = PIS/PASEP do titular. Validação:
1. `soma = Σ (PIS[i] × peso[i])` onde pesos vão de 15 a 5 (i de 0 a 10).
2. `resto = soma % 11`.
3. Se `resto == 10`: incrementa soma em 2, recalcula resto, `DV = 11 - resto`, sufixo `"001"`.
4. Senão: `DV = 0` se `resto == 0`, ou `DV = 11 - resto`, sufixo `"000"`.
5. CNS esperado = PIS (11) + sufixo (3) + DV (1) = 15 dígitos.
6. Verificação redundante: soma ponde