johunsang/kreatsaas
kreatsaas
January 16, 2026
Select agents to install to:
npx add-skill https://github.com/johunsang/kreatsaas/blob/main/skills/code-templates/SKILL.md -a claude-code --skill code-templatesInstallation paths:
.claude/skills/code-templates/# 코드 템플릿
> Claude Code가 프로젝트 생성 시 자동으로 생성하는 실제 코드입니다.
---
## 0. 환경 변수 검증 및 에러 처리
### lib/env.ts
```typescript
// 환경 변수 검증 유틸리티
type EnvConfig = {
NEXT_PUBLIC_SUPABASE_URL: string
NEXT_PUBLIC_SUPABASE_ANON_KEY: string
NEXT_PUBLIC_APP_URL: string
// 선택적
STRIPE_SECRET_KEY?: string
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY?: string
OPENAI_API_KEY?: string
}
export function validateEnv(): { valid: boolean; errors: string[] } {
const errors: string[] = []
// 필수 환경 변수 체크
if (!process.env.NEXT_PUBLIC_SUPABASE_URL) {
errors.push('NEXT_PUBLIC_SUPABASE_URL이 설정되지 않았습니다.')
} else if (!process.env.NEXT_PUBLIC_SUPABASE_URL.includes('supabase.co')) {
errors.push('NEXT_PUBLIC_SUPABASE_URL 형식이 올바르지 않습니다. (예: https://xxxxx.supabase.co)')
}
if (!process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY) {
errors.push('NEXT_PUBLIC_SUPABASE_ANON_KEY가 설정되지 않았습니다.')
} else if (process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY.length < 100) {
errors.push('NEXT_PUBLIC_SUPABASE_ANON_KEY가 너무 짧습니다. 올바른 키인지 확인하세요.')
}
if (!process.env.NEXT_PUBLIC_APP_URL) {
errors.push('NEXT_PUBLIC_APP_URL이 설정되지 않았습니다. (예: http://localhost:3000)')
}
return {
valid: errors.length === 0,
errors
}
}
export function getEnvGuide(): string {
return `
📋 환경 변수 설정 가이드
1️⃣ .env.local 파일 생성
프로젝트 루트에 .env.local 파일을 만드세요.
2️⃣ Supabase 키 얻기
1. https://supabase.com/dashboard 접속
2. 프로젝트 선택 (없으면 "New Project" 클릭)
3. 왼쪽 메뉴 → Settings → API
4. 복사할 값:
- Project URL → NEXT_PUBLIC_SUPABASE_URL
- anon public → NEXT_PUBLIC_SUPABASE_ANON_KEY
3️⃣ .env.local 파일 내용
NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
NEXT_PUBLIC_APP_URL=http://localhost:3000
4️⃣ 서버 재시작
터미널에서 Ctrl+C 누르고 다시 npm run dev
⚠️ 주의사항
- .env.local은 .gitignore에 포함되어야 합니다
- 키를 공개 저장소에 올리지 마세요
- Vercel 배포 시 Environment Variables에 추가하세요
`
}
```
### app/api/health/route.ts
```typescript
// 환경 변수 및 Sup