关于 convex-quickstart
convex-quickstart 是用于从构想搭建 Next.js 与 Convex 基础项目的技能,面向希望快速启动本地开发的开发者。它默认创建匿名开发部署和网页开发服务器,并通过详细规则约束后续 Convex 后端实现。
主要功能
- 01从构想生成 Next.js 与 Convex 模板
- 02启动匿名开发部署及本地服务器
- 03遵循 Convex 索引和分页数据访问规则
- 04约束函数、导入和 HTTP 路由写法
- 05通过 TypeScript 检查与部署验证后端
适用场景
- 01为新应用搭建最小 Convex 项目
- 02启动本地前后端开发环境
- 03检查和验证 Convex 后端代码
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 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 后,为用户打开该 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"只能放在仅包含 action 的模块顶部——绝不要放在同时导出query或mutation的文件中。没有"use node"的文件中绝不要导入 Node 内置模块(crypto/fs/path/http/child_process/os,无论是否带node:前缀)——包括http.ts路由处理程序;尽可能使用 Web Crypto(crypto.subtle)代替导入crypto。 - 保留名称——绝不要将
export const <jsReservedWord> = ...(例如delete、new、class、function、return)用作 query/mutation/action 导出名称;esbuild 无法解析。表名或索引名绝不能以下划线_开头(例如_migrations: defineTable(...))——_是保留字符,推送时会报TableNameReserved/IndexNameReserved错误。 - HTTP 路由——
httpRouter不支持 Express 风格的:param片段(path: "/users/:id"只会匹配该字面字符串,属于无效代码);应使用pathPrefix并自行解析末尾片段。每个http.route({...})的handler:都必须用./_generated/server中的httpAction(...)包装——裸写async (ctx, request) => {...}虽然能通过类型检查,但不是有效的 HTTP action。 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