mcpField
E
env-setup-wizard

env-setup-wizard

github.com/onewave-ai開発393293 回インストール1 週間前に更新
リポジトリ

env-setup-wizard について

env-setup-wizardは、プロジェクトの環境変数を整理するスキルです。型安全な参照、起動時の検証、変数の文書化を扱い、一般的なプロジェクトとNext.js向けの設定例を示します。

主な機能

  1. 01環境別の.envファイル整理
  2. 02コミットする.env.exampleの作成
  3. 03Zodによる変数検証
  4. 04サーバー変数とクライアント変数の分離
  5. 05シークレット管理の実践事項の記録

活用シーン

  1. 01新規プロジェクトの環境設定
  2. 02必須変数の起動時チェック追加
  3. 03Next.jsのサーバー・クライアント変数設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/onewave-ai/claude-skills --skill env-setup-wizard

インストール後、Claude Code で/env-setup-wizardを入力して読み込まれたか確認します。

詳細

環境設定ウィザード

手順

環境設定を行う際は、次の手順に従います。

  1. プロジェクトに必要な変数を特定します
  2. 適切に整理した.env構成を作成します
  3. 環境変数に型安全にアクセスできるよう設定します
  4. 起動時の検証を追加します
  5. すべての変数を文書化します

ファイル構成

project/
├── .env                  # Local development (git-ignored)
├── .env.example          # Template (committed to git)
├── .env.local            # Local overrides (git-ignored)
├── .env.development      # Development defaults
├── .env.production       # Production defaults
└── src/
    └── lib/
        └── env.ts        # Type-safe env access

.env.exampleテンプレート

# ===================
# Application
# ===================
NODE_ENV=development
APP_URL=http://localhost:3000
PORT=3000

# ===================
# Database
# ===================
DATABASE_URL=postgresql://user:password@localhost:5432/dbname

# ===================
# Authentication
# ===================
# Generate with: openssl rand -base64 32
JWT_SECRET=
NEXTAUTH_SECRET=
NEXTAUTH_URL=http://localhost:3000

# ===================
# Third-party APIs
# ===================
# Get from: https://stripe.com/dashboard
STRIPE_SECRET_KEY=
STRIPE_PUBLISHABLE_KEY=
STRIPE_WEBHOOK_SECRET=

# Get from: https://resend.com
RESEND_API_KEY=

# ===================
# Storage
# ===================
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=us-east-1
S3_BUCKET_NAME=

型安全な環境変数(Zod)

// src/lib/env.ts
import { z } from 'zod';

const envSchema = z.object({
  // App
  NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
  APP_URL: z.string().url(),
  PORT: z.coerce.number().default(3000),

  // Database
  DATABASE_URL: z.string().min(1),

  // Auth
  JWT_SECRET: z.string().min(32),
  NEXTAUTH_SECRET: z.string().min(32),
  NEXTAUTH_URL: z.string().url(),

  // APIs (optional in dev)
  STRIPE_SECRET_KEY: z.string().optional(),
  RESEND_API_KEY: z.string().optional(),
});

// Validate on import
const parsed = envSchema.safeParse(process.env);

if (!parsed.success) {
  console.error('Invalid environment variables:');
  console.error(parsed.error.flatten().fieldErrors);
  process.exit(1);
}

export const env = parsed.data;

// Type export for use elsewhere
export type Env = z.infer<typeof envSchema>;

Next.js 固有の設定

// src/lib/env.ts for Next.js
import { z } from 'zod';

// Server-side variables
const serverSchema = z.object({
  DATABASE_URL: z.string(),
  JWT_SECRET: z.string(),
});

// Client-side variables (must start with NEXT_PUBLIC_)
const clientSchema = z.object({
  NEXT_PUBLIC_APP_URL: z.string().url(),
  NEXT_PUBLIC_STRIPE_KEY: z.string(),
});

export const serverEnv = serverSchema.parse(process.env);
export const clientEnv = clientSchema.parse({
  NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL,
  NEXT_PUBLIC_STRIPE_KEY: process.env.NEXT_PUBLIC_STRIPE_KEY,
});

T3 Env(Next.js におすすめ)

// src/env.mjs
import { createEnv } from "@t3-oss/env-nextjs";
import { z } from "zod";

export const env = createEnv({
  server: {
    DATABASE_URL: z.string().url(),
    NODE_ENV: z.enum(["development", "test", "production"]),
  },
  client: {
    NEXT_PUBLIC_APP_URL: z.string().url(),
  },
  runtimeEnv: {
    DATABASE_URL: process.env.DATABASE_URL,
    NODE_ENV: process.env.NODE_ENV,
    NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL,
  },
});

.gitignore

# Environment files
.env
.env.local
.env.*.local

# Keep example
!.env.example

セキュリティのベストプラクティス

  1. シークレットを Git にコミットしないでください
  2. 環境ごとに異なる値を使用してください
  3. シークレットを定期的にローテーションしてください
  4. 本番環境ではシークレットマネージャー(Vault、AWS Secrets Manager)を使用してください
  5. 起動時に検証して、すばやくエラーを検出してください
  6. クライアント用の変数にはプレフィックス(NEXT_PUBLIC_、VITE_、REACT_APP_)を付けてください

コメント