Agent Skills
› openclaw/clawhub
› convex-quickstart
convex-quickstart
GitHub快速启动基于Next.js和Convex的极简全栈模板,支持本地开发、匿名部署及代码生成。适用于新项目初始化或现有应用集成Convex后端,强调最小化配置与规范编码。
Trigger Scenarios
用户希望从零开始创建一个使用Convex的全栈项目
需要在现有React或Next.js应用中快速集成Convex后端
Install
npx skills add openclaw/clawhub --skill convex-quickstart -g -y
SKILL.md
Frontmatter
{
"name": "convex-quickstart",
"description": "Get a barebones Convex + web template running from a one-sentence idea."
}
Quickstart: a barebones Convex template, running
Stand up a barebones Next.js + Convex template from the idea, locally, with an anonymous dev deployment. Minimal by design: local dev servers, no publish step, no pre-baked auth.
Workflow
- Run recipe
quickstart-recipe@^2with {idea, template} (the pack fetches + caches it; pinned offline fallback). It creates the project, installs deps, starts the backend (anonymous) and the web dev server. - When it prints the dev URL, open it for the user.
- Present a short plan and CONFIRM before building features beyond the template.
Rules
- Never re-run the recipe if it already reported success.
- Delegate any code under
convex/to theconvex-expertcapability. - Don't add Postgres/Redis/Express — use Convex primitives.
- Don't add hosting/publish or pre-baked auth here — keep the template minimal unless the user asks for more.
- DEGRADATION RULE — if the scaffold cannot run (non-interactive session, no network, a sandboxed temp dir, or the user just wants code, not an app): skip the recipe and write a standard Convex project directly. ALL backend code goes under
convex/(schema.ts, functions) — NEVER at the project root; Convex functions only run from theconvex/directory. Write ZERO scaffold/documentation files (no START_HERE.md, ARCHITECTURE.md, MANIFEST.txt, README walls) unless explicitly asked. "Build me a backend" means code, not ceremony. - Data access + imports — before writing any convex/*.ts: never an unbounded
.collect()on a table that can grow — use.withIndex(...)and.paginate(...)/.take(n). Use an index, not.filter(), for anything that would be a SQL WHERE..withIndex(...)callbacks only haveeq/gt/gte/lt/lte— there is no.range(...)method. Imports:query/mutation/action/internalQuery/internalMutation/internalActioncome from./_generated/server;api/internalcome from./_generated/api; NEVER import fromconvex/serverin application code.v.literal("exact value")for fixed string/enum members, not a bare string."use node"only at the top of action-only modules — never in a file that also exports aqueryormutation. Never import a Node builtin (crypto/fs/path/http/child_process/os, with or without thenode:prefix) into a file lacking"use node"— includinghttp.tsroute handlers; use Web Crypto (crypto.subtle) instead ofimportingcryptowhere possible. - Reserved names — never
export const <jsReservedWord> = ...(e.g.delete,new,class,function,return) as a query/mutation/action export name; esbuild fails to parse it. Never a table or index name starting with_(e.g._migrations: defineTable(...)) —_is reserved and errors at push asTableNameReserved/IndexNameReserved. - HTTP routes —
httpRouterhas no Express-style:paramsegments (path: "/users/:id"only matches that literal string and is dead code); usepathPrefixand parse the trailing segment yourself. Everyhttp.route({...})handler:must be wrapped inhttpAction(...)from./_generated/server— a bareasync (ctx, request) => {...}type-checks but isn't a valid HTTP action. ctx.runQuery/ctx.runMutation/ctx.runActionneed a codegen'd function reference (api.foo.bar/internal.foo.bar), never a raw imported module member (import * as queries from "./queries"; ctx.runQuery(queries.getX, ...)compiles but fails at runtime).- SELF-VERIFY RULE — before declaring backend work done, verify it compiles and pushes: run
npx tsc --noEmitand, when a deployment is available (or via a local anonymous one:CONVEX_AGENT_MODE=anonymous npx convex dev --once), push it. Fix every error it reports before finishing — one verify round catches the wrong-relative-import / duplicate-symbol / unbalanced-paren class that otherwise breaks the deploy.
Version History
-
d6a8c68
Current 2026-08-20 02:44
重构工作流为基于recipe的快速启动模式,强化代码规范约束(如索引使用、导入限制),并增加降级处理规则以适配无交互或离线环境。
- 5a3b050 2026-07-25 08:43


