Pular para o conteúdo
Skillpedia
APIs e servidores (backend)48 mil · #2157

api-endpoint-builder

Ajuda seu agente a construir pontos de acesso (endpoints) para APIs REST. Ele cuida da segurança, validação e documentação, seguindo as melhores práticas.

O que ela faz

Esta ferramenta ajuda a criar partes de um site ou aplicativo que recebem informações e respondem a elas. Ela garante que as informações recebidas estejam corretas e seguras.

Quando usar

  • ✓Quando você precisa criar uma nova função para um aplicativo.
  • ✓Ao adicionar novas seções a um site existente.
  • ✓Sempre que precisar que seu aplicativo receba e processe dados.

Exemplo do que pedir para a IA

“Crie um ponto de acesso para registrar novos usuários com nome, email e senha.”

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/api-endpoint-builder/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/api-endpoint-builder/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ela define como a informação chega (rota), verifica se a informação está correta (validação), protege o acesso (autenticação) e retorna uma resposta clara.

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 api-endpoint-builder

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/api-endpoint-builder/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Construtor de Endpoints de API

Construa endpoints de API REST completos e prontos para produção com validação adequada, tratamento de erros, autenticação e documentação.

Quando Usar Esta Habilidade

  • O usuário pede para "criar um endpoint de API" ou "construir uma API REST"
  • Construindo novos recursos de backend
  • Adicionando endpoints a APIs existentes
  • O usuário menciona "API", "endpoint", "rota" ou "REST"
  • Criando operações CRUD

O Que Você Construirá

Para cada endpoint que você criar:

  • Manipulador de rota com o método HTTP apropriado
  • Validação de entrada (corpo da requisição, parâmetros, query)
  • Verificações de autenticação/autorização
  • Lógica de negócios
  • Tratamento de erros
  • Formatação de resposta
  • Documentação da API
  • Testes (se solicitado)

Estrutura do Endpoint

1. Definição da Rota

// Express example
router.post('/api/users', authenticate, validateUser, createUser);

// Fastify example
fastify.post('/api/users', {
  preHandler: [authenticate],
  schema: userSchema
}, createUser);

2. Validação de Entrada

Sempre valide antes de processar:

const validateUser = (req, res, next) => {
  const { email, name, password } = req.body;
  
  if (!email || !email.includes('@')) {
    return res.status(400).json({ error: 'Valid email required' });
  }
  
  if (!name || name.length < 2) {
    return res.status(400).json({ error: 'Name must be at least 2 characters' });
  }
  
  if (!password || password.length < 8) {
    return res.status(400).json({ error: 'Password must be at least 8 characters' });
  }
  
  next();
};

3. Implementação do Manipulador

const createUser = async (req, res) => {
  try {
    const { email, name, password } = req.body;
    
    // Check if user exists
    const existing = await db.users.findOne({ email });
    if (existing) {
      return res.status(409).json({ error: 'User already exists' });
    }
    
    // Hash password
    const hashedPassword = await bcrypt.hash(password, 10);
    
    // Create user
    const user = await db.users.create({
      email,
      name,
      password: hashedPassword,
      createdAt: new Date()
    });
    
    // Don't return password
    const { password: _, ...userWithoutPassword } = user;
    
    res.status(201).json({
      success: true,
      data: userWithoutPassword
    });
    
  } catch (error) {
    console.error('Create user error:', error);
    res.status(500).json({ error: 'Internal server error' });
  }
};

Melhores Práticas

Códigos de Status HTTP

  • 200 - Sucesso (GET, PUT, PATCH)
  • 201 - Criado (POST)
  • 204 - Sem Conteúdo (DELETE)
  • 400 - Requisição Inválida (falha na validação)
  • 401 - Não Autorizado (não autenticado)
  • 403 - Proibido (não autorizado)
  • 404 - Não Encontrado
  • 409 - Conflito (duplicado)
  • 500 - Erro Interno do Servidor

Formato da Resposta

Estrutura consistente:

// Success
{
  "success": true,
  "data": { ... }
}

// Error
{
  "error": "Error message",
  "details": { ... } // optional
}

// List with pagination
{
  "success": true,
  "data": [...],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 100
  }
}

Checklist de Segurança

  • Autenticação necessária para rotas protegidas
  • Verificações de autorização (usuário é dono do recurso)
  • Validação de entrada em todos os campos
  • Prevenção de injeção de SQL (use consultas parametrizadas)
  • Limitação de taxa em endpoints públicos
  • Nenhum dado sensível em respostas (senhas, tokens)
  • CORS configurado corretamente
  • Limites de tamanho de requisição definidos

Tratamento de Erros

// Centralized error handler
app.use((err, req, res, next) => {
  console.error(err.stack);
  
  // Don't leak error details in production
  const message = process.env.NODE_ENV === 'production' 
    ? 'Internal server error' 
    : err.message;
  
  res.status(err.status || 500).json({ error: message });
});

Padrões Comuns

Operações CRUD

// Create
POST /api/resources
Body: { name, description }

// Read (list)
GET /api/resources?page=1&limit=20

// Read (single)
GET /api/resources/:id

// Update
PUT /api/resources/:id
Body: { name, description }

// Delete
DELETE /api/resources/:id

Paginação

const getResources = async (req, res) => {
  const page = parseInt(req.query.page) || 1;
  const limit = parseInt(req.query.limit) || 20;
  const skip = (page - 1) * limit;
  
  const [resources, total] = await Promise.all([
    db.resources.find().skip(skip).limit(limit),
    db.resources.countDocuments()
  ]);
  
  res.json({
    success: true,

…
Perguntas frequentes

O que é um 'endpoint'?

É como um endereço específico no seu aplicativo onde ele pode receber ou enviar informações.

Por que a validação é importante?

Para garantir que apenas informações corretas e completas sejam aceitas, evitando erros e problemas de segurança.

O que significa 'produção-pronto'?

Significa que o código gerado é seguro, confiável e está pronto para ser usado em um aplicativo real, não apenas para testes.

Detalhes

Descrição original do autor

Builds production-ready REST API endpoints with validation, error handling, authentication, and documentation. Follows best practices for security and scalability.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2157
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas