skill

Convex Create Component

get-convex119,900+ تثبيتموثوق

نبذة

# Convex Create Component

Create reusable Convex components with clear boundaries and a small app-facing API.

## When to Use

- Creating a new Convex component in an existing app - Extracting reusable backend logic into a component - Building a third-party integration that should own its own tables and workflows - Packaging Convex functionality for reuse across multiple apps

## When Not to Use

- One-off business logic that belongs in the main app - Thin utilities that do not need Convex tables or functions - App-level orchestration that should stay in `convex/` - Cases where a normal TypeScript library is enough

## Workflow

1. Ask the user what they are building and what the end goal is. If the repo already makes the answer obvious, say so and confirm before proceeding. 2. Choose the shape using the decision tree below and read the matching reference file. 3. Decide whether a component is justified. Prefer normal app code or a regular library if the feature does not need isolated tables, backend functions, or reusable persistent state. 4. Make a short plan for: - what tables the component owns - what public functions it exposes - what data must be passed in from the app (auth, env vars, parent IDs) - what stays in the app as wrappers or HTTP mounts 5. Create the component structure with `convex.config.ts`, `schema.ts`, and function files. 6. Implement functions using the component's own `./_generated/server` imports, not the app's generated files. 7. Wire the component into the app with `app.use(...)`. If the app does not already have `convex/convex.config.ts`, create it. 8. Call the component from the app through `components.<name>` using `ctx.runQuery`, `ctx.runMutation`, or `ctx.runAction`. 9. If React clients, HTTP callers, or public APIs need access, create wrapper functions in the app instead of exposing component functions directly. 10. Run `npx convex dev` and fix codegen, type, or boundary issues before finishing.

## Choose the Shape

Ask the user, then pick one path:

| Goal | Shape | Reference | | ------------------------------------------------- | ---------------- | ----------------------------------- | | Component for this app only | Local | `references/local-components.md` | | Publish or share across apps | Packaged | `references/packaged-components.md` | | User explicitly needs local + shared library code | Hybrid | `references/hybrid-components.md` | | Not sure | Default to local | `references/local-components.md` |

Read exactly one reference file before proceeding.

## Default Approach

Unless the user explicitly wants an npm package, default to a local component:

- Put it under `convex/components/<componentName>/` - Define it with `defineComponent(...)` in its own `convex.config.ts` - Install it from the app's `convex/convex.config.ts` with `app.use(...)` - Let `npx convex dev` generate the component's own `_generated/` files

## Component Skeleton

A minimal local component with a table and two functions, plus the app wiring.

```ts // convex/components/notifications/convex.config.ts import { defineComponent } from "convex/server";

export default defineComponent("notifications"); ```

```ts // 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"]), }); ```

```ts // 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, }); }, });

export const listUnread = query({ args: { userId: v.string() }, returns: v.array( v.object({ _id: v.id("notifications"), _creationTime: v.number(), userId: v.string(), message: v.string(), read: v.boolean(), }), ), handler: async (ctx, args) => { return await ctx.db .query("notifications") .withIndex("by_user_read", (q) => q.eq("userId", args.userId).eq("read", false), ) .collect(); }, }); ```

```ts // convex/convex.config.ts import { defineApp } from "convex/server"; import notifications from "./components/notifications/convex.config.js";

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

export default app; ```

```ts // convex/notifications.ts (app-side wrapper) import { v } from "convex/values"; import { mut

التثبيت

شغل هذا الأمر

npx skills add get-convex/agent-skills

يعمل مع

claude appclaude codeclaude apicursorcodexwindsurfclinezed

خطوات التثبيت

Install with `npx skills add get-convex/agent-skills`, or clone the repository and copy the `skills/convex-create-component` folder into your Claude skills directory.

عرض المصدر

أصول ذات صلة

مختارات أخرى في الإنتاجية والمكتب.

mcp serverclaude_codecursorcodex
npm install @modelcontextprotocol/server-time
خادم الوقت (Time)
إمكانات للوقت وتحويل المناطق الزمنية تشمل الوقت الحالي والتحويلات ودعم مناطق IANA الزمنية.★ 4.9 · 5,000+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/knowledge-work-plugins && cp -r knowledge-work-plugins/operations/skills/change-request ~/.claude/skills/
طلب تغيير
إنشاء طلب إدارة تغيير مع تحليل التأثير وخطة الاسترجاع. استخدمه عند اقتراح تغيير نظام أو عملية يحتاج إلى موافقة، وإعداد سجل تغيير لمراجعة CAB، وتوثيق ا…★ 4.8 · 2,500+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/knowledge-work-plugins && cp -r knowledge-work-plugins/product-management/skills/product-brainstorming ~/.claude/skills/
العصف الذهني للمنتجات
عصف ذهني بأفكار منتجات واستكشاف مساحات المشاكل وتحدي الافتراضات كشريك تفكير. استخدمه عند استكشاف فرصة جديدة أو توليد حلول لمشكلة منتج أو اختبار فكرة ب…★ 4.8 · 2,500+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/knowledge-work-plugins && cp -r knowledge-work-plugins/operations/skills/compliance-tracking ~/.claude/skills/
تتبع الامتثال
تتبع متطلبات الامتثال والاستعداد للتدقيق. يتم تفعيله عند استخدام "الامتثال"، "تحضير التدقيق"، "SOC 2"، "ISO 27001"، "GDPR"، "المتطلب التنظيمي"، أو عند…★ 4.8 · 2,500+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/knowledge-work-plugins && cp -r knowledge-work-plugins/operations/skills/process-optimization ~/.claude/skills/
تحسين العمليات
تحليل وتحسين عمليات الأعمال. يتم تفعيله عند قول "هذه العملية بطيئة"، "كيف يمكننا تحسينها"، "تبسيط هذا سير العمل"، "خطوات كثيرة جداً"، "اختناق"، أو عند…★ 4.8 · 2,500+
skillclaude_appclaude_codeclaude_api
git clone https://github.com/anthropics/knowledge-work-plugins && cp -r knowledge-work-plugins/enterprise-search/skills/search-strategy ~/.claude/skills/
استراتيجية البحث
تحليل الاستعلامات والتنسيق المتعدد المصادر. يقوم بتقسيم الأسئلة باللغة الطبيعية إلى عمليات بحث موجهة لكل مصدر، وترجمة الاستعلامات إلى صيغ خاصة بكل مصد…★ 4.8 · 2,500+

افحص قبل التثبيت

شغل أي مصدر عبر فحوصاتنا - الظهور في الذكاء الاصطناعي والأمان والأداء واكتشاف التقنيات.

المزيد في الإنتاجية والمكتب