<< All versions
Skill v1.0.0
currentLLM-judged scan90/100opensourceagi/qwksearch-research-agent/add-setting-env
──Details
PublishedOctober 21, 2026 at 11:04 AM
Content Hashsha256:2c1e2bd5b55c5219...
Git SHA39953c932455
──Files
Files (1 file, 2.5 KB)
SKILL.md2.5 KBactive
SKILL.md · 110 lines · 2.5 KB
version: "1.0.0" name: add-setting-env description: Add server-side environment variables that control default values for user settings. disable-model-invocation: true argument-hint: '[setting-name]'
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 packages/env/src/<domain>.ts (import path stays @/envs/<domain> — tsconfig maps to packages/env/src/* first):
typescript
import { createEnv } from '@t3-oss/env-core';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:
typescript
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 apps/server/src/globalConfig/index.ts:
typescript
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:
typescript
const serverSettings: PartialDeep<UserSettings> = {<domain>: serverConfig.<domain>,};
5. Update .env.example
bash
# <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
typescript
// packages/env/src/image.ts (import as @/envs/image)AI_IMAGE_DEFAULT_IMAGE_NUM: z.coerce.number().min(1).max(20).optional(),// packages/types/src/serverConfig.tsimage?: PartialDeep<UserImageConfig>;// apps/server/src/globalConfig/index.tsimage: cleanObject({ defaultImageNum: imageEnv.AI_IMAGE_DEFAULT_IMAGE_NUM }),// src/store/user/slices/common/action.tsimage: serverConfig.image,// .env.example# AI_IMAGE_DEFAULT_IMAGE_NUM=4