ワンクリックで
env
환경 설정 관리를 위한 가이드를 실행합니다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
환경 설정 관리를 위한 가이드를 실행합니다.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Interactive requirements discovery through Socratic dialogue and systematic exploration
사용자 계획을 기존 도메인 모델에 대해 stress-test하는 인터뷰 세션. 용어를 날카롭게 다듬고, 결정이 굳어질 때마다 CONTEXT.md(도메인 어휘 사전)와 ADR을 인라인으로 갱신한다. 새 기능 요구사항 탐색은 `/brainstorm`을, 기존 도메인 모델·용어와의 정합성 점검은 이 스킬을 사용한다.
Evaluate design from a UX perspective, assessing visual hierarchy, information architecture, emotional resonance, cognitive load, and overall quality with quantitative scoring, persona-based testing, automated anti-pattern detection, and actionable feedback. Use when the user asks to review, critique, evaluate, or give feedback on a design or component.
Run technical quality checks across accessibility, performance, theming, responsive design, and anti-patterns. Generates a scored report with P0-P3 severity ratings and actionable plan. Use when the user wants an accessibility check, performance audit, or technical quality review. (Impeccable design audit — distinct from /audit which validates project rules.)
Create distinctive, production-grade frontend interfaces with high design quality. Generates creative, polished code that avoids generic AI aesthetics. Use when the user asks to build web components, pages, artifacts, posters, or applications, or when any design skill requires project context. Call with 'craft' for shape-then-build, 'teach' for design context setup, or 'extract' to pull reusable components and tokens into the design system.
Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks
| name | env |
| description | 환경 설정 관리를 위한 가이드를 실행합니다. |
| user-invocable | true |
환경 설정 관리를 위한 가이드를 실행합니다.
1. 코드와 설정 분리 (12-Factor App)
2. 환경별 설정 관리
3. 민감 정보 보호
4. 기본값 제공
5. 유효성 검증
# .env.example (버전 관리에 포함)
NODE_ENV=development
PORT=3000
# Database
DATABASE_URL=postgresql://user:pass@localhost:5432/db
DATABASE_POOL_SIZE=10
# Redis
REDIS_URL=redis://localhost:6379
# API Keys (실제 값 대신 플레이스홀더)
API_KEY=your_api_key_here
JWT_SECRET=your_jwt_secret_here
# Feature Flags
FEATURE_NEW_UI=false
.env # 기본 (공통)
.env.local # 로컬 오버라이드 (gitignore)
.env.development # 개발 환경
.env.staging # 스테이징 환경
.env.production # 프로덕션 환경
.env.test # 테스트 환경
1. 시스템 환경 변수
2. .env.{NODE_ENV}.local
3. .env.{NODE_ENV}
4. .env.local
5. .env
import { z } from 'zod';
const envSchema = z.object({
NODE_ENV: z.enum(['development', 'staging', 'production', 'test']),
PORT: z.string().transform(Number).default('3000'),
DATABASE_URL: z.string().url(),
REDIS_URL: z.string().url().optional(),
JWT_SECRET: z.string().min(32),
API_KEY: z.string().min(1),
LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
});
export const env = envSchema.parse(process.env);
import { cleanEnv, str, port, url, bool } from 'envalid';
export const env = cleanEnv(process.env, {
NODE_ENV: str({ choices: ['development', 'staging', 'production', 'test'] }),
PORT: port({ default: 3000 }),
DATABASE_URL: url(),
JWT_SECRET: str({ desc: 'Secret for JWT signing' }),
ENABLE_CACHE: bool({ default: true }),
});
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
node_env: str = "development"
port: int = 3000
database_url: str
jwt_secret: str
enable_cache: bool = True
class Config:
env_file = ".env"
settings = Settings()
// config/index.ts
export const config = {
app: {
name: env.APP_NAME,
port: env.PORT,
env: env.NODE_ENV,
},
database: {
url: env.DATABASE_URL,
poolSize: env.DATABASE_POOL_SIZE,
},
redis: {
url: env.REDIS_URL,
ttl: env.REDIS_TTL,
},
auth: {
jwtSecret: env.JWT_SECRET,
jwtExpiresIn: env.JWT_EXPIRES_IN,
},
features: {
newUi: env.FEATURE_NEW_UI,
},
} as const;
// config/database.ts
const configs = {
development: {
poolSize: 5,
logging: true,
},
production: {
poolSize: 20,
logging: false,
},
test: {
poolSize: 1,
logging: false,
},
};
export const dbConfig = configs[env.NODE_ENV];
# ❌ 절대 하지 말 것
git add .env
git add credentials.json
git add *.pem
# Environment
.env
.env.local
.env.*.local
!.env.example
# Secrets
*.pem
*.key
credentials.json
secrets/
옵션:
├── 환경 변수 (CI/CD에서 주입)
├── AWS Secrets Manager
├── HashiCorp Vault
├── Google Secret Manager
└── Azure Key Vault
# docker-compose.yml
services:
app:
secrets:
- db_password
environment:
DATABASE_PASSWORD_FILE: /run/secrets/db_password
secrets:
db_password:
file: ./secrets/db_password.txt
// config/features.ts
export const features = {
newDashboard: env.FEATURE_NEW_DASHBOARD === 'true',
betaApi: env.FEATURE_BETA_API === 'true',
darkMode: env.FEATURE_DARK_MODE === 'true',
};
// 사용
if (features.newDashboard) {
renderNewDashboard();
}
const featureDefaults = {
development: {
newDashboard: true,
betaApi: true,
},
production: {
newDashboard: false,
betaApi: false,
},
};
## Environment Configuration
### .env.example
```bash
# 환경 변수 템플릿
// 유효성 검증 코드
// 설정 구조
| 변수 | 개발 | 스테이징 | 프로덕션 |
|---|---|---|---|
| LOG_LEVEL | debug | info | warn |
[시크릿 관리 방안]
---
요청에 맞는 환경 설정을 구성하세요.