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

convex-backend

Ajuda seu agente a criar partes de trás de aplicativos que respondem em tempo real. Ele valida informações, conecta com segurança e ajuda a colocar o aplicativo no ar.

O que ela faz

Convex é uma plataforma que ajuda você a criar o 'cérebro' (backend) de aplicativos web e mobile. Ele cuida de coisas como banco de dados, lógica do servidor e autenticação de usuários, permitindo que seu aplicativo reaja a mudanças em tempo real.

Quando usar

  • ✓Criar um chat ou painel que atualiza em tempo real.
  • ✓Desenvolver um aplicativo sem se preocupar com servidores.
  • ✓Construir apps de IA que precisam de dados reativos.

Exemplo do que pedir para a IA

“Crie um backend para um aplicativo de chat que sincroniza mensagens em tempo real entre usuários.”

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/convex-backend/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/convex-backend/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Você define a estrutura dos seus dados (como tabelas de usuários e mensagens) e escreve funções que o Convex executa. Ele gerencia o banco de dados e garante que as atualizações sejam enviadas para todos os usuários conectados automaticamente.

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 convex-backend

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/convex-backend/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.

Backend Convex

Use o Convex para construir lógica de backend com segurança de tipos e sincronização de dados em tempo real.

Quando Usar Esta Habilidade

Use esta habilidade quando:

  • Estiver construindo aplicativos colaborativos em tempo real (chat, dashboards, multiplayer)
  • Precisar de um backend sem gerenciamento de infraestrutura
  • Quiser funções de servidor com segurança de tipos e cache automático
  • Estiver construindo aplicativos de IA que precisam de dados reativos (status de agente, resultados em streaming)
  • Estiver prototipando rapidamente com um banco de dados + funções gerenciados

Pré-requisitos

  • Node.js 18+
  • npm ou pnpm
  • Conta Convex (nível gratuito: 1 milhão de chamadas de função/mês)

Início Rápido

# Initialize Convex in an existing project
npm install convex
npx convex dev     # Start local development (syncs with cloud)

# In a new project
npm create convex@latest

Definição de Schema

// convex/schema.ts
import { defineSchema, defineTable } from "convex/server";
import { v } from "convex/values";

export default defineSchema({
  users: defineTable({
    name: v.string(),
    email: v.string(),
    role: v.union(v.literal("admin"), v.literal("member")),
    avatarUrl: v.optional(v.string()),
    createdAt: v.number(),
  })
    .index("by_email", ["email"])
    .index("by_role", ["role"]),

  messages: defineTable({
    userId: v.id("users"),
    channelId: v.id("channels"),
    body: v.string(),
    attachments: v.optional(v.array(v.string())),
    createdAt: v.number(),
  })
    .index("by_channel", ["channelId", "createdAt"])
    .index("by_user", ["userId"]),

  channels: defineTable({
    name: v.string(),
    description: v.optional(v.string()),
    isPrivate: v.boolean(),
  }),
});

Consultas (Leituras em Tempo Real)

// convex/messages.ts
import { query } from "./_generated/server";
import { v } from "convex/values";

export const listByChannel = query({
  args: {
    channelId: v.id("channels"),
    limit: v.optional(v.number()),
  },
  handler: async (ctx, args) => {
    const messages = await ctx.db
      .query("messages")
      .withIndex("by_channel", (q) => q.eq("channelId", args.channelId))
      .order("desc")
      .take(args.limit ?? 50);

    // Resolve user data for each message
    return Promise.all(
      messages.map(async (msg) => {
        const user = await ctx.db.get(msg.userId);
        return { ...msg, user: user ? { name: user.name, avatarUrl: user.avatarUrl } : null };
      })
    );
  },
});

Mutações (Escritas)

// convex/messages.ts
import { mutation } from "./_generated/server";
import { v } from "convex/values";

export const send = mutation({
  args: {
    channelId: v.id("channels"),
    body: v.string(),
  },
  handler: async (ctx, args) => {
    const identity = await ctx.auth.getUserIdentity();
    if (!identity) throw new Error("Not authenticated");

    // Find or create user
    const user = await ctx.db
      .query("users")
      .withIndex("by_email", (q) => q.eq("email", identity.email!))
      .unique();
    if (!user) throw new Error("User not found");

    return await ctx.db.insert("messages", {
      userId: user._id,
      channelId: args.channelId,
      body: args.body,
      createdAt: Date.now(),
    });
  },
});

Ações (APIs Externas, IA)

// convex/ai.ts
import { action } from "./_generated/server";
import { v } from "convex/values";
import { api } from "./_generated/api";

export const generateResponse = action({
  args: { prompt: v.string(), channelId: v.id("channels") },
  handler: async (ctx, args) => {
    // Call external AI API
    const response = await fetch("https://api.anthropic.com/v1/messages", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "x-api-key": process.env.ANTHROPIC_API_KEY!,
        "anthropic-version": "2023-06-01",
      },
      body: JSON.stringify({
        model: "claude-sonnet-4-6",
        max_tokens: 1024,
        messages: [{ role: "user", content: args.prompt }],
      }),
    });

    const data = await response.json();
    const aiMessage = data.content[0].text;

    // Save AI response as a message via mutation
    await ctx.runMutation(api.messages.send, {
      channelId: args.channelId,
      body: aiMessage,
    });

    return aiMessage;
  },
});

Funções Agendadas (Tarefas Cron)

// convex/crons.ts
import { cronJobs } from "convex/server";
import { internal } from "./_generated/api";

const crons = cronJobs();

// Executa a cada hora

…
Perguntas frequentes

Preciso me preocupar com servidores?

Não, o Convex cuida de toda a infraestrutura de servidores para você.

Como os dados são atualizados em tempo real?

O Convex usa um sistema que detecta mudanças nos dados e as envia automaticamente para os aplicativos conectados.

Posso usar com IA?

Sim, você pode integrar chamadas para APIs de IA e usar os resultados para atualizar dados no seu aplicativo em tempo real.

Detalhes

Descrição original do autor

Build reactive backends with Convex functions, schema validation, auth integration, and deployment workflows. Use when building real-time apps with type-safe server functions and automatic caching.

repo: sickn33/agentic-awesome-skills

Popularidade

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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas