PromptShop

Create Auth Skill

It emphasizes gathering project requirements through codebase analysis and structured questions to ensure the authentication implementation aligns with the p...

Install

npx promptshop add create-auth-skill

Details

What This Skill Does

  • This skill guides developers through planning and implementing authentication using Better Auth in Type.
  • Script/Java.
  • Script applications.
  • It emphasizes gathering project requirements through codebase analysis and structured questions to ensure the authentication implementation aligns with the project's specific needs.
  • This is ideal for developers integrating authentication into new or existing projects.

When to Use

  • Plan authentication for a new project.
  • Add authentication to an existing project.
  • Migrate from another auth library.
  • Determine the project's framework.
  • Identify the database and ORM in use.
  • Detect existing authentication libraries.

Key Features

  • Scans the project to auto-detect framework and database.
  • Asks structured questions to gather requirements.
  • Suggests options for project type, framework, and database.
  • Identifies existing authentication libraries.
  • Uses project scan to pre-fill defaults.
  • Groups questions under 'Auth Setup Planning'.

Manual Installation

  • Manual installation.
  • View Full Skill Content.
  • The complete markdown content that gets installed.
  • Create Auth Skill.

Guide for adding authentication to Type. Script/Java. Script applications using Better Auth.

For code examples and syntax, see better-auth.com/docs.

Phase 1: Planning (REQUIRED before implementation)

  • Before writing any code, gather requirements by scanning the project and asking the user structured questions.
  • This ensures the implementation matches their needs.

Step 1: Scan the project

Analyze the codebase to auto-detect: Framework — Look for next.config, svelte.config, nuxt.config, astro.config, vite.config, or Express/Hono entry files. Database/ORM — Look for prisma/schema.prisma, drizzle.config, package.json deps (pg, mysql2, better-sqlite3, mongoose, mongodb). Existing auth — Look for existing auth libraries (next-auth, lucia, clerk, supabase/auth, firebase/auth) in package.json or imports. Package manager — Check for pnpm-lock.yaml, yarn.lock, bun.lockb, or package-lock.json.

Use what you find to pre-fill defaults and skip questions you can already answer.

Step 2: Ask planning questions

  • Use the Ask.
  • Question tool to ask the user all applicable questions in a single call.
  • Skip any question you already have a confident answer for from the scan.
  • Group them under a title like "Auth Setup Planning".

Questions to ask:

Project type (skip if detected)

  • Prompt: "What type of project is this?"
  • Options: New project from scratch | Adding auth to existing project | Migrating from another auth library

Framework (skip if detected)

  • Prompt: "Which framework are you using?"
  • Options: Next.js (App Router) | Next.js (Pages Router) | Svelte. Kit | Nuxt | Astro | Express | Hono | Solid. Start | Other

Database & ORM (skip if detected)

  • Prompt: "Which database setup will you use?"
  • Options: PostgreSQL (Prisma) | PostgreSQL (Drizzle) | PostgreSQL (pg driver) | MySQL (Prisma) | MySQL (Drizzle) | MySQL (mysql2 driver) | SQ. Lite (Prisma) | SQ. Lite (Drizzle) | SQ. Lite (better-sqlite3 driver) | MongoDB (Mongoose) | MongoDB (native driver)

Authentication methods (always ask, allow multiple)

  • Prompt: "Which sign-in methods do you need?"
  • Options: Email & password | Social OAuth (Google, Git. Hub, etc.) | Magic link (passwordless email) | Passkey (Web. Authn) | Phone number
  • allow_multiple: true

Social providers (only if they selected Social OAuth above — ask in a follow-up call)

  • Prompt: "Which social providers do you need?"
  • Options: Google | Git. Hub | Apple | Microsoft | Discord | Twitter/X
  • allow_multiple: true

Email verification (only if Email & password was selected above — ask in a follow-up call)

  • Prompt: "Do you want to require email verification?"
  • Options: Yes | No

Email provider (only if email verification is Yes, or if Password reset is selected in features — ask in a follow-up call)

  • Prompt: "How do you want to send emails?"
  • Options: Resend | Mock it for now (console.log)

Features & plugins (always ask, allow multiple)

  • Prompt: "Which additional features do you need?"
  • Options: Two-factor authentication (2FA) | Organizations / teams | Admin dashboard | API bearer tokens | Password reset | None of these
  • allow_multiple: true

Auth pages (always ask, allow multiple — pre-select based on earlier answers)

  • Prompt: "Which auth pages do you need?"
  • Options vary based on previous answers:
    • Always available: Sign in | Sign up
    • If Email & password selected: Forgot password | Reset password
    • If email verification enabled: Email verification
  • allow_multiple: true

Auth UI style (always ask)

  • Prompt: "What style do you want for the auth pages? Pick one or describe your own."
  • Options: Minimal & clean | Centered card with background | Split layout (form + hero image) | Floating / glassmorphism | Other (I'll describe)

Step 3: Summarize the plan

  • After collecting answers, present a concise implementation plan as a markdown checklist.
  • Example:.

Auth Implementation Plan

  • Framework: Next.js (App Router). Database: PostgreSQL via Prisma Auth methods: Email/password, Google OAuth, Git. Hub OAuth Plugins: 2FA, Organizations, Email verification UI: Custom forms

Steps

Install better-auth and @better-auth/cli Create lib/auth.ts with server config Create lib/auth-client.ts with React client Set up route handler at app/api/auth/[...all]/route.ts Configure Prisma adapter and generate schema Add Google & Git. Hub OAuth providers Enable two. Factor and organization plugins Set up email verification handler Run migrations Create sign-in / sign-up pages

Ask the user to confirm the plan before proceeding to Phase 2.

Phase 2: Implementation

  • Only proceed here after the user confirms the plan from Phase 1.

Follow the decision tree below, guided by the answers collected above.

Is this a new/empty project? ├─ YES → New project setup │ 1. Install better-auth (+ scoped packages per plan) │ 2. Create auth.ts with all planned config │ 3. Create auth-client.ts with framework client │ 4. Set up route handler │ 5. Set up environment variables │ 6. Run CLI migrate/generate │ 7. Add plugins from plan │ 8. Create auth UI pages │ ├─ MIGRATING → Migration from existing auth │ 1. Audit current auth for gaps │ 2. Plan incremental migration │ 3. Install better-auth alongside existing auth │ 4. Migrate routes, then session logic, then UI │ 5. Remove old auth library │ 6. See migration guides in docs │ └─ ADDING → Add auth to existing project 1. Analyze project structure 2. Install better-auth 3. Create auth config matching plan 4. Add route handler 5. Run schema migrations 6. Integrate into existing pages 7. Add planned plugins and features

At the end of implementation, guide users thoroughly on remaining next steps (e.g., setting up OAuth app credentials, deploying env vars, testing flows).

Installation

Core: npm install better-auth

Scoped packages (as needed):

PackageUse case
@better-auth/passkeyWeb. Authn/Passkey auth
@better-auth/ssoSAML/OIDC enterprise SSO
@better-auth/stripeStripe payments
@better-auth/scimSCIM user provisioning
@better-auth/expoReact Native/Expo

Environment Variables

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

Add OAuth secrets as needed: GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, GOOGLE_CLIENT_ID, etc.

Server Config (auth.ts)

  • Location: lib/auth.ts or src/lib/auth.ts.

Minimal config needs: database - Connection or adapter email. AndPassword: { enabled: true } - For email/password auth

Standard config adds: social. Providers - OAuth providers (google, github, etc.) email. Verification.send. VerificationEmail - Email verification handler email. AndPassword.send. ResetPassword - Password reset handler

Full config adds: plugins -