Context
Project {{project_name}} uses {{stack}}.
Setup authentication with strategy: {{input.strategy}}.
Read AGENTS.md for security conventions.
Instructions
Analyze existing auth setup
- Check if auth middleware / auth routes already exist
- Check already installed dependencies (bcrypt, jsonwebtoken, passport, next-auth, etc.)
- Identify existing user model/schema
Setup dependencies
Adjust based on strategy:
- JWT: bcrypt/argon2, jsonwebtoken/jose
- Session: express-session, connect-redis (optional)
- OAuth: next-auth / passport + passport-google-oauth20, etc.
Create/update user model
- Fields: id, email, password_hash, name, created_at, updated_at
- If OAuth: add provider, provider_id fields
- Migration if needed (use migration skill)
Create auth service
- Register: validate input, hash password, create user, return token
- Login: find user, verify password, return token
- Verify: validate token, return user
- Refresh: refresh expired token (if JWT)
Create auth routes
- POST /api/auth/register
- POST /api/auth/login
- POST /api/auth/logout
- GET /api/auth/me (current user)
- POST /api/auth/refresh (if JWT)
Create auth middleware
- Extract token from header/cookie
- Verify token
- Attach user to request
- Return 401 if invalid
Create tests
- Register: success, duplicate email, weak password
- Login: success, wrong password, user not found
- Protected route: with token, without token, expired token
- Middleware: valid token, invalid token, no token
Script
#!/bin/bash
# Install auth dependencies based on strategy
STRATEGY="{{input.strategy}}"
if [ "$STRATEGY" = "jwt" ]; then
echo "Dependencies needed: bcryptjs jsonwebtoken"
elif [ "$STRATEGY" = "session" ]; then
echo "Dependencies needed: bcryptjs express-session"
elif [ "$STRATEGY" = "oauth" ]; then
echo "Dependencies needed: next-auth (or passport)"
fi
Validation
1---2name: auth3description: Setup authentication flow (register, login, session/JWT, middleware)4---56## Context78Project {{project_name}} uses {{stack}}.9Setup authentication with strategy: {{input.strategy}}.1011Read AGENTS.md for security conventions.1213## Instructions14151. **Analyze existing auth setup**16 - Check if auth middleware / auth routes already exist17 - Check already installed dependencies (bcrypt, jsonwebtoken, passport, next-auth, etc.)18 - Identify existing user model/schema19202. **Setup dependencies**21 Adjust based on strategy:22 - JWT: bcrypt/argon2, jsonwebtoken/jose23 - Session: express-session, connect-redis (optional)24 - OAuth: next-auth / passport + passport-google-oauth20, etc.25263. **Create/update user model**27 - Fields: id, email, password_hash, name, created_at, updated_at28 - If OAuth: add provider, provider_id fields29 - Migration if needed (use migration skill)30314. **Create auth service**32 - Register: validate input, hash password, create user, return token33 - Login: find user, verify password, return token34 - Verify: validate token, return user35 - Refresh: refresh expired token (if JWT)36375. **Create auth routes**38 - POST /api/auth/register39 - POST /api/auth/login40 - POST /api/auth/logout41 - GET /api/auth/me (current user)42 - POST /api/auth/refresh (if JWT)43446. **Create auth middleware**45 - Extract token from header/cookie46 - Verify token47 - Attach user to request48 - Return 401 if invalid49507. **Create tests**51 - Register: success, duplicate email, weak password52 - Login: success, wrong password, user not found53 - Protected route: with token, without token, expired token54 - Middleware: valid token, invalid token, no token5556## Script5758```bash59#!/bin/bash60# Install auth dependencies based on strategy61STRATEGY="{{input.strategy}}"6263if [ "$STRATEGY" = "jwt" ]; then64 echo "Dependencies needed: bcryptjs jsonwebtoken"65elif [ "$STRATEGY" = "session" ]; then66 echo "Dependencies needed: bcryptjs express-session"67elif [ "$STRATEGY" = "oauth" ]; then68 echo "Dependencies needed: next-auth (or passport)"69fi70```7172## Validation7374- [ ] User model/schema created with proper fields75- [ ] Password hashing works (not stored as plaintext)76- [ ] Register endpoint works (happy path + errors)77- [ ] Login endpoint works (happy path + errors)78- [ ] Auth middleware protects routes correctly79- [ ] Token validation works80- [ ] Tests passing (minimum 8 test cases)81- [ ] No security vulnerabilities (no secret in code, proper CORS, etc)82- [ ] Typecheck passing