São 14h de uma quarta-feira. Você abre um .prw de 2008 — 1.200 linhas, comentários em portunhol, variáveis tipo cVar1, três níveis de IF aninhado e um RecLock sem MsUnlock escondido na linha 847. Aperta Ctrl+F9. Console do TDS-VSCode cospe: ERROR: 'EXEMPLO' is not declared. Linha errada, mensagem genérica, zero contexto. Você já está na quarta xícara de café.
Esse é o ponto onde o TOTVS Developer Studio for VSCode termina e o Claude AI começa. Um resolve a parte mecânica do desenvolvimento Protheus — compila, debuga, conecta no AppServer, gera patch. O outro resolve a parte cognitiva — entende o que o erro quer dizer, aponta o lock perdido na linha 847 antes de você compilar, e refatora o monstro pra algo legível em 30 segundos. Os dois juntos no mesmo workspace mudam o jogo.
O que o TDS-VSCode já entrega
A extensão oficial da TOTVS (github.com/totvs/tds-vscode) é uma suíte completa de desenvolvimento Protheus baseada em LSP (Language Server Protocol) e DAP (Debug Adapter Protocol). Ela faz o trabalho pesado: compilação remota via AppServer (atalho Ctrl+F9), debug com SmartClient integrado ao tipo de launch totvs_language_debug, geração de patches, manutenção de RPO, monitor de servidor, web service client, replay de execução. Encoding fixo cp1252 (Windows1252) pra preservar acentos no fonte. Suporta AdvPL, TLPP e 4GL nativamente.
O que ela não faz é entender o seu código. Ela compila — mas não te diz que aquele RecLock nunca é fechado. Ela mostra o erro — mas em inglês cru, sem explicar a causa. Ela permite refatorar — mas você quem digita.
Onde a extensão para e o Claude começa
| Tarefa | TDS-VSCode | Claude AI |
|---|---|---|
| Compilar fonte | Sim (Ctrl+F9, AppServer) | Não compila |
| Debug step-by-step | Sim (SmartClient) | Não acessa runtime |
| Conectar no AppServer | Sim (LSP nativo) | Não |
| Detectar lock sem unlock | Não (linter sintático) | Sim (semântico) |
| Explicar erro de compilação em pt-BR | Não | Sim |
| Refatorar legado preservando comportamento | Não | Sim |
| Gerar doc no estilo TDN | Não | Sim |
| Detectar SQL sem D_E_L_E_T_ | Não | Sim |
| Sugerir boilerplate de MSExecAuto | Não | Sim |
O ponto não é substituir o TDS-VSCode — é parar de pedir pra ele fazer o que ele nunca foi feito pra fazer. Compilação, conexão, debug seguem com a extensão. Tudo que envolve entender o código vai pro Claude.
Setup combinado
As duas extensões convivem no mesmo workspace sem brigar. O TDS-VSCode mantém o cache dele em .vscode/.advpl/ (arquivos _binary_class.prw e _binary_functions.prw com índice de classes/funções pra autocomplete) e .vscode/.linter/. O Claude Code lê os .prw e .tlpp direto da pasta do projeto.
Pequeno detalhe técnico: o TDS-VSCode salva fonte em cp1252 por exigência do AppServer. O Claude Code lê em UTF-8 por default — se aparecer caractere estranho ao colar fonte no chat, é encoding. Solução: salvar uma cópia temporária em UTF-8, ou pedir pro Claude ignorar acentos do header.
launch.json típico de quem usa as duas:
{
"version": "0.2.0",
"configurations": [
{
"type": "totvs_language_debug",
"request": "launch",
"name": "TOTVS Language Debug",
"program": "${command:AskForProgramName}",
"smartclientBin": "../totvs/bin/smartclient/smartclient.exe",
"isMultiSession": true,
"enableTableSync": true
}
]
}Workflow 1: Code review antes de Ctrl+F9
Antes de mandar pro AppServer compilar, peça revisão semântica. Prompt copy-paste:
revisa esse fonte AdvPL antes de eu compilar.
foco em:
- RecLock sem MsUnlock
- SQL sem D_E_L_E_T_ = ' '
- variáveis nao declaradas (LOCAL/PRIVATE/PUBLIC)
- User Function sem prefixo do projeto
- alocacao de recurso sem free
[cole o fonte aqui]Resposta típica do Claude num fonte real:
3 problemas:
1. Linha 47:RecLock("SE1", .F.)abre lock mas oMsUnlock()só está dentro do blocoIf— se cair noElse, o registro fica travado. Mover pra fora doEndIf.
2. Linha 89:TCQuerysem filtroD_E_L_E_T_ = ' '— vai retornar registros logicamente deletados como se estivessem ativos.
3. Linha 12:cAuxusada sem declaração — vira PUBLIC implícito, contamina escopo do chamador.
O TDS-VSCode nunca aponta isso — não é trabalho dele. O linter sintático dele acha typo, função inexistente, parêntese faltando. Padrão semântico é outra liga.
Workflow 2: Diagnosticar erro de compilação
Compilou e bateu erro. Em vez de googlar, copia a mensagem do Output do TDS-VSCode e pergunta direto:
esse erro veio do TDS-VSCode ao compilar:
Error: ERROR LINE 47: 'EXEMPLO' is not declared
fonte:
[cola as 50 linhas em volta]
o que pode ser?Resposta típica:
Causa provável: você está chamando
EXEMPLO()mas a função não está definida no escopo. 3 hipóteses por ordem de probabilidade:
1. Esqueceu o prefixoU_— se for User Function, a chamada deve serU_EXEMPLO().
2. Falta#INCLUDEdo header.chque declaraEXEMPLOcomo#XCOMMANDou#TRANSLATE.
3. Função existe em outro.prwmas não foi incluída no RPO da compilação.
Você não precisa abrir 4 abas do TDN nem perguntar no grupo do WhatsApp — vem em 5 segundos.
Workflow 3: Refatorar fonte legado
Função de 2008 com 5 níveis de aninhamento e variáveis cVar1/nVar2:
refatora pra AdvPL moderno:
- nomes claros (cClienteCod ao invés de cVar1)
- early-return ao invés de if aninhado
- extrai validações em funções pequenas
- mantém comportamento idêntico
- preserva o header de copyright
[cola fonte legado]Claude entrega versão refatorada lado a lado. Cuidado importante: rode os testes de regressão antes de subir. IA refatora bem, mas em fluxo financeiro/fiscal qualquer mudança sutil de comportamento pode estourar conciliação.
Workflow 4: Gerar documentação no estilo TDN
Função sem comentário? Cola o corpo e peça:
gera o header de documentacao no estilo TDN para essa funcao.
formato: bloco de comentarios com Funcao, Descricao,
Uso, Parametros, Retorno, Historico (data + autor + alteracao).
semana atual: 06/05/2026, autor: Mayco.Saída pronta pra colar antes da função:
/*/{Protheus.doc} ATSaldoReal
Retorna o saldo real de um título considerando
baixas, abatimentos e juros vinculados.
@type Function
@author Mayco
@since 06/05/2026
@version 1.0
@param cPrefixo, character, prefixo do título
@param cNum, character, numero do título
@param cParcela, character, parcela
@param cTipo, character, tipo do título
@return numeric, saldo real, ou -1 se nao encontrado
/*/Workflow 5: Boilerplate de User Function
Pra começar uma rotina nova sem ficar caçando exemplo no Slack:
gera boilerplate de User Function que faz inclusao de produto via
MSExecAuto chamando MATA010, com:
- PRIVATE lMsErroAuto e lMsHelpAuto
- Begin Transaction com DisarmTransaction em erro
- GetAutoGrLog pra captura
- GetArea/RestArea
- retorno {lOk, cMsg}O Claude entrega o esqueleto pronto. Você ajusta os 3-4 campos específicos do seu caso e está livre pra focar no que importa: a regra de negócio.
O que NÃO delegar pro Claude
Tem coisa que IA não faz. Pra você não cair em armadilha:
- Não compila. Compilação só rola via TDS-VSCode + AppServer. Claude não tem RPO, não conhece sua versão do Protheus, não roda
.prw. - Não vê estado de runtime. Variáveis em memória, conteúdo da SE1, MV_PARs no ambiente atual — invisíveis. Pra debug ao vivo, é TDS-VSCode com breakpoint.
- Pode alucinar nomes de função. Especialmente em TLPP recente (versão 12.1.NN), Claude pode citar uma
FwSomething()que não existe na sua build. Sempre cruze com o TDN. - Não substitui code review humano em mudança crítica. Sempre que tocar em fluxo fiscal, contábil, financeiro: olho humano experiente, mais teste de regressão, mais ambiente de homologação. Claude é primeiro filtro, não único.
8 prompts prontos para o seu dia
| Tarefa | Prompt resumido |
|---|---|
| Review pré-compile | revisa fonte AdvPL: locks, SQL sem D_E_L_E_T_, vars nao declaradas |
| Explicar erro | esse erro do TDS-VSCode + fonte em volta. o que pode ser? |
| Refatorar legado | refatora pra AdvPL moderno: nomes claros, early-return, mantem comportamento |
| Gerar header TDN | gera Protheus.doc dessa funcao com Funcao/Descricao/Param/Return/Historico |
| Boilerplate ExecAuto | boilerplate User Function MSExecAuto MATA010 com tratamento de erro |
| Validar SQL | auditar essa TCQuery: filial, D_E_L_E_T_, performance, indices |
| AdvPL → TLPP | traduz essa funcao AdvPL para TLPP moderno com tipagem e namespace |
| Auditar performance | identifica gargalos nesse loop: SaldoTit/Posicione/SQL em loop |
O fluxo de dev com IA
ao Claude AI] Review --> Issues{Achou
problema?} Issues -->|Sim| Fix[Aplicar fix sugerido] Fix --> Compile Issues -->|Nao| Compile[Ctrl+F9 no TDS-VSCode] Compile --> ErrComp{Erro de
compilacao?} ErrComp -->|Sim| Diag[Colar erro no Claude
pra diagnostico] Diag --> Fix ErrComp -->|Nao| Debug[Debug no SmartClient
via TDS-VSCode] Debug --> RunErr{Erro em
runtime?} RunErr -->|Sim| Inspect[Inspecionar variaveis
no debugger TDS] Inspect --> AskAI[Perguntar Claude
com contexto coletado] AskAI --> Fix RunErr -->|Nao| Done[Subir pra homologacao]
O caminho daqui
O TDS-VSCode expõe uma API pública com métodos como generatePPO, createProtheusServer e apiTlppTools — em tese, dá pra construir uma extensão que orquestra Claude e TDS-VSCode juntos: revisão automática antes de cada Ctrl+F9, diagnóstico de erro injetado direto no Problems do VSCode, geração de doc disparada pelo menu de contexto. Hoje é manual (você cola o fonte, pergunta, aplica). Amanhã pode ser plug-in.
Por enquanto, o ganho já está em parar de tratar a IA como gimmick. Use como ferramenta de pensamento técnico — review, diagnóstico, refatoração, doc — e mantenha TDS-VSCode pro que ele faz bem: compilar, debugar, conectar. Os dois juntos cortam ciclos de minutos pra segundos. Pra dev Protheus em 2026, esse é o stack mínimo viável.
Topa testar a skill?
A claude-advpl-skill v0.2.0 esta liberada — open source, MIT, sem trava. Baixar ZIP v0.2.0 (64 KB) →
Instalacao em 30 segundos
unzip claude-advpl-skill-v0.2.0.zip
cd claude-advpl-skill
bash install.sh # Linux/Mac/Git Bash
# ou
.install.ps1 # Windows nativoDepois disso, em qualquer sessao Claude Code:
/advpl-setup— instala e valida ambiente (1x apenas)/advpl-validate arquivo.prw— pre-compile local, sem AppServer/advpl-servers— lista AppServers configurados na sua extensao TDS-VSCode/advpl-compile arquivo.prw— compila no AppServer remoto (auto-detecta servers do TDS-VSCode)
Lancamento v0.2.0: nova skill /advpl-find-issues faz analise estatica profunda de fontes AdvPL/TLPP com 9 regras (RecLock sem MsUnlock, SQL sem D_E_L_E_T_, Function nua, For sem Local, MemoWrite esquecido, e mais). Aceita arquivo ou pasta recursiva. Total: 7 skills + 11 templates + parser AdvPL. Open source, MIT.
Feedback, bug ou ideia pra v0.2? comercial@archtecgroup.com.br
Comentarios 0