Frappe Core API
Impertio-Studio/Frappe_Claude_Skill_Package
A skill your agent uses when building ERPNext/Frappe API integrations (v14/v15/v16) including REST API, RPC API, authentication, webhooks, and rate limiting.
Generate AdvPL/TLPP code that CONSUMES external REST APIs using the FWRest client class.
$ npx skills add totvs/engpro-advpl-tlpp-skills --skill fwrest-client-generator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install totvs/engpro-advpl-tlpp-skills fwrest-client-generator --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/totvs/engpro-advpl-tlpp-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/advpl-tlpp/fwrest-client-generator .claude/skills/fwrest-client-generator && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "fwrest-client-generator" agent skill from https://github.com/totvs/engpro-advpl-tlpp-skills/tree/main/skills/advpl-tlpp/fwrest-client-generator into .claude/skills/fwrest-client-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fwrest-client-generator", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/totvs/engpro-advpl-tlpp-skills/tree/main/skills/advpl-tlpp/fwrest-client-generatorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add totvs/engpro-advpl-tlpp-skills --skill fwrest-client-generator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install totvs/engpro-advpl-tlpp-skills fwrest-client-generator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/totvs/engpro-advpl-tlpp-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/advpl-tlpp/fwrest-client-generator .agents/skills/fwrest-client-generator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fwrest-client-generator" agent skill from https://github.com/totvs/engpro-advpl-tlpp-skills/tree/main/skills/advpl-tlpp/fwrest-client-generator into .agents/skills/fwrest-client-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fwrest-client-generator", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add totvs/engpro-advpl-tlpp-skills --skill fwrest-client-generator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install totvs/engpro-advpl-tlpp-skills fwrest-client-generator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/totvs/engpro-advpl-tlpp-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/advpl-tlpp/fwrest-client-generator .cursor/skills/fwrest-client-generator && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fwrest-client-generator" agent skill from https://github.com/totvs/engpro-advpl-tlpp-skills/tree/main/skills/advpl-tlpp/fwrest-client-generator into .cursor/skills/fwrest-client-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fwrest-client-generator", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/totvs/engpro-advpl-tlpp-skills.git --path skills/advpl-tlpp/fwrest-client-generator--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add totvs/engpro-advpl-tlpp-skills --skill fwrest-client-generator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install totvs/engpro-advpl-tlpp-skills fwrest-client-generator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/totvs/engpro-advpl-tlpp-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/advpl-tlpp/fwrest-client-generator .gemini/skills/fwrest-client-generator && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fwrest-client-generator" agent skill from https://github.com/totvs/engpro-advpl-tlpp-skills/tree/main/skills/advpl-tlpp/fwrest-client-generator into .gemini/skills/fwrest-client-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fwrest-client-generator", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install totvs/engpro-advpl-tlpp-skills fwrest-client-generatorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add totvs/engpro-advpl-tlpp-skills --skill fwrest-client-generator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/totvs/engpro-advpl-tlpp-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/advpl-tlpp/fwrest-client-generator .github/skills/fwrest-client-generator && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fwrest-client-generator" agent skill from https://github.com/totvs/engpro-advpl-tlpp-skills/tree/main/skills/advpl-tlpp/fwrest-client-generator into .github/skills/fwrest-client-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fwrest-client-generator", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add totvs/engpro-advpl-tlpp-skills --skill fwrest-client-generator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install totvs/engpro-advpl-tlpp-skills fwrest-client-generator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/totvs/engpro-advpl-tlpp-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/advpl-tlpp/fwrest-client-generator .opencode/skills/fwrest-client-generator && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fwrest-client-generator" agent skill from https://github.com/totvs/engpro-advpl-tlpp-skills/tree/main/skills/advpl-tlpp/fwrest-client-generator into .opencode/skills/fwrest-client-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fwrest-client-generator", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fwrest-client-generatorGenerate AdvPL/TLPP code that CONSUMES external REST APIs using the FWRest client class.
Fwrest Client Generator is an agent skill from totvs/engpro-advpl-tlpp-skills. Generate AdvPL/TLPP code that CONSUMES external REST APIs using the FWRest client class. Covers GET, POST, PUT, DELETE verbs, header construction, query/path parameters, JSON body serialization, authentication (No Auth, HTTP Basic, Bearer Token/JWT, OAuth 2.0), timeout, SSL, status code handling, error treatment, and TLPP try/catch patterns. Use when user says 'consume REST API', 'call external API', 'FWRest', 'oRestClient', 'integrate with third-party API', 'HTTP client AdvPL', 'POST JSON Protheus', 'Bearer…
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/fwrest-api-reference.md`, `references/fwrest-authentication-patterns.md` and `references/fwrest-client-templates.md`).
It sits in Backend & APIs, covering REST APIs, Authentication and Third-party API integration. The repository describes itself as: Repositório contendo skills para orientar desenvolvimento ADVPL/TLPP com agentes de IA. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3908e4e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Fwrest Client Generator loads about 2.9k tokens when it runs, and up to ~8.9k if it reads all its reference files. Until then it costs about 138 tokens; SKILL.md has 1,270 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from totvs/engpro-advpl-tlpp-skills at commit 3908e4e, republished under its MIT licence (© totvs). 1,270 words, ~2,949 tokens.
.claude/skills/fwrest-client-generator/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Generate production-ready AdvPL/TLPP code that consumes external REST APIs using the framework FWRest class. FWRest is the HTTP client class — it is the counterpart to the @Get/@Post annotation-based REST server (see tlpp-rest-endpoint-generator for exposing endpoints, not consuming them).
FWRest wraps low-level HTTP socket calls and supports the four standard verbs GET, POST, PUT, DELETE (no native PATCH support). It handles SSL automatically through appserver.ini socket configuration.
Use this skill when generating code that:
HTTPCGet / HTTPCPost / HTTPQuote calls with the framework clientDo NOT use this skill for:
../tlpp-rest-endpoint-generator/SKILL.mdHTTPCGet/HTTPCPost with WebAgentHTTPQuote or WSDownloadA typical FWRest call follows this five-step lifecycle:
oClient := FWRest():New(cHost) where cHost is the base URL only (scheme + host + optional port), e.g. "https://api.example.com".SetPath(), SetPostParams(), SetGetParams(), SetTimeOut(), SetChkStatus(), SetLegacySuccess().Array of "Key: Value" strings, e.g. {"Content-Type: application/json", "Authorization: Bearer xyz"}.:Get(aHead), :Post(aHead), :Put(aHead, cBody), :Delete(aHead, cBody). All return .T. on success.GetResult() on success (response body as character), GetLastError() on failure, GetHTTPCode() for the numeric status.| Concern | API | Example |
|---|---|---|
| Path segments | SetPath("/api/v1/customers/123") | URL: /api/v1/customers/123 |
| Query string (inline) | SetPath("/api/v1/customers?page=1") | URL: /api/v1/customers?page=1 |
| Query string (separate) | SetGetParams("page=1&size=20") | Appended after path |
| GET param via verb | :Get(aHead, "page=1") | Appended after path |
Special characters in query values must be URI-encoded via the
Escape()function — otherwise the request will fail or be misinterpreted.
| Method | Behavior |
|---|---|
Get() | Returns .T. only for HTTP 200 (legacy) or 200–299 (with SetLegacySuccess(.F.)) |
Post() | Returns .T. for 200 or 201 (legacy) or 200–299 (with SetLegacySuccess(.F.)) |
Put() / Delete() | Returns .T. for 200 or 201 (legacy) or 200–299 (with SetLegacySuccess(.F.)) |
SetChkStatus(.F.) | Disables internal HTTP code validation — verb returns .T. if the connection succeeded, regardless of HTTP code. You then call GetHTTPCode() to decide. Use this for APIs that return 204, 207, 3xx, or 4xx as part of the contract. |
FWRest does not support the PATCH verb. If the target API requires PATCH, generate code using HTTPQuote() instead and note this limitation explicitly.
This skill uses progressive disclosure. The SKILL.md body covers the architecture, decision logic, and the generation checklist. Detailed method reference, code templates, and authentication patterns are in the references/ directory — read them on demand based on the scenario:
| Reference File | When to Read | Content |
|---|---|---|
| references/fwrest-api-reference.md | Looking up exact method signatures, parameter types, minimum LIB version per method, or behavior of SetChkStatus/SetLegacySuccess/SetTimeOut/GetHTTPCode | Complete FWRest method reference table with syntax, parameters, returns, LIB version requirements |
| references/fwrest-client-templates.md | Generating any FWRest call — GET, POST, PUT, DELETE, JSON parsing, error handling, file upload (.gz), header construction | Full code templates for all 4 HTTP verbs, JSON body construction, response parsing, generic error-handling wrapper |
| references/fwrest-authentication-patterns.md | Implementing HTTP Basic, Bearer Token / JWT, API Key, or OAuth 2.0 (client credentials / authorization code) authentication | Header templates for each auth scheme, token-refresh pattern, secret storage guidance |
Also refer to references/sonarqube-rules-reference.md for the complete SonarQube rules reference shared across skills.
Identify from the user's request:
Read references/fwrest-client-templates.md for the verb-specific template. Combine with the auth header pattern from references/fwrest-authentication-patterns.md.
oClient:SetLegacySuccess(.F.) (requires LIB 20240812+).oClient:SetChkStatus(.F.) and inspect GetHTTPCode() + GetResult() manually.Wrap every FWRest invocation in a TLPP Try/Catch block. Log failures via FWLogMsg() including the URL, HTTP code, and the truncated response body. Never log secrets (tokens, passwords).
Use the checklist below to verify the generated code covers all requirements.
#include "totvs.ch" (AdvPL) or #include "tlpp-core.th" (TLPP) present, in lowercaseoClient, aHeader, cBody, cResponse, nHttpCode as locals with explicit types (TLPP as Object, as Array, etc.)FWRest():New(cHost) receives ONLY the base URL — path is set via SetPath()SetPath() called with leading /Escape() when they may contain spaces or special charsArray of "Key: Value" strings (note the literal space after the colon)Content-Type header included for POST/PUT bodies (application/json, application/xml, etc.)oJson:toJson() — never built by string concatenation when the data is dynamicSetPostParams(cBody) called before :Post() (Post body is NOT a parameter of :Post()):Put(aHead, cBody) / :Delete(aHead, cBody)GetMV() parameter or environment, never hardcoded"Authorization: Basic " + Encode64(cUser + ":" + cPass)"Authorization: Bearer " + cTokenexpires_in windowlOk (e.g. lOk := oClient:Post(aHeader))GetHTTPCode() retrieved into a local before any branchingGetResult() parsed via JsonObject():New() + :fromJson() and the fromJson() return checked (returns Nil on success, error string otherwise)GetLastError() AND GetHTTPCode() (both can be informative)SetTimeOut() set explicitly (default 120s is often too long for synchronous calls)Try/Catch to capture transport-layer exceptionsSetChkStatus(.F.) used when the API returns 204/4xx as part of contractSetLegacySuccess(.F.) used when the API uses the full 2xx rangeFreeObj(oClient) after use in long-running routines to release the socket promptlyINFO level with URL + HTTP code (no body)ERROR level with URL + HTTP code + truncated response (max ~500 chars)FWLogMsg("ERROR", , "REST_CLIENT", FunName(), , "01", cMessage, 0, 0, {}) pattern usedConOut() for production logging (only acceptable in standalone smoke tests)IIF() — use If/Else/EndIf blocksGetMV() calls outside of loopsMsgAlert, MsgYesNo, Aviso, Help) inside the call path of a transaction or scheduled job#include "totvs.ch")RpcSetEnv inside REST endpoint handlers that themselves invoke FWRest — environment must already be preparedRefer to references/sonarqube-rules-reference.md for the complete SonarQube rules reference.
| Pitfall | Symptom | Fix |
|---|---|---|
Full URL passed to New() | 404 or empty result | Pass only https://host:port; use SetPath() for the path |
Body passed to :Post() as argument | Body ignored, empty POST sent | Use SetPostParams(cBody) before :Post(aHead) |
| 204 response hangs ~2 minutes | Slow integrations | Set SetTimeOut(nSec) to a small value, or use HTTPQuote() as alternative |
| Header missing space after colon | Server rejects request | Always write "Key: Value" with a space |
| Query string not escaped | Garbled parameters | Wrap values with Escape() |
| 4xx body unreadable | GetResult() returns empty | Call SetChkStatus(.F.) first; then read GetResult() even on failure |
| Hardcoded credentials | SonarQube blocker | Read from GetMV("MV_XYZTOK",,"") parameter |
| PATCH attempted | Compile error / no such method | FWRest does not support PATCH — use HTTPQuote() |
© totvs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in skills/advpl-tlpp/fwrest-client-generator of totvs/engpro-advpl-tlpp-skills.
Open the folder on GitHubat commit 3908e4e
Fwrest Client Generator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fwrest Client Generator this skilltotvs/engpro-advpl-tlpp-skills | 143 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Frappe Core APIImpertio-Studio/Frappe_Claude_Skill_Package | 187 | 1 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Soundcloud API Integrationsoundcloud/api | 258 | — | ~787 | Automated safety check: Pass | None | |
| OmniRoute Provider Managementdiegosouzapw/OmniRoute | 74k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Passport Developmenttrypostit/trypost | 678 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Frappe Errors APIImpertio-Studio/Frappe_Claude_Skill_Package | 187 | 1 repos | ~4k | Automated safety check: Pass | MIT |
Impertio-Studio/Frappe_Claude_Skill_Package
A skill your agent uses when building ERPNext/Frappe API integrations (v14/v15/v16) including REST API, RPC API, authentication, webhooks, and rate limiting.
soundcloud/api
Integrates applications with the SoundCloud HTTP API using OAuth 2.1, OpenAPI, and developer docs.
diegosouzapw/OmniRoute
Manages AI provider connections, API keys, OAuth flows and connection tests through OmniRoute's REST API across its 327-provider catalog.
trypostit/trypost
Develops OAuth2 API authentication with Laravel Passport. An agent skill from trypostit/trypost.
Impertio-Studio/Frappe_Claude_Skill_Package
A skill your agent uses when debugging or handling API errors in Frappe/ERPNext v14/v15/v16.
rand/cc-polymath
Automatically discover API design skills when working with REST APIs, GraphQL schemas, API authentication, OAuth, JWT, rate limiting, API versioning, error handling, or endpoint design.
totvs/engpro-advpl-tlpp-skills
Converts AdvPL and TLPP source files from UTF-8 to Windows-1252 in place after code generation, because the Protheus compiler accepts only CP1252 files.
totvs/engpro-advpl-tlpp-skills
Compiles AdvPL and TLPP sources from VS Code with the TOTVS Developer Studio extension, handling server setup, connection and compile result reporting.
totvs/engpro-advpl-tlpp-skills
Plans and builds Protheus AdvPL/TLPP features through Specify, Design, Tasks and Execute phases whose depth scales with the size of the change.
totvs/engpro-advpl-tlpp-skills
Reviews AdvPL and TLPP source against SonarQube rules, ProtheusDOC requirements, security, performance and Protheus conventions, and reports findings by severity.
totvs/engpro-advpl-tlpp-skills
Queries the TOTVS Protheus ERP data dictionary for tables, fields, indexes, parameters, triggers and lookups, including impact checks during refactoring.
totvs/engpro-advpl-tlpp-skills
Generates Protheus MVC screens in ADVPL/TLPP, with ModelDef, ViewDef, MenuDef and Browse functions for single-entity and master-detail layouts.
Categories
Generate AdvPL/TLPP code that CONSUMES external REST APIs using the FWRest client class. Fwrest Client Generator is an agent skill from totvs/engpro-advpl-tlpp-skills. Generate AdvPL/TLPP code that CONSUMES external REST APIs using the FWRest client class.
Fwrest Client Generator fits situations like: user says consume REST API; call external API; integrate with third-party API; HTTP client AdvPL.
Run `npx skills add totvs/engpro-advpl-tlpp-skills --skill fwrest-client-generator -a claude-code`. Or copy the skill folder (skills/advpl-tlpp/fwrest-client-generator in totvs/engpro-advpl-tlpp-skills) into .claude/skills/fwrest-client-generator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add totvs/engpro-advpl-tlpp-skills --skill fwrest-client-generator -a codex`. Or copy the skill folder (skills/advpl-tlpp/fwrest-client-generator in totvs/engpro-advpl-tlpp-skills) into .agents/skills/fwrest-client-generator in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add totvs/engpro-advpl-tlpp-skills --skill fwrest-client-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fwrest-client-generator, .gemini/skills/fwrest-client-generator, .github/skills/fwrest-client-generator and .opencode/skills/fwrest-client-generator in your project.
SKILL.md names no scripts, command-line tools or credentials: Fwrest Client Generator is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Fwrest Client Generator is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Fwrest Client Generator: Frappe Core API (Impertio-Studio/Frappe_Claude_Skill_Package, 187 stars), Soundcloud API Integration (soundcloud/api, 258 stars), OmniRoute Provider Management (diegosouzapw/OmniRoute, 74k stars) and Passport Development (trypostit/trypost, 678 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
totvs (a GitHub organization) maintains it in totvs/engpro-advpl-tlpp-skills, which has 143 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 5, 2026.
Source: totvs/engpro-advpl-tlpp-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.