frontend-data-contracts
Ajuda seu agente a garantir a segurança dos dados no frontend. Cria um sistema para verificar tipos de dados na comunicação com o backend.
O que ela faz
Esta ferramenta ajuda a garantir que os dados que chegam ao seu aplicativo de celular ou web sejam confiáveis e seguros. Ela cria uma barreira única onde os dados são verificados e transformados em um formato seguro antes de serem usados.
Quando usar
- ✓Quando você quer ter certeza de que os dados recebidos de um servidor estão corretos.
- ✓Ao construir aplicativos que precisam de segurança e confiabilidade nos dados.
- ✓Para evitar erros causados por dados inesperados em aplicativos React ou React Native.
Exemplo do que pedir para a IA
“Verifique os dados da fatura antes de mostrá-los no aplicativo.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Ela funciona definindo um único ponto de entrada para todas as requisições de dados. Nesse ponto, os dados brutos da internet são convertidos em um formato seguro e confiável, ou um erro claro é retornado.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill frontend-data-contractsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/frontend-data-contracts/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Contratos de Dados Frontend (limite de rede tipado)
Quando Usar
Use esta habilidade quando precisar de uma disciplina portátil e agnóstica de framework para segurança de tipos na borda da rede de qualquer aplicativo React ou React Native. Estabelece um cliente de API tipado como o único limite de busca, uma regra de "parse, não valide" que transforma o JSON da rede em tipos de domínio confiáveis antes que ele entre no aplicativo, análise em tempo de execução, erros normalizados e identificadores de marca.
Habilidade portátil — legível por Claude Code, OpenCode, Codex, Cursor, Windsurf e outros. Esta habilidade descreve uma disciplina na borda da rede — um cliente, um envelope, um tipo de erro único, tipos validados — não uma biblioteca de estado ou um sistema de estilização. Ela se associa à habilidade frontend-architecture (o cliente vive em
shared/api-client/) e é a base sobre a qual a habilidade frontend-optimistic-mutations é construída.
O objetivo: no momento em que os dados cruzam da rede para o aplicativo, eles deixam de ser JSON da rede em formato any e se tornam um valor de domínio confiável e tipado — ou se tornam um erro único e tipado.
Existe exatamente um lugar onde essa transformação acontece, e nada não tipado escapa dela.
Exemplo de contrato
Os trechos marcados como "essência" são esboços de arquitetura com dependências e métodos de projeto omitidos, não um cliente completo. Um parâmetro de tipo genérico get<Invoice> é apenas uma afirmação em tempo de compilação: ele não pode estabelecer validade em tempo de execução. Exija o parse real do esquema antes de tratar um valor como uma Fatura, normalize falhas de parser no tipo de erro do projeto e mantenha a autorização independente da validação do esquema e dos IDs de marca. Vincule o comportamento do adaptador à versão da biblioteca instalada; não assuma a existência de um callback por consulta não suportado.
0. As cinco ideias centrais
- Um cliente é o único limite de busca. Um
apiClienttipado único envolvefetch. Componentes e hooks nunca chamamfetch/axiosdiretamente — o limite é aplicável em revisões e lint. - Parse, não valide. O JSON da rede é parseado em tipos de domínio na borda. Após o retorno do cliente, o valor é confiável em qualquer lugar a jusante — sem cadeias de
?.defensivas, sem re-verificação de formas em componentes. - Um envelope. Toda resposta é
{ data }em caso de sucesso ou{ error }em caso de falha. O cliente desempacotadatae lança emerror, então os chamadores recebem o payload diretamente ou um throw tipado. - Um tipo de erro normalizado. Envelope de erro do servidor, status não-2xx, corpo malformado, falha de rede e abortar se tornam um único
ApiErrorcom um código de máquina, status e erros opcionais por campo. Os chamadores lidam com uma única forma. - Identificadores são de marca. IDs de domínio são tipos nominais (
InvoiceId,CustomerId) para que o compilador rejeite passar um onde outro é esperado — o bug silencioso mais comum em UIs com muitos dados.
1. Layout do diretório
A borda é uma pasta em shared/ (conforme a habilidade frontend-architecture).
src/shared/api-client/
├── index.ts ← barrel: apiClient, ApiError, types
├── client.ts ← the fetch wrapper: buildUrl, headers, parse, verbs
├── config.ts ← base URL resolution, default headers
├── error.ts ← the ApiError class + code→message-key mapping
├── types.ts ← envelope types, HttpMethod, RequestOptions, field errors
└── client.test.ts ← boundary behavior tests (envelope, errors, network)
Tipos de entidade de domínio e seus esquemas vivem com seu módulo de funcionalidade
(modules/{feature}/types/) ou um pacote de contrato compartilhado; o cliente é genérico sobre T.
2. Um cliente, o único limite de busca
Cada verbo retorna o payload desempacotado data tipado pelo chamador, e lança um
ApiError em qualquer falha. Componentes nunca veem envelopes ou respostas brutas.
// shared/api-client/client.ts (essence)
export const apiClient = {
get<T>(path: string, options?: RequestOptions): Promise<T> {
return request<T>("GET", path, undefined, options);
},
post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {
return request<T>("POST", path, body, options);
},
patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {
/* … */
},
put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {
/* … */
},
delete<T>(path: string, options?: RequestOptions): Promise<T> {
/* … */
},
} as const;
export type ApiClient = typeof apiClient;
// CORRETO — um hook de funcionalidade envolve o cliente, tipado pelo chamador
…
Perguntas frequentes
O que significa 'type safety'?
Significa que o código sabe exatamente qual tipo de informação esperar (como um número, texto ou data), evitando erros inesperados.
O que é a 'rede' ou 'network edge'?
É o ponto onde os dados entram no seu aplicativo vindos de fora, como de um servidor na internet.
Por que 'parse, don't validate'?
Validar apenas verifica se os dados estão corretos, mas 'parse' os transforma em um formato seguro e confiável que o aplicativo pode usar com segurança.
Detalhes
Descrição original do autor
A portable, framework-agnostic discipline for type safety at the network edge of any React or React Native app.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #3049
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
angular-developer
Ajuda seu agente a criar código Angular e a dar conselhos sobre a estrutura do projeto. É útil para iniciar novos projetos, criar partes do código ou melhorar a performance e acessibilidade.
affaan-m/ECC
frontend-a11y
Ajuda seu agente a tornar interfaces web acessíveis para todos. Ele garante que sites e apps funcionem bem com leitores de tela e navegação por teclado.
affaan-m/ECC
frontend-patterns
Faz seu agente aplicar padrões modernos no desenvolvimento frontend. Ele otimiza performance, gerencia estado e segue boas práticas em React e Next.js.
affaan-m/ECC