Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    lobehub

    add-setting-env

    lobehub/add-setting-env
    DevOps
    72,111
    6 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Guide for adding environment variables to configure user settings. Use when implementing server-side environment variables that control default values for user settings...

    SKILL.md

    Adding Environment Variable for User Settings

    Add server-side environment variables to configure default values for user settings.

    Priority: User Custom > Server Env Var > Hardcoded Default

    Steps

    1. Define Environment Variable

    Create src/envs/<domain>.ts:

    import { createEnv } from '@t3-oss/env-nextjs';
    import { z } from 'zod';
    
    export const get<Domain>Config = () => {
      return createEnv({
        server: {
          YOUR_ENV_VAR: z.coerce.number().min(MIN).max(MAX).optional(),
        },
        runtimeEnv: {
          YOUR_ENV_VAR: process.env.YOUR_ENV_VAR,
        },
      });
    };
    
    export const <domain>Env = get<Domain>Config();
    

    2. Update Type (if new domain)

    Add to packages/types/src/serverConfig.ts:

    import { User<Domain>Config } from './user/settings';
    
    export interface GlobalServerConfig {
      <domain>?: PartialDeep<User<Domain>Config>;
    }
    

    Prefer reusing existing types from packages/types/src/user/settings.

    3. Assemble Server Config (if new domain)

    In src/server/globalConfig/index.ts:

    import { <domain>Env } from '@/envs/<domain>';
    
    export const getServerGlobalConfig = async () => {
      const config: GlobalServerConfig = {
        <domain>: cleanObject({
          <settingName>: <domain>Env.YOUR_ENV_VAR,
        }),
      };
      return config;
    };
    

    4. Merge to User Store (if new domain)

    In src/store/user/slices/common/action.ts:

    const serverSettings: PartialDeep<UserSettings> = {
      <domain>: serverConfig.<domain>,
    };
    

    5. Update .env.example

    # <Description> (range/options, default: X)
    # YOUR_ENV_VAR=<example>
    

    6. Update Documentation

    • docs/self-hosting/environment-variables/basic.mdx (EN)
    • docs/self-hosting/environment-variables/basic.zh-CN.mdx (CN)

    Example: AI_IMAGE_DEFAULT_IMAGE_NUM

    // src/envs/image.ts
    AI_IMAGE_DEFAULT_IMAGE_NUM: z.coerce.number().min(1).max(20).optional(),
    
    // packages/types/src/serverConfig.ts
    image?: PartialDeep<UserImageConfig>;
    
    // src/server/globalConfig/index.ts
    image: cleanObject({ defaultImageNum: imageEnv.AI_IMAGE_DEFAULT_IMAGE_NUM }),
    
    // src/store/user/slices/common/action.ts
    image: serverConfig.image,
    
    // .env.example
    # AI_IMAGE_DEFAULT_IMAGE_NUM=4
    
    Repository
    lobehub/lobehub
    Files