convex-quickstart について
convex-quickstart は、一文のアイデアから Next.js と Convex による最小限のテンプレートを作成し、匿名の開発デプロイでローカル実行するエージェントスキルです。公開手順や認証の事前設定を含まず、動作する全スタックの出発点を素早く用意したい開発者に向いています。
主な機能
- 01一文のアイデアからプロジェクトを生成
- 02バックエンドと Web 開発サーバーをローカルで起動
- 03匿名の開発デプロイ、アカウント設定は不要
- 04公開手順と事前構成の認証を含まない
活用シーン
- 01Next.js と Convex のアプリを素早くプロトタイピング
- 02機能追加前のベースプロジェクトの準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ get-convex/ agent-skills --skill convex-quickstartインストール後、Claude Code で/convex-quickstartを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlassets/icon.svg
詳細
クイックスタート:実行中の最小限の Convex テンプレート
アイデアをもとに、匿名の開発用デプロイメントで最小限の Next.js + Convex テンプレートをローカルで立ち上げます。最小限にするため、ローカルの開発サーバーを使用し、公開手順や事前構築済みの認証はありません。
ワークフロー
- {idea, template} を指定してレシピ
quickstart-recipe@^2を実行します(パックが取得してキャッシュします。固定されたオフライン用フォールバックもあります)。プロジェクトを作成し、依存関係をインストールして、バックエンド(匿名)と Web 開発サーバーを起動します。 - 開発用 URL が表示されたら、ユーザーに開きます。
- テンプレートを超える機能を構築する前に、簡潔な計画を提示して、必ず確認を取ります。
ルール
- レシピがすでに成功を報告している場合は、再実行しないでください。
convex/配下のコードはすべてconvex-expert機能に委任してください。- Postgres/Redis/Express は追加せず、Convex のプリミティブを使用してください。
- ホスティング/公開や、あらかじめ用意された認証機能は追加せず、ユーザーから求められない限りテンプレートは最小限に保ってください。
- 劣化時のルール — スキャフォールドを実行できない場合(非対話型セッション、ネットワークなし、サンドボックス化された一時ディレクトリ、またはユーザーがアプリではなくコードだけを求めている場合)は、レシピをスキップし、標準的な Convex プロジェクトを直接作成してください。バックエンドコードはすべて
convex/配下(schema.ts、関数)に置いてください。プロジェクトのルートには絶対に置かないでください。Convex 関数はconvex/ディレクトリからのみ実行されます。明示的に求められない限り、スキャフォールド/ドキュメントファイル(START_HERE.md、ARCHITECTURE.md、MANIFEST.txt、README の長文など)は一切作成しないでください。「バックエンドを作って」は、形式的な手順ではなくコードを意味します。 - データアクセスとインポート —
convex/*.tsを書く前に、増加し得るテーブルに対して上限のない.collect()を使用しないでください。.withIndex(...)と.paginate(...)/.take(n)を使用してください。SQL の WHERE 句に相当する処理には、.filter()ではなくインデックスを使用してください。.withIndex(...)のコールバックで使用できるのはeq/gt/gte/lt/lteだけで、.range(...)メソッドはありません。インポート:query/mutation/action/internalQuery/internalMutation/internalActionは./_generated/serverから、api/internalは./_generated/apiからインポートしてください。アプリケーションコードからconvex/serverをインポートしてはいけません。固定の文字列/列挙型メンバーには、単なる文字列ではなくv.literal("exact value")を使用してください。"use node"はアクション専用モジュールの先頭にのみ記述し、queryまたはmutationもエクスポートするファイルには記述しないでください。"use node"がないファイルでは、Node の組み込みモジュール(crypto/fs/path/http/child_process/os。node:プレフィックスの有無は問いません)をインポートしてはいけません。http.tsのルートハンドラーも対象です。可能な場合はcryptoをimportせず、代わりに Web Crypto(crypto.subtle)を使用してください。 - 予約名 — クエリ/ミューテーション/アクションのエクスポート名として、
export const <jsReservedWord> = ...(例:delete、new、class、function、return)を使わないでください。esbuild の解析に失敗します。_migrations: defineTable(...)のように、名前が_で始まるテーブル名やインデックス名も使用しないでください。_は予約されており、プッシュ時にTableNameReserved/IndexNameReservedエラーが発生します。 - HTTP ルート —
httpRouterは Express 形式の:paramセグメントをサポートしません(path: "/users/:id"はそのリテラル文字列にのみ一致するため、実行されないコードになります)。pathPrefixを使い、末尾のセグメントを自分で解析してください。各http.route({...})のhandler:は、./_generated/serverのhttpAction(...)でラップする必要があります。単独のasync (ctx, request) => {...}は型チェックに通りますが、有効な HTTP アクションではありません。 ctx.runQuery/ctx.runMutation/ctx.runActionには、コード生成された関数参照(api.foo.bar/internal.foo.bar)が必要です。インポートしたモジュールメンバーをそのまま渡してはいけません(import * as queries from "./queries"; ctx.runQuery(queries.getX, ...)はコンパイルできますが、実行時に失敗します)。- 自己検証ルール — バックエンド作業の完了を宣言する前に、コンパイルとプッシュを検証してください。
npx tsc --noEmitを実行し、デプロイ環境にプッシュしてください。プロジェクトに既存のデプロイ環境があればそれを優先し、なければnpx convex whoamiが成功する場合はnpx convex dev --onceを、それ以外の場合に限りCONVEX_AGENT_MODE=anonymous npx convex dev --onceを実行してください。サインイン済みのユーザーに対して匿名モードを強制すると、.env.localが再バインドされ、ユーザーが期待している永続的で公開可能なクラウドデプロイ環境が失われます。報告されたエラーはすべて、完了前に修正してください。検証を一度行えば、そうしないとデプロイを壊す、相対インポートの誤り/シンボルの重複/括弧の不整合といった問題を検出できます。
コメント
Markdown 対応