From plugadvpl
Compiles ADVPL source code via plugadvpl (TOTVS advpls wrapper). Includes a mandatory 4-step workflow for the Claude Code agent.
How this skill is triggered — by the user, by Claude, or both
Slash command
/plugadvpl:compilefonteThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> 🤖 **Para o agente**: este skill tem um **workflow obrigatório de 4 passos**.
/plugadvpl:compile🤖 Para o agente: este skill tem um workflow obrigatório de 4 passos. NUNCA tente compilar direto. Sempre rode
--doctorprimeiro.Se o usuário não sabe o que precisa fornecer, aponte pra
docs/compile-checklist.md— explica os 5 dados (advpls, includes, host/port, build/env, credenciais) que ele precisa reunir, com instruções de onde achar cada um.
plugadvpl --format json compile --doctor
Output traz status (ready | needs_setup) e next_actions (lista ordenada do que falta).
needs_setup: processar cada next_actionPara cada item em next_actions, agir conforme action:
set_advpls_binaryCaminho preferido: orientar o user a rodar:
plugadvpl compile --install-advpls
Comando interativo que pergunta "copiar de local existente" ou "baixar do Marketplace",
mostra plano (tamanho, paths, se precisa rede) + pede confirmação antes de cada ação.
Instala em ~/.plugadvpl/advpls/bin/<os>/ — --doctor detecta automaticamente nas
próximas chamadas. Não precisa configurar nada após --install-advpls.
Se o user quiser fazer manual:
export PLUGADVPL_ADVPLS_BINARY=<path> ou editar [tds_ls].binary no runtime.tomldocs/compile-checklist.md §1set_includescandidates não-vazio: mostre ao usuário ("Detectei estas pastas com PRTOPDEF.CH e protheus.ch, qual usar?")Include/ Protheus. Se usuário não tem (sem AppServer/SDK), informe que --mode appre não funciona — apenas --mode cli (que compila no AppServer remoto)--includes <path> nas próximas execuções OU editar [compile].includes = ["<path>"] no runtime.tomlcreate_runtime_toml--use-server <nome> em vez de criar runtime.toml. Mais rápido e cobre
múltiplos AppServers (dev/hml/prod) sem editar arquivo a cada compilação.plugadvpl compile --init-config<root>/.plugadvpl/runtime.toml preenchendo:
[tds_ls].binary — path do advpls[appserver] — host, port, build, environment do AppServer alvo[auth] — user_env/password_env (nome das env vars, NUNCA valor)[compile].includes — pasta com includesuse_servercandidates = nomes de servers já registrados em ~/.plugadvpl/servers.jsonplugadvpl compile --use-server <nome> --mode cli <fonte.prw>--use-environment TESTimport_tds_servers~/.totvsls/servers.json (TDS-VSCode) existe mas registry plugadvpl está vazioplugadvpl compile --import-tds-servers (interativo, pede confirmação)--use-server <nome> normalmenteset_env_varsecret: true (PROTHEUS_PASS): NUNCA logue valor. Oriente:
$env:PROTHEUS_PASS = "<sua-senha>" # PowerShell
export PROTHEUS_PASS='<sua-senha>' # bash
secret: false (PROTHEUS_USER): pode pedir valor direto ao userstart_appserverappserver.exe na pasta Protheusssh -L 1234:localhost:1234 user@host -N + host = "127.0.0.1" no runtime.toml--doctor até status = "ready"plugadvpl --format json compile --doctor
Loop: cada vez que resolver um next_action, re-rode pra confirmar e ver se sobrou mais alguma coisa.
Quando status: "ready", o mode_supported diz quais modos funcionam:
appre (sem AppServer): plugadvpl compile --mode appre --includes <pasta> FONTE.PRWcli: pode escolher --mode cli (full compile semântico) ou --mode appre (rápido)Convenção crítica: flags --xxx SEMPRE antes do nome do arquivo (positional variadic).
# ✅ Certo
plugadvpl --format json compile --mode appre --includes "D:\Protheus\Include" MEUFONTE.PRW
# ❌ Errado (typer consome --mode como nome de arquivo)
plugadvpl compile MEUFONTE.PRW --mode appre
/plugadvpl:lint/plugadvpl:arch <arquivo>/plugadvpl:callers <funcao>compile (não --doctor){
"rows": [
{"arquivo", "ok", "mode", "duration_ms", "exit_code",
"counts": {"error", "warning", "info", "unknown"},
"diagnostics": [{"severidade", "arquivo", "linha", "coluna",
"mensagem", "codigo", "raw"}]}
],
"next_steps": [...]
}
Bucket __unmatched__ aparece se advpls reportar arquivo fora do requested_files.
0 — sucesso (zero errors)1 — error parseado OU subprocess falhou2 — config/setup inválido OU --doctor retornou needs_setup130 — Ctrl-C (POSIX SIGINT)| Modo | Pega | NÃO pega |
|---|---|---|
appre | sintaxe básica, #include faltando, macro inválida, define duplicado | erros semânticos (If sem EndIf, tipo incompatível, função inexistente) |
cli | tudo (pré-processador + semântica + binding) — full compile | nada relevante |
Pra usuário aprender ADVPL via plugin, appre já entrega 60% do valor (C2090/C2006/C2090 família). Pra CI rigoroso, exigir cli.
docs/setup-compile.md — guia passo-a-passo de
instalação (binário, includes, AppServer, CI YAML pronto, SSH tunnel,
6 troubleshooting comuns).
npx claudepluginhub jonipraia/plugadvpl --plugin plugadvplOrchestrates compile → restart → smoke for ADVPL/.prw sources on Protheus AppServer. Use after editing sources when user says "deploy", "compile and restart", or wants to see effect on server.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.