Claude-skill-registry auth-components
Pre-built and custom Clerk authentication component templates with theming and customization patterns. Use when building authentication UI, creating sign-in/sign-up pages, customizing Clerk components, implementing user buttons, theming auth flows, or when user mentions Clerk components, SignIn, SignUp, UserButton, auth UI, appearance customization, or authentication theming.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/auth-components" ~/.claude/skills/majiayu000-claude-skill-registry-auth-components && rm -rf "$T"
skills/data/auth-components/SKILL.mdClerk Auth Components Skill
This skill provides comprehensive templates and patterns for implementing and customizing Clerk authentication components including pre-built components, Clerk Elements for custom flows, and appearance theming.
Overview
Clerk offers two approaches for authentication UI:
- Pre-built Components - Ready-to-use
,<SignIn />
,<SignUp />
with minimal configuration<UserButton /> - Clerk Elements - Custom components with granular control for advanced use-cases
This skill covers both approaches with practical templates and customization patterns.
Available Scripts
1. Generate Authentication UI Pages
Script:
scripts/generate-auth-ui.sh <output-dir> <component-type>
Purpose: Generates complete authentication page templates
Component Types:
- SignIn page with routingsignin
- SignUp page with routingsignup
- Both SignIn and SignUp pagesboth
- User profile pageprofile
- Complete auth UI setall
Usage:
# Generate sign-in page ./scripts/generate-auth-ui.sh ./app/sign-in signin # Generate both sign-in and sign-up ./scripts/generate-auth-ui.sh ./app signup # Generate complete auth UI ./scripts/generate-auth-ui.sh ./app all
Generated Files:
app/sign-in/[[...sign-in]]/page.tsxapp/sign-up/[[...sign-up]]/page.tsxapp/profile/[[...profile]]/page.tsxcomponents/auth/protected-wrapper.tsx
2. Customize Appearance and Theming
Script:
scripts/customize-appearance.sh <config-file> <theme-preset>
Purpose: Generates appearance configuration for Clerk components
Theme Presets:
- Clerk default themedefault
- Dark mode themedark
- Neobrutalist themeneobrutalist
- Shades of Purple themeshadesOfPurple
- Custom theme templatecustom
Usage:
# Generate dark theme config ./scripts/customize-appearance.sh ./lib/clerk-config.ts dark # Generate custom theme template ./scripts/customize-appearance.sh ./lib/clerk-config.ts custom # Generate theme with custom variables BRAND_COLOR="#6366f1" ./scripts/customize-appearance.sh ./lib/clerk-config.ts custom
Environment Variables:
- Primary brand color (hex)BRAND_COLOR
- Background color (hex)BACKGROUND
- Text color (hex)TEXT_COLOR
3. Validate Component Implementation
Script:
scripts/validate-components.sh <project-dir>
Purpose: Validates Clerk component setup and configuration
Checks:
- Clerk dependencies installed (@clerk/nextjs)
- Environment variables configured
- ClerkProvider setup in layout
- Authentication pages exist
- Middleware configured
- No hardcoded secrets
Usage:
# Validate current project ./scripts/validate-components.sh . # Validate specific directory ./scripts/validate-components.sh /path/to/project
Exit Codes:
: Validation passed0
: Validation failed (must fix issues)1
Available Templates
1. Sign-In Page Template
Template:
templates/sign-in-page.tsx
Features:
- Next.js App Router integration
- Catch-all routing
[[...sign-in]] - After sign-in redirect configuration
- Centered layout with responsive design
Usage:
// app/sign-in/[[...sign-in]]/page.tsx import { SignIn } from '@clerk/nextjs' export default function SignInPage() { return ( <div className="flex min-h-screen items-center justify-center"> <SignIn appearance={{ elements: { rootBox: "mx-auto", card: "shadow-lg" } }} afterSignInUrl="/dashboard" /> </div> ) }
2. Sign-Up Page Template
Template:
templates/sign-up-page.tsx
Features:
- Next.js App Router integration
- Catch-all routing
[[...sign-up]] - After sign-up redirect configuration
- Custom appearance configuration
3. Custom User Button Template
Template:
templates/user-button-custom.tsx
Features:
- Custom menu items
- Appearance customization
- Avatar size control
- Dropdown actions
Customization Example:
<UserButton appearance={{ elements: { userButtonAvatarBox: "w-10 h-10", userButtonPopoverCard: "shadow-xl" } }} > <UserButton.MenuItems> <UserButton.Link label="Dashboard" labelIcon={<LayoutDashboard size={16} />} href="/dashboard" /> <UserButton.Action label="Settings" labelIcon={<Settings size={16} />} onClick={() => router.push('/settings')} /> </UserButton.MenuItems> </UserButton>
4. Protected Route Wrapper
Template:
templates/protected-wrapper.tsx
Features:
- Authentication guard for routes
- Loading states
- Redirect configuration
- Reusable HOC pattern
Usage:
// app/dashboard/page.tsx import { ProtectedRoute } from '@/components/auth/protected-wrapper' export default function DashboardPage() { return ( <ProtectedRoute> <div>Protected Dashboard Content</div> </ProtectedRoute> ) }
Available Examples
1. Custom Sign-In with Clerk Elements
Example:
examples/custom-sign-in-guide.md (code: examples/custom-sign-in.tsx)
Demonstrates:
- Clerk Elements for custom sign-in flow
- Step-based authentication
- Strategy selection (password, OAuth)
- Form validation
- Error handling
- Custom styling
Key Components:
<SignIn.Root> <SignIn.Step name="start"> {/* Email/username input */} <SignIn.Strategy name="password"> {/* Password input */} </SignIn.Strategy> <SignIn.Strategy name="email_code"> {/* Email verification */} </SignIn.Strategy> </SignIn.Step> </SignIn.Root>
2. Social Authentication Buttons
Example:
examples/social-authentication-guide.md (code: examples/social-buttons.tsx)
Demonstrates:
- OAuth provider buttons
- Custom social button styling
- Loading states
- Error handling
- Multiple providers (Google, GitHub, Discord)
Supported Providers:
- GitHub
- Discord
- Microsoft
- Apple
3. Complete Theme Configuration
Example:
examples/theming-guide.md (code: examples/theme-config.tsx)
Demonstrates:
- Complete appearance configuration
- CSS variables customization
- Layout configuration
- Element-specific styling
- Dark mode support
- Responsive design
Appearance Customization Guide
1. Appearance Prop Structure
The
appearance prop accepts:
appearance={{ baseTheme: dark, // Base theme layout: { // Layout options shimmer: true, logoPlacement: 'inside' }, variables: { // CSS variables colorPrimary: '#6366f1', colorBackground: '#ffffff', colorText: '#1f2937', borderRadius: '0.5rem' }, elements: { // Element overrides card: 'shadow-lg', formButtonPrimary: 'bg-blue-500', footerActionLink: 'text-blue-600' } }}
2. Global vs Component-Level Theming
Global (ClerkProvider):
<ClerkProvider appearance={{ baseTheme: dark, variables: { colorPrimary: '#6366f1' } }}> {children} </ClerkProvider>
Component-Level:
<SignIn appearance={{ elements: { card: 'shadow-xl', rootBox: 'mx-auto' } }} />
3. Tailwind CSS v4 Integration
For Tailwind CSS v4 support:
<ClerkProvider appearance={{ cssLayerName: 'clerk' // Ensures Tailwind utilities override }} >
4. Element Targeting
Common element selectors:
- Root containerrootBox
- Main card containercard
- Header textheaderTitle
- Submit buttonsformButtonPrimary
- Input fieldsformFieldInput
- Footer linksfooterActionLink
- User avataruserButtonAvatarBox
- Dropdown menuuserButtonPopoverCard
Security Compliance
This skill follows strict security rules:
- All code examples use placeholder values only
- No real API keys, passwords, or secrets
- Environment variable references in all code
protection documented.gitignore- CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY read from environment
Best Practices
- Use Pre-built Components First - Start with
,<SignIn />
before custom Elements<SignUp /> - Apply Global Themes - Configure appearance at
level for consistency<ClerkProvider> - Leverage CSS Variables - Use
prop for brand colors, spacing, and typographyvariables - Element Overrides for Fine-Tuning - Use
prop for specific component stylingelements - Protect Routes - Always wrap protected content in authentication checks
- Handle Loading States - Show loading indicators during authentication state checks
- Configure Redirects - Set
andafterSignInUrl
for better UXafterSignUpUrl - Responsive Design - Test auth components on mobile and desktop viewports
Requirements
- Clerk account with API keys
- Next.js 13+ with App Router (for examples)
- React 18+
- Environment variables:
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYCLERK_SECRET_KEY
- Optional:
for pre-built themes@clerk/themes - Optional: Tailwind CSS for styling examples
Progressive Disclosure
For advanced customization patterns, see:
- Complete Clerk Elements implementationexamples/custom-sign-in.tsx
- OAuth provider integrationexamples/social-buttons.tsx
- Advanced theming patternsexamples/theme-config.tsx