Compile
Skill tbc-servicos/dataagile-agent-kit/protheus/skills/compile
Plugin Claude Code para Protheus e ADVPL/TLPP — base 155k+ registros, Agent Teams, compilação TDS-CLI, testes TIR e MCP PO-UI
npx -y skills add tbc-servicos/dataagile-agent-kit --skill compileAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Compila fontes ADVPL/TLPP no AppServer Protheus via TDS-CLI (advpls). AÇÃO COM EFEITO COLATERAL — nunca auto-ativa, requer invocação explícita com namespace completo.
SKILL.md
6.4 KB, as published. Nobody here has run it
Visão Geral
A compilação usa o binário advpls do pacote @totvs/tds-ls. Há dois modos distintos: Lint local (advpls appre arquivo.prw) sem AppServer, e Compilação real (advpls cli compile.ini) no RPO.
Use o MCP protheus-compile para detalhes: searchKnowledge({ skill: "protheus-compile", keyword: "modos compilacao" })
Pré-requisito: binário advpls
Verificar se está disponível
# Opção 1 — global
advpls --version
# Opção 2 — local no projeto
node -e "console.log(require('@totvs/tds-ls'))"
# Opção 3 — path conhecido por plataforma
# Linux: node_modules/@totvs/tds-ls/bin/linux/advpls
# Windows: node_modules\@totvs\tds-ls\bin\windows\advpls.exe
# macOS: node_modules/@totvs/tds-ls/bin/mac/advpls
Instalar se ausente
# Opção 1 — npm global (recomendado)
npm i -g @totvs/tds-ls
# Opção 2 — npm local no projeto
npm install @totvs/tds-ls --save-dev
# Opção 3 — download direto (portátil, sem instalação)
# https://github.com/totvs/tds-ls/releases
Modo 1 — Lint local (advpls appre)
Analisa o código sem AppServer. Detecta erros de sintaxe e pré-compilação.
advpls appre /caminho/arquivo.prw
advpls appre /caminho/arquivo.prw -I /caminho/includes/
advpls appre /caminho/arquivo.prw -I /inc1/ -I /inc2/ -D TOP -D MINHA_DEFINE
Opções do appre
| Opção | Descrição |
|---|---|
-I <pasta> | Diretório de includes (repetível) |
-D <define> | Define constante de pré-compilador (repetível) |
Saída (JSON via stdout)
{
"msgs": {
"arquivo.prw": {
"Mensagem de erro aqui": "0",
"Aviso aqui": "1"
}
}
}
- Tipo
"0"= Erro (bloqueia compilação) - Tipo
!= "0"= Aviso (compilação pode prosseguir)
Formato das mensagens
As mensagens têm o padrão arquivo.prw(linha) texto da mensagem:
{
"msgs": {
"MATA010.prw": {
"MATA010.prw(42) Variable 'cAux' declared but not used": "1",
"MATA010.prw(10) Error C2090 File not found HEADER.CH": "0"
}
}
}
Categorização de severidade
Tipo "0" = Erro (bloqueia compilação); != "0" = Aviso (compilação pode prosseguir).
Use as tools do MCP protheus-compile:
- Padrões de warning e severidade:
searchKnowledge({ skill: "protheus-compile", keyword: "severidade erros" }) - Padrões comuns de warnings:
searchKnowledge({ skill: "protheus-compile", keyword: "warning patterns" }) - Parser de saída (linha e tipo de mensagem):
searchKnowledge({ skill: "protheus-compile", keyword: "parser saida compilador" })
Modo 2 — Compilação real (advpls cli)
Compila o fonte no RPO do AppServer. Requer configuração no CLAUDE.md do projeto.
Parâmetros necessários (lidos do CLAUDE.md do projeto)
PROTHEUS_SERVER=192.168.1.100
PROTHEUS_PORT=5025
PROTHEUS_ENV=P12
PROTHEUS_USER=admin
PROTHEUS_PSW=senha
PROTHEUS_INCLUDES=/opt/protheus/include/
PROTHEUS_AUTH_TOKEN=<token_harpia> # opcional
Gerar o arquivo compile.ini
O INI deve estar em encoding ANSI (CP1252). Gerar via:
iconv -f UTF-8 -t CP1252 -o "$INI" <<'INIEOF'
# conteúdo do INI aqui
INIEOF
Se os paths não contêm caracteres acentuados, o INI gerado por
cat/heredoc já é compatível.
Templates INI
Consulte os dois templates (com/sem token) via MCP: searchKnowledge({ skill: "protheus-compile", keyword: "ini template" })
Regra: se PROTHEUS_AUTH_TOKEN está definido no CLAUDE.md, usar template COM token (sem skip); caso contrário, usar template SEM token (skip=true).
Includes múltiplos: separar paths com
;— ex:/inc1/;/inc2/;/inc3/
Arquivo de lista de fontes
# /tmp/protheus-sources.txt — um arquivo por linha
/caminho/absoluto/MATA010.prw
/caminho/absoluto/MATA020.tlpp
Executar, verificar e limpar
TS=$(date +%s)
INI=/tmp/protheus-compile-${TS}.ini
LST=/tmp/protheus-sources-${TS}.txt
LOG=/tmp/protheus-compile-${TS}.log
# ... gerar $INI e $LST ...
advpls cli "$INI" --log-file "$LOG"
EXIT=$?
# 1. Ler o log ANTES de deletar
if [[ $EXIT -ne 0 && -f "$LOG" ]]; then
echo "=== LOG DE COMPILAÇÃO (erro) ==="
cat "$LOG"
echo "================================"
fi
# 2. Limpar temporários DEPOIS de ler
rm -f "$INI" "$LST" "$LOG"
echo "Exit code: $EXIT"
Detectar resultado
- Exit code 0 = sucesso
- Exit code != 0 = falha — o log já foi exibido acima antes da limpeza
Uso do skill
/protheus:compile arquivo.prw
/protheus:compile arquivo1.prw arquivo2.tlpp
/protheus:compile --recompile arquivo.prw
/protheus:compile --lint arquivo.prw # apenas lint local
Instruções para Claude
- Verificar
advpls: checar se o binário existe; se não, orientar instalação comnpm i -g @totvs/tds-lsou download direto de https://github.com/totvs/tds-ls/releases - Lint primeiro: rodar
advpls appreantes de compilar — se houver erros tipo"0", parar e reportar - Ler CLAUDE.md do projeto para obter
PROTHEUS_SERVER,PROTHEUS_PORT,PROTHEUS_ENV,PROTHEUS_USER,PROTHEUS_PSW,PROTHEUS_INCLUDES,PROTHEUS_AUTH_TOKEN - Gerar temporários em
/tmpcom timestamp único:compile-<ts>.ini,sources-<ts>.txt,compile-<ts>.log - Montar o INI: se
PROTHEUS_AUTH_TOKENestá definido, usar template COM token (semskip); caso contrário, usar template SEM token (skip=true). Não incluirlogToFileno INI — usar apenas--log-filena CLI. Garantir encoding ANSI (CP1252) se paths contêm acentos. - Executar
advpls cli "$INI" --log-file "$LOG"e capturar exit code - Sucesso: confirmar arquivos compilados
- Falha: ler o log (
cat "$LOG") e exibir erros com arquivo + linha ANTES de deletar - Sempre deletar os três arquivos temporários ao final — sucesso ou falha, após leitura do log
Tratamento de Erros Comuns
Consulte erros comuns e soluções via MCP: searchKnowledge({ skill: "protheus-compile", keyword: "troubleshooting" })
Consulta de Conhecimento
Se precisar de informação não disponível no MCP, consulte o RAG:
searchKnowledge({ keyword: "<termo relevante>" })