Imported from qruto/nuxt-backend (
AGENTS.md). Install upstream withnpx skills add qruto/nuxt-backend. Copyright stays with the author.
Agent Rules
File Operations
Use Node scripts instead of Python for file operations.
Agent tooling
Skills and MCP servers are checked into the repo, so a fresh clone gets the same setup every agent here runs with.
| Where | What |
|---|---|
.agents/skills/ |
The skills themselves — canonical, agent-neutral, committed |
.claude/skills/ |
Symlinks into .agents/skills/, so Claude Code sees them |
skills-lock.json |
Upstream source + content hash for every skill |
.mcp.json |
MCP servers for this project |
Managed with the skills CLI:
pnpm skills:install # restore every skill from skills-lock.json (fresh clone)
pnpm skills:update # pull latest upstream, refresh the lock
pnpm skills add <owner/repo> -s <skill> -a claude-code # add one
Two rules keep the layout coherent, because the CLI copies into .claude/skills/
rather than symlinking:
- After any
addorupdate, move new folders from.claude/skills/into.agents/skills/and replace them with symlinks. Only.agents/skills/is committed as content. skills-lock.jsonmust list every folder in.agents/skills/and nothing else.depth-designandtest-nuxt-backendaresourceType: "local"— they have no upstream, so they live and die with this repo.
MCP servers github and vercel need an interactive OAuth sign-in (/mcp) before
their tools work.
This project uses Convex as its backend.
When working on Convex code, always read
website/backend/_generated/ai/guidelines.md first for important guidelines on
how to correctly use Convex APIs and patterns. The file contains rules that
override what you may have learned about Convex from training data.
Convex agent skills for common tasks can be installed by running
npx convex ai-files install.
Local development gotchas
The website dev server needs the sibling base module built, not stubbed.
nuxt-convex-module is a link: dependency, and this app resolves it through
dist/runtime/**/*.js. A stub build replaces dist/runtime with a symlink to
src/runtime (TypeScript only), and Nitro then dies with
Could not load .../dist/runtime/nuxt/index.js. Running pnpm install here has
been observed to leave the sibling in that state. The fix is always the same:
pnpm --dir ../nuxt-convex-module run build # a real build, not --stub
Then restart pnpm run dev:nuxt-module. This disappears once the base module is
published and the link: protocol goes away.
Environment naming. This package names its own variables after what they do
(NUXT_PUBLIC_BACKEND_URL, EMAIL_*, BILLING_*, AUTH_SECRET, SITE_URL).
CONVEX_DEPLOYMENT, CONVEX_SITE_URL and CONVEX_SELF_HOSTED_URL belong to the
platform CLI and runtime — read them, never ask a user to author them, and never
rename them. .env.local and the generated .env.example group by purpose:
Backend, Email, Billing, Dev only, then the platform's own group last.