Auth Schema Generator
Generate Better Auth user schema configurations with custom additional fields for authentication systems.
When to Use
Use this skill when:
- Implementing Better Auth in a new project
- Adding custom user profile fields (background info, preferences, settings)
- Extending user data model with questionnaire responses
- Setting up authentication with personalized user data
Instructions
Step 1: Identify Required Fields
Determine what additional user data you need:
- User preferences (theme, language, notifications)
- Profile information (job title, department, bio)
- Background data (experience levels, skills, interests)
- System metadata (onboarding status, last login)
Step 2: Generate Schema Configuration
Create Better Auth configuration in src/lib/auth.ts:
export const auth = betterAuth({
database: pool,
emailAndPassword: {
enabled: true,
},
user: {
additionalFields: {
// Generated fields based on requirements
fieldName: {
type: "string",
required: true,
defaultValue: "default",
},
},
},
});
Step 3: Generate TypeScript Types
Export inferred types for type safety:
export type Session = typeof auth.$Infer.Session;
export type User = typeof auth.$Infer.User;
Step 4: Create Interface Definitions
Generate TypeScript interfaces for use in components:
interface UserProfile {
[fieldName]: string;
// Additional fields...
}
Example: Background Questionnaire
For a learning platform with user background profiling:
Input: Need to track software experience, AI/ML familiarity, hardware knowledge, learning goals
Generated Schema:
user: {
additionalFields: {
softwareExperience: {
type: "string",
required: true,
defaultValue: "beginner"
},
aiMlFamiliarity: {
type: "string",
required: true,
defaultValue: "none"
},
hardwareExperience: {
type: "string",
required: true,
defaultValue: "none"
},
learningGoals: {
type: "string",
required: true,
defaultValue: "hobby"
},
programmingLanguages: {
type: "string",
required: false,
defaultValue: ""
}
}
}
Generated Interface:
interface BackgroundProfile {
softwareExperience: string;
aiMlFamiliarity: string;
hardwareExperience: string;
learningGoals: string;
programmingLanguages?: string;
}
Field Types Supported
string: Text fieldsnumber: Numeric valuesboolean: True/false flagsdate: Timestamps
Best Practices
- Use Descriptive Names:
softwareExperiencenotexp - Set Sensible Defaults: Provide default values for required fields
- Mark Optional Fields: Use
required: falsefor optional data - Type Safety: Always export TypeScript types
- Validation: Validate field values in your forms before submission
Files Modified
This skill typically modifies:
src/lib/auth.ts- Better Auth configurationsrc/types/auth.ts- TypeScript type definitions (if separate file)src/hooks/useAuth.ts- Custom auth hook to use typed data
Security Considerations
- Never store sensitive data in additional fields (use separate encrypted storage)
- Validate all user input before saving to database
- Use appropriate field types for the data being stored
- Consider GDPR/privacy implications for profile data
微信扫一扫