Главная · Скиллы · convex-create-component

convex-create-componentкомпоненты Convex с изоляцией

get-convex/agent-skills

Создаёт Convex компоненты с изолированными таблицами и чистыми границами между приложением и переиспользуемой логикой. Правильная структура компонентов.

Установка

npx -y skills add get-convex/agent-skills --skill convex-create-component --agent claude-code

Создание компонентов Convex

Создание переиспользуемых компонентов Convex с чёткими границами и минималистичным публичным API.

Когда использовать

  • Создание нового Convex-компонента в существующем приложении.
  • Извлечение переиспользуемой бэкенд-логики в компонент.
  • Создание сторонней интеграции, которая должна владеть своими таблицами и воркфлоу.
  • Упаковка Convex-функциональности для переиспользования в нескольких приложениях.

Когда НЕ использовать

  • Разовая бизнес-логика, которая принадлежит основному приложению.
  • Тонкие утилиты без таблиц или функций Convex.
  • Случаи, когда достаточно обычной TypeScript-библиотеки.

Рабочий процесс

  1. Спросите пользователя, что он создаёт и какова конечная цель.
  2. Выберите форму компонента с помощью дерева решений ниже и прочитайте соответствующий справочный файл.
  3. Решите, оправдан ли компонент. Предпочтите обычный код приложения, если функция не нуждается в изолированных таблицах или переиспользуемом состоянии.
  4. Составьте краткий план: какие таблицы компонент владеет; какие публичные функции предоставляет; какие данные передаются из приложения (auth, env vars, parent IDs); что остаётся в приложении как обёртки.
  5. Создайте структуру компонента с convex.config.ts, schema.ts и файлами функций.
  6. Реализуйте функции с использованием собственных импортов ./_generated/server компонента, а не сгенерированных файлов приложения.
  7. Подключите компонент в приложение через app.use(...).
  8. Вызывайте компонент через components.<name> с помощью ctx.runQuery, ctx.runMutation, ctx.runAction.
  9. Запустите npx convex dev и исправьте проблемы codegen, типов или границ.

Выбор формы компонента

ЦельФормаСправочник
Компонент только для этого приложенияLocalreferences/local-components.md
Публикация или общий доступ из нескольких приложенийPackagedreferences/packaged-components.md
Явно нужен local + shared library кодHybridreferences/hybrid-components.md
Не уверенLocal (по умолчанию)references/local-components.md

Подход по умолчанию

Если нет явного требования npm-пакета — используйте локальный компонент:

  • Разместите в convex/components/<componentName>/
  • Определите через defineComponent(...) в собственном convex.config.ts
  • Установите из convex/convex.config.ts приложения через app.use(...)

Скелет компонента

// convex/components/notifications/convex.config.ts
import { defineComponent } from "convex/server";
export default defineComponent("notifications");
// convex/components/notifications/schema.ts
import { defineSchema, defineTable } from "convex/server";
import { v } from "convex/values";

export default defineSchema({
  notifications: defineTable({
    userId: v.string(),
    message: v.string(),
    read: v.boolean(),
  }).index("by_user_read", ["userId", "read"]),
});
// convex/components/notifications/lib.ts
import { v } from "convex/values";
import { mutation, query } from "./_generated/server.js";

export const send = mutation({
  args: { userId: v.string(), message: v.string() },
  returns: v.id("notifications"),
  handler: async (ctx, args) => {
    return await ctx.db.insert("notifications", {
      userId: args.userId,
      message: args.message,
      read: false,
    });
  },
});
// convex/convex.config.ts
import { defineApp } from "convex/server";
import notifications from "./components/notifications/convex.config";

const app = defineApp();
app.use(notifications);
export default app;

Ключевые правила

  • Компоненты используют собственные _generated/server импорты, не импорты приложения.
  • Для доступа React-клиентов или HTTP-вызывателей создайте обёртки в приложении — не выставляйте функции компонента напрямую.
  • Запускайте npx convex dev и исправляйте проблемы codegen и типов перед завершением.

Из того же репозитория

convex-quickstartбыстрый старт с Convex
get-convex/agent-skills
От нуля до рабочего Convex backend за минуты: npm create convex с шаблонами React+Vite+shadcn или Next.js. Настройка переменных окружения и первый деплой.
3159.2k установок
convex-performance-auditаудит производительности Convex
get-convex/agent-skills
Диагностика и устранение проблем производительности Convex: hot-path reads, write contention, оптимизация subscriptions. Конкретные метрики и исправления.
3158.8k установок
convex-setup-authаутентификация в Convex приложениях
get-convex/agent-skills
Безопасная аутентификация в Convex: Convex Auth, Clerk, WorkOS AuthKit, Auth0 и другие провайдеры. Настройка, токены и защита функций.
3158.6k установок
convex-migration-helperмиграции схем Convex
get-convex/agent-skills
Миграции схем Convex без поломки продакшена: смена типов полей, добавление обязательных полей, реструктуризация таблиц. Безопасные поэтапные изменения.
3158.5k установок
convexConvex бэкенд real-time база данных
get-convex/agent-skills
Convex: бэкенд с real-time базой данных.
3135.1k установок
convex-helpers-guideруководство помощников Convex
get-convex/agent-skills
Руководство по помощникам Convex.
31572 установок