diagnoselisted
Install: claude install-skill JoniPraia/plugadvpl
# `/plugadvpl:diagnose`
Avalia os **pontos de decisao** (`If`/`ElseIf`/`While`) de um fonte ADVPL contra um **registro**
(valores reais de campos/variaveis) e devolve, para cada comparacao:
- o **desfecho EXATO** (`VERDADEIRO`/`FALSO`) — aritmetica deterministica sobre os valores reais;
- uma **explicacao relativizada** — numeros sensiveis viram **razao** (`saldo ~103% de limite`) em vez
do R$ real; status/flags/parametros sao mostrados (decidem e nao sao sensiveis).
Serve para **debugar bug dependente de dado** (ex.: "por que esse cliente bloqueou por limite?") sem
vazar o valor real: a IA ve o desfecho e a relacao, nunca o numero.
## Uso
```
/plugadvpl:diagnose <arquivo> --record-file <registro.json>
```
O registro e um JSON `{campo: valor}` (via `--record '{"A1_LC": 50000}'` ou `--record-file x.json`).
`--fields-file` (opcional) injeta os campos financeiros do SX3 para classificacao exata.
## Execucao
```bash
uvx plugadvpl@0.30.1 --format md diagnose $arquivo --record-file registro.json
```
> A flag `--format` vem **antes** do subcomando (e global no callback). Use `--format md` (ou `json`).
## Exemplo
Registro: `{"A1_MSBLQL": "2", "nSaldo": 21500, "nValPed": 30000, "A1_LC": 50000, "MV_X_LIBLIM": "N"}`
```
| linha | explicacao |
| 4 | A1_MSBLQL=2 == 1 -> FALSO |
| 8 | ( nSaldo + nValPed ) ~103% de A1_LC -> VERDADEIRO |
| 9 | SuperGetMV("MV_X_LIBLIM")=N == N -> VERDADEIRO |
```
> A IA conclui "bloqueou na linha 8 + 9" sem ver o R$ real (50000/5150