# Convex Quickstart > Levanta un template Next.js + Convex barebones a partir de una idea en una frase. Fuente: https://skillsagentes.com/skills/get-convex/agent-skills/convex-quickstart Markdown: https://skillsagentes.com/skills/get-convex/agent-skills/convex-quickstart.md Repositorio: https://github.com/get-convex/agent-skills Autor: get-convex Licencia: Apache-2.0 Actualizado: hace 24 días Coste de contexto: 18 tok instalada, 1.1k tok al activarse, 1.3k tok con todos los archivos del bundle Bundle: 3 archivos, 5 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add get-convex/agent-skills --skill convex-quickstart --agent claude-code # Cursor npx -y skills add get-convex/agent-skills --skill convex-quickstart --agent cursor # Codex npx -y skills add get-convex/agent-skills --skill convex-quickstart --agent codex # Gemini CLI npx -y skills add get-convex/agent-skills --skill convex-quickstart --agent gemini # Windsurf npx -y skills add get-convex/agent-skills --skill convex-quickstart --agent windsurf # Cline npx -y skills add get-convex/agent-skills --skill convex-quickstart --agent cline ``` ## Qué hace - Crea un proyecto Next.js + Convex barebones a partir de una idea en una frase, con un dev deployment anónimo local - Ejecuta el recipe quickstart-recipe@^2 que crea el proyecto, instala dependencias y arranca los servidores de backend y web - Presenta un plan corto y pide confirmación antes de construir features más allá del template - Si el scaffold no puede ejecutarse, escribe un proyecto Convex estándar directamente sin ceremonias ni archivos de documentación - Delega cualquier código bajo convex/ a la capability convex-expert ## Cuándo usarla - Se quiere levantar rápido una app Next.js + Convex localmente a partir de una idea simple - El usuario solo pide código de backend, no una app corriendo (en ese caso escribe el proyecto directamente) ## Cuándo no - La sesión es no interactiva, sin red, en un directorio temporal sandboxed, o el usuario solo quiere código y no una app ## Qué la activa - "Levanta un proyecto Convex + Next.js barebones para una app de notas" - "Quiero una app simple con Convex, arráncala local" - "Crea el backend en Convex para esta idea, solo el código" ## Antes de instalar - Necesita Node/npx y, para el push firmado, una sesión autenticada vía npx convex whoami; sin red o en modo anónimo usa CONVEX_AGENT_MODE=anonymous. ## Archivos - SKILL.md — 4 KB - agents/openai.yaml — 477 B - assets/icon.svg — 435 B ## SKILL.md Reproducido tal cual desde get-convex/agent-skills bajo Apache-2.0. Esta sección es el documento original y está en inglés. # 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 1. Run recipe `quickstart-recipe@^2` with {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. 2. When it prints the dev URL, open it for the user. 3. 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 the `convex-expert` capability. - 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 the `convex/` 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 have `eq`/`gt`/`gte`/`lt`/`lte` — there is no `.range(...)` method. Imports: `query`/`mutation`/`action`/`internalQuery`/`internalMutation`/`internalAction` come from `./_generated/server`; `api`/`internal` come from `./_generated/api`; NEVER import from `convex/server` in 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 a `query` or `mutation`. Never import a Node builtin (`crypto`/`fs`/`path`/`http`/`child_process`/`os`, with or without the `node:` prefix) into a file lacking `"use node"` — including `http.ts` route handlers; use Web Crypto (`crypto.subtle`) instead of `import`ing `crypto` where possible. - Reserved names — never `export const = ...` (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 as `TableNameReserved`/`IndexNameReserved`. - HTTP routes — `httpRouter` has no Express-style `:param` segments (`path: "/users/:id"` only matches that literal string and is dead code); use `pathPrefix` and parse the trailing segment yourself. Every `http.route({...})` `handler:` must be wrapped in `httpAction(...)` from `./_generated/server` — a bare `async (ctx, request) => {...}` type-checks but isn't a valid HTTP action. - `ctx.runQuery`/`ctx.runMutation`/`ctx.runAction` need 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 --noEmit` and push it to a deployment. Prefer the project's existing one; otherwise `npx convex dev --once` when `npx convex whoami` succeeds, and `CONVEX_AGENT_MODE=anonymous npx convex dev --once` ONLY when it does not. Forcing anonymous on a signed-in user rebinds `.env.local` and costs them the persistent, publishable cloud deployment they expect. 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. ## Dónde encaja - Categoría: [Desarrollo de APIs](https://skillsagentes.com/categorias/desarrollo-apis.md) — Diseña, prueba y documenta APIs HTTP y GraphQL. - Creador: [get-convex](https://skillsagentes.com/creators/get-convex.md) — 33 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)