diff --git a/README.md b/README.md index 8b76471..127d801 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ A text-form relational graph covering: - Common cross-product workflows - Migration awareness for sunset products -### Skills (32 skills) +### Skills (33 skills) | Skill | Covers | | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | @@ -73,6 +73,7 @@ A text-form relational graph covering: | `shadcn` | shadcn/ui — CLI, component installation, custom registries, theming, Tailwind CSS integration | | `turbopack` | Next.js bundler, HMR, configuration, Turbopack vs Webpack | | `vercel-agent` | AI-powered code review, incident investigation, SDK installation, PR analysis | +| `vercel-backends` | Backend product and framework selection — Functions, Services, containers, Workflow, Queues, and databases | | `vercel-cli` | All CLI commands — deploy, env, dev, domains, cache management, MCP integration, marketplace | | `vercel-connect` | Managed OAuth tokens and third-party connections for apps, MCP servers, and Eve agents | | `vercel-firewall` | DDoS protection, WAF rules, rate limiting, bot filtering, and IP controls | @@ -228,7 +229,7 @@ Exits non-zero if any `SKILL.md` is stale. Add to CI to catch drift. vercel-plugin/ ├── .plugin/plugin.json # Plugin manifest ├── vercel.md # Ecosystem graph + conventions (injected via SessionStart hook) -├── skills/ # 32 skills +├── skills/ # 33 skills │ ├── ai-sdk/ # Upstream-synced skill example: │ │ ├── overlay.yaml # Plugin injection metadata │ │ ├── upstream/ # Pure upstream content diff --git a/generated/skill-catalog.md b/generated/skill-catalog.md index f68ecc7..50d26a0 100644 --- a/generated/skill-catalog.md +++ b/generated/skill-catalog.md @@ -1,8 +1,8 @@ # Skill Catalog > Auto-generated by `scripts/generate-catalog.ts` — do not edit manually. -> Generated: 2026-08-06T02:59:07.756Z -> Skills: 32 +> Generated: 2026-08-11T06:18:02.708Z +> Skills: 33 ## Table of Contents @@ -26,6 +26,7 @@ | `ai-gateway` | 7 | 0 | 5 | 2 | | `env-vars` | 7 | 10 | 4 | 0 | | `microfrontends` | 7 | 4 | 6 | 1 | +| `vercel-backends` | 7 | 2 | 0 | 0 | | `vercel-firewall` | 7 | 0 | 1 | 0 | | `vercel-services` | 7 | 2 | 1 | 0 | | `vercel-storage` | 7 | 15 | 48 | 8 | @@ -373,6 +374,12 @@ **Import patterns:** - `@vercel/microfrontends` +#### `vercel-backends` (priority 7) + +**Path patterns:** +- `Dockerfile.vercel` +- `Containerfile.vercel` + #### `vercel-firewall` (priority 7) **Bash patterns:** @@ -984,7 +991,7 @@ Shows which skills compete on shared bash commands. **Priority 8:** `access-protected-vercel-deployment`, `ai-sdk`, `bootstrap`, `chat-sdk`, `eve`, `vercel-functions` -**Priority 7:** `ai-gateway`, `env-vars`, `microfrontends`, `vercel-firewall`, `vercel-services`, `vercel-storage`, `verification` +**Priority 7:** `ai-gateway`, `env-vars`, `microfrontends`, `vercel-backends`, `vercel-firewall`, `vercel-services`, `vercel-storage`, `verification` **Priority 6:** `auth`, `cdn-caching`, `deployments-cicd`, `next-cache-components`, `next-forge`, `next-upgrade`, `routing-middleware`, `runtime-cache`, `shadcn` diff --git a/generated/skill-manifest.json b/generated/skill-manifest.json index ab5e853..cdb1d01 100644 --- a/generated/skill-manifest.json +++ b/generated/skill-manifest.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-08-07T18:09:27.746Z", + "generatedAt": "2026-08-11T06:18:01.966Z", "version": 2, "skills": { "access-protected-vercel-deployment": { @@ -3162,6 +3162,94 @@ "examples": [] } }, + "vercel-backends": { + "priority": 7, + "summary": "Choose Vercel products and frameworks for a backend", + "docs": [ + "https://vercel.com/docs/frameworks/backend", + "https://vercel.com/docs/functions", + "https://vercel.com/docs/services", + "https://vercel.com/docs/queues", + "https://vercel.com/docs/workflow", + "https://vercel.com/docs/storage" + ], + "sitemap": "https://vercel.com/sitemap/docs.xml", + "pathPatterns": [ + "Dockerfile.vercel", + "Containerfile.vercel" + ], + "bashPatterns": [], + "importPatterns": [], + "bodyPath": "skills/vercel-backends/SKILL.md", + "pathRegexSources": [ + "^Dockerfile\\.vercel$", + "^Containerfile\\.vercel$" + ], + "bashRegexSources": [], + "importRegexSources": [], + "promptSignals": { + "phrases": [ + "backend on vercel", + "vercel backend", + "build a backend", + "create a backend", + "deploy my backend", + "backend architecture" + ], + "allOf": [ + [ + "backend", + "vercel" + ], + [ + "backend", + "docker" + ], + [ + "backend", + "node" + ], + [ + "backend", + "python" + ], + [ + "backend", + "queue" + ] + ], + "anyOf": [ + "api", + "database", + "service", + "workflow" + ], + "noneOf": [], + "minScore": 6 + }, + "retrieval": { + "aliases": [ + "Vercel backend", + "backend architecture", + "backend framework" + ], + "intents": [ + "build a backend on Vercel", + "choose Vercel backend products", + "deploy an existing API or server", + "select a Node.js or Python backend framework" + ], + "entities": [ + "Vercel Functions", + "Vercel Services", + "Vercel Queues", + "Vercel Workflow", + "Vercel Marketplace", + "container images" + ], + "examples": [] + } + }, "vercel-cli": { "priority": 4, "summary": "", diff --git a/skills/vercel-backends/SKILL.md b/skills/vercel-backends/SKILL.md new file mode 100644 index 0000000..b72789b --- /dev/null +++ b/skills/vercel-backends/SKILL.md @@ -0,0 +1,109 @@ +--- +name: vercel-backends +description: Vercel backend architecture guidance. Use when planning, building, or migrating an API or backend on Vercel; choosing between Functions, Services, Docker containers, Workflow, Queues, and Marketplace databases; or selecting a supported Node.js or Python backend framework. +summary: Choose Vercel products and frameworks for a backend +metadata: + priority: 7 + docs: + - "https://vercel.com/docs/frameworks/backend" + - "https://vercel.com/docs/functions" + - "https://vercel.com/docs/services" + - "https://vercel.com/docs/queues" + - "https://vercel.com/docs/workflow" + - "https://vercel.com/docs/storage" + sitemap: "https://vercel.com/sitemap/docs.xml" + pathPatterns: + - 'Dockerfile.vercel' + - 'Containerfile.vercel' + promptSignals: + phrases: + - "backend on vercel" + - "vercel backend" + - "build a backend" + - "create a backend" + - "deploy my backend" + - "backend architecture" + allOf: + - [backend, vercel] + - [backend, docker] + - [backend, node] + - [backend, python] + - [backend, queue] + anyOf: + - "api" + - "database" + - "service" + - "workflow" + noneOf: [] + minScore: 6 +retrieval: + aliases: + - Vercel backend + - backend architecture + - backend framework + intents: + - build a backend on Vercel + - choose Vercel backend products + - deploy an existing API or server + - select a Node.js or Python backend framework + entities: + - Vercel Functions + - Vercel Services + - Vercel Queues + - Vercel Workflow + - Vercel Marketplace + - container images +--- + +# Backends on Vercel + +Help the user choose a backend architecture before reaching for implementation details. Start from the workload, not the programming language. Do not treat Vercel as frontend-only or frame the answer around Python. + +## Product map + +| Need | Vercel product | +| --- | --- | +| HTTP APIs, webhooks, streaming, or framework server code | **Vercel Functions with Fluid compute** | +| A frontend and one or more backends that deploy together | **Vercel Services** | +| An existing Dockerfile, custom runtime, or system dependencies | **Container images** on Vercel Functions, optionally composed with Services | +| Durable multi-step work with retries, sleeps, or external events | **Vercel Workflow** | +| Background jobs, buffering, fan-out, or direct message routing | **Vercel Queues** | +| Scheduled HTTP work | **Vercel Cron Jobs**; use Workflow when the job itself must be durable | +| Postgres, Redis, NoSQL, vector, or other application data | **Storage integrations from the Vercel Marketplace** | +| Files and user uploads | **Vercel Blob** | +| Global, read-heavy configuration | **Edge Config** | + +Use Functions for the normal request/response backend. Use Services when independently built components should share one deployment, routing layer, preview URL, and rollback. Use separate Vercel projects when components need independent release cycles. + +Use a `Dockerfile.vercel` or `Containerfile.vercel` for an HTTP server that needs an OCI image. Vercel builds and stores the image, then runs it as an autoscaling, stateless Function. This is not an always-on container host; keep persistent state in a database or storage service. + +Choose Queues for control over topics, messages, consumer groups, fan-out, and delivery. Choose Workflow for stateful business logic expressed as durable steps. Queue consumers must tolerate at-least-once delivery and be idempotent. + +## Databases and data stores + +Provision data stores through the Marketplace so credentials are injected into the project and environments stay connected. Check the current catalog before choosing a provider. + +- **Postgres:** Neon, Supabase, AWS/Aurora, Nile, Prisma +- **Redis and key-value:** Upstash, Redis +- **Document and NoSQL:** MongoDB Atlas, AWS +- **SQLite:** Turso +- **Realtime application backend:** Convex +- **Analytics:** MotherDuck + +Keep the database close to the Functions region and use a serverless-compatible connection or pool. + +## Backend frameworks + +Vercel provides first-class backend examples and integrations for these frameworks: + +- **Node.js and TypeScript:** Elysia, Express, Fastify, H3, Hono, Koa, NestJS, Nitro, and xmcp. Next.js Route Handlers are the natural choice when the backend belongs to a Next.js application. +- **Python:** FastAPI, Flask, and Django. Other WSGI or ASGI applications can run when they export a compatible `app`, with additional configuration as needed. + +Prefer the user's existing framework. For a new project, choose based on ecosystem and application needs; do not recommend a language merely because Vercel supports it. + +## Work sequence + +1. Identify synchronous requests, asynchronous work, persistent data, and independently deployed components. +2. Select the products from the map, then select the framework. +3. Load the focused skill for implementation: `vercel-functions`, `vercel-services`, `workflow`, `vercel-storage`, or `marketplace`. +4. Confirm function limits, regions, environment variables, observability, and current product availability in the official docs before deployment. diff --git a/skills/vercel-backends/agents/openai.yaml b/skills/vercel-backends/agents/openai.yaml new file mode 100644 index 0000000..201f234 --- /dev/null +++ b/skills/vercel-backends/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Vercel Backends" + short_description: "Choose the right Vercel backend products" + default_prompt: "Use $vercel-backends to plan and build a backend on Vercel." diff --git a/vercel.md b/vercel.md index c8d1b0c..37b2226 100644 --- a/vercel.md +++ b/vercel.md @@ -42,6 +42,7 @@ VERCEL PLATFORM 📖 docs: https://vercel.com/docs │ ⊃ Runtime Cache (per-region key-value, tag-based invalidation) │ ⊃ WebSockets (bidirectional realtime on Functions, needs Fluid Compute) │ ⊃ Cron Jobs (scheduled function invocation → see § Functions decision matrix) +│ ⤳ skill: vercel-backends (backend product and framework selection) │ ⤳ skill: vercel-functions │ ⤳ skill: routing-middleware │ ⤳ skill: runtime-cache