Install
$ agentstack add skill-totvs-fluig-agent-skills-fluig-scaffolding-dataset ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Scaffolding de Dataset (customizado, server-side)
Esta skill gera o esqueleto de um Dataset customizado do Fluig; ela não duplica convenções — os arquivos de context/ são a fonte de verdade, referenciada abaixo.
Objetivo
Produzir, com responsabilidade única, o esqueleto de um Dataset customizado do Fluig: o arquivo JavaScript executado no servidor com a(s) função(ões) nomeada(s) que a plataforma invoca para construir e retornar o conjunto de dados, usando somente a API pública de Dataset, já com pontos para aplicar filtros/constraints e ordenação.
Quando Usar
- Ao criar um novo dataset customizado do Fluig a partir do zero, para expor/consultar dados a serem consumidos por widgets e forms.
- Quando o desenvolvedor fornece um nome/propósito, os campos do dataset e a(s) fonte(s) de dados e quer um ponto de partida correto (função pública + estrutura) seguindo as convenções oficiais.
- Quando é preciso garantir, desde o início, o uso exclusivo da API pública de Dataset e a aplicação correta de filtros (constraints) e ordenação.
Entradas Esperadas
| Entrada | Descrição | Obrigatória | |---------|-----------|-------------| | Nome do dataset | Identificador do dataset customizado (ex.: branches) | sim | | Campos | Lista de colunas/campos do dataset (nome de cada coluna) | sim | | Filtros/constraints | Critérios de filtragem esperados (campo, valores, tipo) | não | | Ordenação | Campo(s) por que o resultado deve ser ordenado | não | | Fonte de dados | Origem dos registros (ex.: outro dataset, dados informados, serviço externo) | não | | Serviço externo | Código do serviço cadastrado no Fluig (serviceCode) quando a fonte for uma API REST externa | não |
Contexto de Referência (Fonte de Verdade)
Leia antes de executar — não reproduza o conteúdo aqui:
- [architecture.md](../../context/architecture.md) — modelo conceitual do Dataset: customização server-side que expõe/consulta dados por meio da API pública de Dataset; o desenvolvedor implementa funções nomeadas que a plataforma invoca em pontos definidos para resolver o dataset; o resultado é consumido por widgets/forms. Veja também a seção "Estrutura de um Projeto Fluig Studio": o dataset fica na pasta
datasets/. - [technologies.md](../../context/technologies.md) — runtime público de scripting server-side: datasets são escritos em JavaScript executado no servidor sobre o motor Mozilla Rhino (base ES5, com suporte apenas parcial a ES6+), interagindo apenas com a API pública de seu contexto (sem acesso a componentes internos do servidor). Veja a seção "Runtime Rhino: sintaxe rígida (não é ES6+)" para as restrições de sintaxe e a seção de interoperabilidade com Java.
Regras Aplicáveis (Resumo Executivo)
Somente o mínimo para orientar a geração; o detalhe está no contexto:
- Implemente a(s) função(ões) nomeada(s) que a plataforma invoca para construir/retornar o dataset — o ponto de entrada público é a função
createDataset(fields, constraints, sortFields)→ verarchitecture.md. - Use SOMENTE a API pública de Dataset: construa o resultado com
DatasetBuilder.newDataset()e adicione colunas/linhas comaddColumn(...)/addRow(...); para consultar outro dataset, useDatasetFactory.getDataset(name, fields, constraints, order[, callback])(no servidor, sempre síncrono — não passecallback) → verarchitecture.md, seção "API pública de Dataset — assinaturas". - Retorne o conjunto de dados no formato esperado (o objeto de dataset construído pelo
DatasetBuilder); o retorno degetDataset(...)expõe os registros em.valuese as colunas em.columns→ verarchitecture.md. - Aplique filtros/constraints via API pública com a assinatura exata
DatasetFactory.createConstraint(field, initialValue, finalValue, type[, likeSearch]), ondetypeéConstraintType.MUST(1) |SHOULD(2) |MUST_NOT(3) elikeSearch(booleano opcional) habilita busca parcial (LIKE). Para igualdade simples, repita o valor eminitialValue/finalValue; para faixa (BETWEEN), informe limites distintos. Respeite os parâmetrosconstraintsesortFieldsrecebidos pela função → verarchitecture.md, seção "API pública de Dataset — assinaturas". - Leia os filtros recebidos percorrendo o array
constraintse comparandoconstraint.getFieldName()com o campo desejado, obtendo o valor comconstraint.getInitialValue()(use os métodos, não propriedades). Isolar isso em uma função auxiliar (ex.:obterParametro(constraints, campo)) é um padrão comum → verarchitecture.md. - Para consumir um serviço externo (REST), não há
fetch: use o Cadastro de Serviços viafluigAPI.getAuthorizeClientService(), montando o objeto comserviceCode/endpoint/method/timeoutService(ocompanyIdé opcional, resolvido a partir doserviceCode), invocando cominvoke(JSON.stringify(data))e lendo a resposta comvo.getResult()+JSON.parse(...)→ vertechnologies.md. - Trate erros retornando dado, não exceção solta: capture o erro com
try/catche retorne um dataset com uma coluna/linha de erro (ex.: colunaERROR), para o consumidor receber um resultado previsível → verarchitecture.md. - Código server-side no motor Rhino (base ES5, não ES6+): use
varefunctiontradicionais, concatene strings com+e evite arrow functions, template literals,let/const, destructuring, classes ES6 ePromise/async/await; sem acesso a componentes internos do servidor. Quando útil, é possível usar interop com Java (Packages.*,importPackage/importClass) → vertechnologies.md. - Se o nome exato de uma função/método não puder ser confirmado como público, descreva o comportamento de forma genérica (uma função nomeada que a plataforma invoca para resolver o dataset, retornando o conjunto via API pública) em vez de inventar → ver
architecture.md.
Procedimento
- Definir o nome do dataset e os campos (colunas) a partir da entrada, além das fontes de dados e dos filtros/ordenação esperados.
- Criar o arquivo JavaScript do dataset e implementar a função pública
createDataset(fields, constraints, sortFields)como ponto de entrada que a plataforma invoca. - Dentro da função, construir o dataset com a API pública:
DatasetBuilder.newDataset(), declarando as colunas comaddColumn(...)e populando registros comaddRow(...)(ou consultando outra fonte comDatasetFactory.getDataset(...)). - Aplicar filtros/constraints e ordenação via API pública — usar os parâmetros
constraints/sortFieldsrecebidos e/ou criar constraints comDatasetFactory.createConstraint(field, initialValue, finalValue, type[, likeSearch])usandoConstraintType.*. Quando precisar do valor de um filtro do chamador, lê-lo viagetFieldName()/getInitialValue()/getFinalValue()(ex.: função auxiliarobterParametro). - Se a fonte for um serviço externo REST, consumi-lo pelo Cadastro de Serviços (
fluigAPI.getAuthorizeClientService()+invoke(...)), parseandovo.getResult()e populando as linhas com os campos retornados. - Tratar erros com
try/catch, retornando um dataset com coluna/linha de erro (ex.:ERROR) em caso de falha. - Retornar o objeto de dataset construído.
- Validar o resultado com o checklist abaixo antes de entregar.
Saída Esperada
Esqueleto de dataset pronto para evoluir, contendo:
- O arquivo JavaScript server-side do dataset com a(s) função(ões) pública(s) que a plataforma invoca — no mínimo
createDataset(fields, constraints, sortFields). - A construção do conjunto de dados via API pública (
DatasetBuilder, colunas e registros), com pontos para aplicar constraints e ordenação. - Retorno do conjunto de dados no formato esperado, sem qualquer acesso a componentes internos.
Tudo em conformidade com context/architecture.md e context/technologies.md.
Exemplo de Uso
Use examples/dataset/ como referência mínima. O dataset.example.js demonstra a função pública createDataset, a construção do conjunto via DatasetBuilder e a aplicação de constraints; o dataset-external-service.example.js demonstra a leitura de filtro do chamador, o consumo de uma API REST externa pelo Cadastro de Serviços e o tratamento de erro como dado. Trate-os como trechos de referência, não como projeto completo.
Checklist de Validação
- [ ] A(s) função(ões) pública(s) que a plataforma invoca estão implementadas (ex.:
createDataset(fields, constraints, sortFields)). - [ ] O conjunto de dados é construído e retornado usando somente a API pública de Dataset (
DatasetBuilder,DatasetFactory), sem acesso a componentes internos. - [ ] Os campos (colunas), filtros/constraints e a ordenação estão corretos e usam a API pública com as assinaturas exatas —
createConstraint(field, initialValue, finalValue, type[, likeSearch])comConstraintType.*egetDataset(name, fields, constraints, order[, callback])(servidor sempre síncrono, semcallback); a leitura de filtros do chamador usagetFieldName()/getInitialValue()/getFinalValue(). - [ ] Consumo de serviço externo (se houver) é feito pelo Cadastro de Serviços (
fluigAPI.getAuthorizeClientService()+invoke), nunca porfetch/HTTP de navegador. - [ ] Erros são retornados como dado (coluna/linha de erro via
try/catch), não como exceção solta. - [ ] Código server-side compatível com o motor Rhino (base ES5):
var/functiontradicionais, sem arrow functions, template literals,let/constou outros recursos ES6+ não suportados.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: totvs
- Source: totvs/fluig-agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.