convex-auth

Thêm xác thực (passkeys/OAuth) vào ứng dụng Convex hiện tại, bao gồm cả việc cấu hình auth.config.ts.

npx skills add https://github.com/get-convex/agent-skills --skill convex-auth

Add sign-in to the app

Install and wire @convex-dev/auth for the current app: a provider (passkeys by default, or OAuth/password), the server config, the client hooks, and a sign-in UI — correctly, including the auth.config.ts that's the #1 real-world auth footgun.

Workflow

  1. Install @convex-dev/auth (pinned build) and add it to convex.config.ts. With pnpm, also pnpm add jose (it won't hoist otherwise); you need it for step 3.
  2. Add the provider in convex/auth.ts (Passkey by default; Password or OAuth like Google on request).
  3. Generate the auth keys HEADLESSLY. Do NOT run the interactive npx @convex-dev/auth wizard: it needs a login/TTY and hangs in non-interactive, anonymous, or CI runs (the #1 auth time-sink). Generate JWT_PRIVATE_KEY + JWKS deterministically with jose: node -e 'import("jose").then(async({generateKeyPair,exportPKCS8,exportJWK})=>{const k=await generateKeyPair("RS256",{extractable:true});const priv=await exportPKCS8(k.privateKey);const pub=await exportJWK(k.publicKey);process.stdout.write(JSON.stringify({JWT_PRIVATE_KEY:priv.trimEnd().replace(/\n/g," "),JWKS:JSON.stringify({keys:[{use:"sig",...pub}]})}))})' > .auth-keys.json Then set JWT_PRIVATE_KEY and JWKS (from .auth-keys.json) plus SITE_URL on the deployment. Prefer the Convex MCP envSet tool, one call per var, to avoid shell-quoting the multi-line key. CLI fallback: use the NAME=VALUE form (npx convex env set "JWT_PRIVATE_KEY=$JWT"), NEVER env set JWT_PRIVATE_KEY "$JWT" (the value starts with -----BEGIN and the CLI parses the leading - as an unknown flag). SITE_URL is the dev URL (e.g. http://localhost:3000). Delete .auth-keys.json after.
  4. Write convex/auth.config.ts (the silently-always-signed-out bug lives here if it's wrong).
  5. Wire the client: ConvexAuthProvider, the sign-in component, and route guards. If you import shadcn/ui primitives (button, input, textarea, label, and so on), add them first with npx shadcn@latest add <name>; a missing @/components/ui/* is a hard build error.
  6. Verify a sign-in round-trips before declaring done.

Rules

  • Generate JWT_PRIVATE_KEY/JWKS with jose (extractable RS256; PKCS8 newlines to spaces; JWKS = {keys:[{use:"sig", ...publicJwk}]}). Do NOT run the interactive npx @convex-dev/auth wizard: it hangs headless/anonymous. Set the vars via the MCP envSet tool or the NAME=VALUE CLI form.
  • Always write auth.config.ts: a missing/incorrect one makes the app silently always-signed-out with no error.
  • Passkeys by default; only switch to password/OAuth on explicit request.
  • Install any shadcn/ui primitive you import up front (npx shadcn@latest add ...); a missing @/components/ui/* is a hard build failure.
  • Verify a real sign-in works before finishing.

Thêm skills từ get-convex

convex-performance-audit
get-convex
Kiểm tra hiệu suất Convex cho các thao tác đọc, đăng ký, xung đột ghi và giới hạn hàm. Sử dụng cho các tính năng chậm, phát hiện insights, xung đột OCC hoặc khuếch đại đọc.
developmentdatabasedata-analysis
convex
get-convex
Chuyển hướng các yêu cầu Convex chung đến kỹ năng dự án phù hợp. Sử dụng khi người dùng hỏi nên dùng kỹ năng Convex nào hoặc đưa ra một tác vụ ứng dụng Convex chưa được xác định rõ.
developmentdatabase
convex-setup-auth
get-convex
Thiết lập xác thực Convex, ánh xạ danh tính và kiểm soát truy cập. Sử dụng cho đăng nhập, nhà cung cấp xác thực, bảng người dùng, hàm được bảo vệ hoặc vai trò trong ứng dụng Convex.
developmentdatabaseapi
convex-quickstart
get-convex
Tạo hoặc thêm Convex vào ứng dụng. Dùng cho các dự án Convex mới, npm create convex@latest, thiết lập frontend, biến môi trường, hoặc lần chạy npx convex dev đầu tiên.
developmentdatabase
convex-migration-helper
get-convex
Lập kế hoạch di chuyển lược đồ và dữ liệu Convex với widen-migrate-narrow và @convex-dev/migrations. Sử dụng cho các thay đổi lược đồ gây gián đoạn, backfill, định hình lại bảng hoặc triển khai không thời gian chết.
developmentdatabase
convex-create-component
get-convex
Xây dựng các thành phần Convex có thể tái sử dụng với bảng cô lập và API hướng ứng dụng. Sử dụng cho các thành phần mới, mô-đun backend tái sử dụng, tích hợp hoặc công việc ranh giới thành phần.
developmentdatabase
convex-migrate
get-convex
Di chuyển schema + dữ liệu backfill trên ứng dụng Convex đã triển khai bằng @convex-dev/migrations.
developmentdatabase
convex-optimize
get-convex
Kiểm tra và tối ưu hóa một ứng dụng Convex hiện có: bảo mật, khả năng mở rộng, nâng cấp, khả năng quan sát.