mcpField
C
convex-backend

convex-backend

github.com/cloudai-x開発1.4k234 回インストール4 週間前に更新
リポジトリ

convex-backend について

Convex をバックエンドに使う開発者向けの TypeScript ガイドです。関数、スキーマ、クエリ、スケジュール実行、ファイルストレージの実践方法を扱います。

主な機能

  1. 01Convex 関数とバリデーション
  2. 02スキーマとインデックス設計
  3. 03クエリ・ミューテーション・アクションのパターン
  4. 04Cron とスケジュール実行
  5. 05ファイルストレージのガイド

活用シーン

  1. 01Convex のクエリ、ミューテーション、アクションの作成
  2. 02スキーマとバリデーターの定義
  3. 03リアルタイムデータ取得の実装
  4. 04スケジュール実行やファイルストレージの設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cloudai-x/claude-workflow-v2 --skill convex-backend

インストール後、Claude Code で/convex-backendを入力して読み込まれたか確認します。

同梱ファイルAGENTS.md

詳細

Convex バックエンドのガイドライン

読み込むタイミング
  • トリガー:Convex に固有の開発、Convex 関数、スキーマ、クエリ、ミューテーション、アクション、リアルタイムサブスクリプションの作成
  • スキップ:プロジェクトのバックエンドに Convex を使用していない場合

TypeScript で Convex バックエンドを構築するための包括的なガイドです。関数の構文、バリデーター、スキーマ、クエリ、ミューテーション、アクション、スケジューリング、ファイルストレージについて説明します。

適用するタイミング

以下の場合に、このガイドラインを参照してください。

  • 新しい Convex 関数(クエリ、ミューテーション、アクション)を作成するとき
  • データベーススキーマとバリデーターを定義するとき
  • リアルタイムのデータ取得を実装するとき
  • cron ジョブやスケジュールされた関数を設定するとき
  • ファイルストレージを扱うとき
  • API 構造を設計するとき

ルールのカテゴリ

カテゴリ影響説明
関数の構文CRITICALargs/returns/handler を使用する新しい関数構文
バリデーターCRITICAL型安全な引数と戻り値の検証
スキーマ設計HIGHテーブル定義、インデックス、システムフィールド
クエリパターンHIGHインデックスを使用した効率的なデータ取得
ミューテーションパターンMEDIUMデータベースへの書き込み、patch と replace の使い分け
アクションパターンMEDIUM外部 API 呼び出し、Node.js ランタイム
スケジューリングMEDIUMcron と遅延関数の実行
ファイルストレージLOWBlob ストレージとメタデータ

クイックリファレンス

関数の登録
// Public functions (exposed to clients)
import { query, mutation, action } from "./_generated/server";

// Internal functions (only callable from other Convex functions)
import {
  internalQuery,
  internalMutation,
  internalAction,
} from "./_generated/server";
関数の構文(必ず使用してください)
export const myFunction = query({
  args: { name: v.string() },
  returns: v.string(),
  handler: async (ctx, args) => {
    return "Hello " + args.name;
  },
});
よく使うバリデーター
型バリデーター例
文字列v.string()"hello"
数値v.number()3.14
真偽値v.boolean()true
IDv.id("tableName")doc._id
配列v.array(v.string())["a", "b"]
オブジェクトv.object({...}){name: "x"}
オプションv.optional(v.string())undefined
ユニオンv.union(v.string(), v.number())"x" or 1
リテラルv.literal("status")"status"
Nullv.null()null
関数参照
// Public functions
import { api } from "./_generated/api";
api.example.myQuery; // convex/example.ts → myQuery

// Internal functions
import { internal } from "./_generated/api";
internal.example.myInternalMutation;
インデックスを使ったクエリ
// Schema
messages: defineTable({...}).index("by_channel", ["channelId"])

// Query
await ctx.db
  .query("messages")
  .withIndex("by_channel", (q) => q.eq("channelId", channelId))
  .order("desc")
  .take(10);
重要なルール
  1. すべての関数に必ず args と returns のバリデーターを含めてください
  2. 戻り値がない場合は v.null() を使用してください - 戻り値のバリデーターを省略してはいけません
  3. filter() ではなく withIndex() を使用してください - スキーマでインデックスを定義します
  4. プライベート関数には internalQuery/Mutation/Action を使用してください
  5. アクションから ctx.db にはアクセスできません - 代わりに runQuery/runMutation を使用してください
  6. 同じファイル内で関数を呼び出す場合は型注釈を含めてください

コンパイル済みドキュメント全文

すべてのルールと詳細なコード例を含む完全なガイドについては、AGENTS.md を参照してください。

コメント