create-auth:用 Better Auth 爲 TS/JS 項目腳手架化搭建認證

前言

在 TypeScript 或 JavaScript 項目裏接入登錄、註冊和會話,往往需要同時處理數據庫適配器、框架路由、OAuth 回調、客戶端 SDK 和遷移腳本,文件多且步驟容易漏。Better Auth 本身把認證能力收斂到一套配置裏,但從零接線仍要對照文檔在多處改代碼。create-auth 是面向編碼助手的 Agent Skill,把「先摸清項目、再定方案、最後按框架落地」寫成固定流程,適合在新項目、存量項目或從其他認證庫遷移時使用。

這是什麼

create-auth 由 Better Auth 官方 skills 倉庫 提供,在 officialskills.sh 上歸類爲官方開發類 Skill。它的定位是:在 TS/JS 應用中用 Better Auth 腳手架化實現認證——自動識別框架與數據庫、配置適配器與路由處理器、接入 OAuth、並生成認證相關 UI 頁面。具體語法與 API 以 better-auth.com/docs 爲準。

核心功能

Skill 把工作拆成兩個階段,且 Phase 1 規劃必須在寫實現代碼之前完成。

項目掃描(自動推斷默認值)

助手會分析代碼庫,儘量從現有文件推斷:

  • 框架:如 next.config、svelte.config、nuxt.config、astro.config、vite.config,或 Express / Hono 入口。
  • 數據庫與 ORM:如 prisma/schema.prisma、drizzle.config.ts(含 dialect)、package.json 中的 pg、postgres、mysql2、better-sqlite3、mongoose 等依賴;Drizzle 驅動包可進一步區分 Postgres 接入方式。
  • 已有認證:package.json 或 import 中的 next-auth、lucia、clerk、supabase/auth、firebase/auth 等。
  • 包管理器:pnpm-lock.yaml、yarn.lock、bun.lockb、package-lock.json。

能確定的項會用來預填選項,減少重複提問。

結構化規劃(AskQuestion)

在單次調用中儘量問完適用問題(已能從掃描得出的可跳過),標題可類似「Auth Setup Planning」。覆蓋範圍包括:

  1. 項目類型:全新項目 / 在現有項目加認證 / 從其他庫遷移
  2. 框架:Next.js(App 或 Pages Router)、SvelteKit、Nuxt、Astro、Express、Hono、SolidStart 等
  3. 數據庫與 ORM:PostgreSQL / MySQL / SQLite / MongoDB,配合 Prisma、Drizzle 或原生驅動
  4. 登錄方式(可多選):郵箱密碼、社交 OAuth、Magic link、Passkey、手機號
  5. 社交提供商(選 OAuth 時追問):Google、GitHub、Apple、Microsoft、Discord、Twitter/X
  6. 郵箱驗證(選郵箱密碼時)
  7. 發信方式(需要驗證或密碼重置時):Resend 或暫時 Mock(console)
  8. 擴展能力(可多選):2FA、組織/團隊、管理後臺、API Bearer Token、密碼重置等
  9. 需要的認證頁面:登錄、註冊,以及忘記密碼、重置密碼、郵箱驗證等(隨前面選項變化)
  10. 認證頁 UI 風格:極簡、居中卡片、分欄、玻璃擬態或自定義描述

回答彙總後,助手會輸出一份 Markdown 檢查清單式的 Auth Implementation Plan,並請用戶確認後再進入實現階段。

實現路徑(Phase 2)

用戶確認計劃後,按決策樹執行:

  • 新項目:安裝 better-auth 及計劃中的 scoped 包 → auth.ts / auth-client.ts → 路由處理器 → 環境變量 → CLI migrate/generate → 插件與 UI 頁面。
  • 遷移:審計現有認證、增量遷移、與舊庫並行安裝、先路由再會話再 UI、最後移除舊庫(文檔中有遷移指引)。
  • 存量項目加認證:分析結構、安裝與配置、路由與 schema 遷移、接入現有頁面與插件。

實現結束後,Skill 要求引導用戶完成 OAuth 憑據、部署環境變量、端到端測試等後續步驟。

依賴與環境變量(實現時會用到)

核心包:

npm install better-auth

按需選用的 scoped 包示例:@better-auth/passkey、@better-auth/sso、@better-auth/stripe、@better-auth/scim、@better-auth/expo。

常見環境變量:

BETTER_AUTH_SECRET=<32+ chars, generate with: openssl rand -base64 32>
BETTER_AUTH_URL=http://localhost:3000
DATABASE_URL=<your database connection string>

OAuth 需額外配置如 GITHUB_CLIENT_ID、GITHUB_CLIENT_SECRET、GOOGLE_CLIENT_ID 等。

服務端配置通常放在 lib/auth.ts 或 src/lib/auth.ts,至少包含 database 與 emailAndPassword: { enabled: true };標準場景還會配置 socialProviders、郵箱驗證與密碼重置回調等。計劃中提到的 schema 生成與遷移可通過 CLI(資料示例:npx auth@latest,auth 包隨 CLI 使用、無需全局安裝)配合框架路由(如 Next.js App Router 的 app/api/auth/[...all]/route.ts)完成。

安裝與啓用

在支持 Agent Skills 的助手中,可按 officialskills.sh 所列方式添加:

npx skills add https://github.com/better-auth/skills --skill better-auth-create-auth

也可直接向助手提供 Skill 目錄鏈接,請求安裝:

https://github.com/better-auth/skills/tree/main/better-auth/create-auth

安裝後,在對話中說明要爲項目增加登錄/註冊或遷移認證即可觸發該 Skill 的流程。Cursor、Codex CLI、Claude Code 等對 Skills 的安裝入口可能不同,但 Skill 本體均爲倉庫中的 SKILL.md 指令;未在官方頁面單獨列出的客戶端差異此處不展開。

典型用法

下列場景來自官方 Skill 頁面「When to use it」說明,對應用法是在已安裝 Skill 的會話裏用自然語言描述同類需求,由助手執行 Phase 1 掃描與提問,確認計劃後落地代碼。

  1. 在 Next.js App Router + Prisma 項目上增加郵箱密碼登錄。
  2. 在 SvelteKit 中配置 Google 與 GitHub OAuth。
  3. 從 NextAuth 或 Lucia 遷移到 Better Auth,儘量降低打斷。
  4. 在 Drizzle schema 上同時啓用 2FA、組織(organization) 等插件。
  5. 爲 Hono API 生成帶會話保護的登錄/註冊頁,並接好路由處理器。

規劃階段產出的計劃示例結構(框架、數據庫、登錄方式、插件、UI 步驟列表)與資料中的 checklist 一致;實現階段會按你選的框架生成 auth-client(如 React 客戶端)與對應 route handler。

適用場景與注意

適合:TypeScript/JavaScript 全棧或前後端分離項目;需要郵箱密碼、OAuth、2FA、組織等多能力組合;希望助手按倉庫約定一次性串起適配器、路由、遷移與頁面,而不是自己拼文檔片段。

注意:

  • 必須先完成規劃並用戶確認,再寫實現,避免與項目棧不一致。
  • 若項目已有其他認證庫,遷移路徑要求分步並行,勿在未審計前直接刪除舊依賴。
  • Passkey、企業 SSO、Stripe、SCIM、Expo 等需額外 scoped 包,並在計劃中顯式選中。
  • 郵件相關能力需配置真實發信(如 Resend)或接受開發期 Mock。
  • 代碼細節以 Better Auth 官方文檔爲準;Skill 負責流程與決策樹,不替代閱讀 OAuth 提供商控制台與生產環境密鑰管理。

結尾

create-auth 把 Better Auth 接入拆成「掃描 → 一問一答式規劃 → 確認清單 → 分場景實現」,覆蓋多框架、多數據庫與從舊庫遷移。若你正在用 AI 編碼助手搭登錄體系,可從官方倉庫安裝 Skill,並在會話中直接描述目標棧與登錄方式。

官方地址:https://github.com/better-auth/skills/tree/main/better-auth/create-auth

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜