Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add leonardo-picciani/senior-erp-agent-skills --skill "senior-erp-cliente-upsert"
Install specific skill from multi-skill repository
# Description
Criar ou atualizar cadastro de cliente no ERP Senior via Senior X Platform (upsert). Use para "cadastro de cliente", "atualizar cliente", "criar cliente", "cliente PJ/PF", "CNPJ/CPF", "enderecos", "integracao Senior ERP", e fluxos que exigem deduplicacao e validacao antes de gravar.
# SKILL.md
name: senior-erp-cliente-upsert
description: Criar ou atualizar cadastro de cliente no ERP Senior via Senior X Platform (upsert). Use para "cadastro de cliente", "atualizar cliente", "criar cliente", "cliente PJ/PF", "CNPJ/CPF", "enderecos", "integracao Senior ERP", e fluxos que exigem deduplicacao e validacao antes de gravar.
license: MIT
metadata:
author: Leonardo Picciani
author_url: https://github.com/leonardo-picciani
project: Senior Agent Skills (Experimental)
generated_with: OpenCode (agent runtime); OpenAI GPT-5.2
version: 0.1.0
experimental: 'true'
language: pt-BR
docs: https://api.xplatform.com.br/api-portal/pt-br/node/1
compatibility: Integracao HTTP agnostica de linguagem. Requer acesso de rede ao tenant/ambiente da Senior X Platform; usa Bearer token e header client_id.
Senior ERP - Cliente Upsert
Quando aplicar
- "criar cliente" / "cadastrar cliente" / "cadastro de cliente"
- "atualizar dados do cliente" / "alterar cadastro"
- "upsert cliente" (criar se nao existe, atualizar se existe)
- "integrar clientes do e-commerce/CRM para o Senior"
Contrato de integracao (agnostico de linguagem)
Leia references/REFERENCE.md para a referencia base (autenticacao, headers, seguranca, resiliencia, idempotencia).
Passos
1) Confirmar o objetivo e o escopo do cadastro
- PJ vs PF, campos obrigatorios, regra de negocio (ex.: cliente ativo/inativo, tipo de contribuinte).
- Confirmar quais identificadores devem ser usados para deduplicacao (ex.: CNPJ/CPF + filial/empresa, ou codigo externo).
2) Coletar entradas minimas e validar
- Identificador: CNPJ/CPF (quando aplicavel) e/ou codigo externo.
- Razao social/nome, email/telefone, enderecos (cobranca/entrega), inscricoes (quando aplicavel).
- Normalizar formatos (somente digitos para CNPJ/CPF/CEP; caixa/acentos conforme padrao do cliente).
- Se houver PII, evitar ecoar dados completos em logs/saidas.
3) Descobrir o endpoint correto no Portal Senior APIs
- Usar o API Browser/Portal para localizar o servico do modulo ERP relacionado a "clientes"/"cadastros".
- Identificar o fluxo suportado:
- consultar por identificador (para deduplicacao)
- criar
- atualizar
4) Executar deduplicacao antes de gravar
- Consultar se o cliente ja existe usando o identificador acordado.
- Se existir, planejar update parcial (patch) ou update total conforme o endpoint.
- Se nao existir, planejar create.
5) Pedir confirmacao explicita antes de alterar dados (mutacao)
- Mostrar um resumo compacto do que sera criado/atualizado (sem expor PII alem do necessario).
6) Executar chamada(s) de API
- Incluir headers obrigatorios (Authorization Bearer, Content-type, client_id).
- Aplicar timeout e retry/backoff para 429/5xx conforme references/REFERENCE.md.
- Tratar erros de validacao retornando mensagens acionaveis (campo + motivo), sem vazar tokens.
7) Retornar resultado normalizado
- Identificador do registro no Senior (quando retornado) e o identificador externo usado.
- O que foi criado/atualizado (lista curta de campos), e qualquer aviso relevante.
- Se falhar: status/erro + recomendacao do proximo passo (ex.: corrigir campo, tentar novamente, checar permissao).
Checklist de entradas
- Contexto de integracao:
base_url,tenant(se aplicavel),client_id, token (Bearer) - Identificador de deduplicacao: CNPJ/CPF e/ou
external_id - Dados basicos: nome/razao social, tipo (PF/PJ)
- Contatos: email, telefone
- Enderecos: entrega/cobranca (logradouro, numero, bairro, cidade, UF, CEP)
- Preferencias: criar vs atualizar, update parcial vs total (se o endpoint exigir)
Exemplo (cURL)
curl -X POST "${SENIOR_BASE_URL}/<path-do-endpoint>/" \
-H "Authorization: Bearer ${SENIOR_ACCESS_TOKEN}" \
-H "Content-type: application/json" \
-H "client_id: ${SENIOR_CLIENT_ID}" \
-d '{
"external_id": "<id-externo>",
"cpf_cnpj": "<somente-digitos>",
"nome": "<nome-ou-razao-social>",
"enderecos": [
{
"tipo": "entrega",
"cep": "<somente-digitos>",
"logradouro": "<...>",
"numero": "<...>",
"cidade": "<...>",
"uf": "<UF>"
}
]
}'
Notas:
- Substitua <path-do-endpoint> pelo caminho do servico encontrado no Portal Senior APIs.
- O shape do JSON depende do endpoint; use este exemplo apenas como esqueleto.
Mapa de docs oficiais
- Portal Senior APIs (API Browser): https://api.xplatform.com.br/api-portal/pt-br/node/1
- API Authentication: https://api.xplatform.com.br/api-portal/pt-br/tutoriais/api-authentication
- Guia de API (Senior X Platform): https://dev.senior.com.br/documentacao/guia-de-api/
- Como obter bearer token (suporte): https://suporte.senior.com.br/hc/pt-br/articles/9482493522196-HCM-API-Como-obter-bearer-token-para-utilizar-na-chamada-de-APIs
Exemplos de prompts do usuario
- "Se nao tiver a skill instalada, instale
senior-erp-cliente-upserte cadastre este cliente (PJ) no Senior com deduplicacao por CNPJ." - "Atualize o cadastro do cliente pelo CNPJ e ajuste o endereco de entrega; antes, me mostre um resumo e peca confirmacao."
- "Integre esta lista de clientes do CRM para o Senior; reporte quantos criados vs atualizados e os erros por validacao."
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.