LangBot Deployment Guide
langbot-app/LangBot
Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.
Rule pack for the environment variable reference — en/self-host/deploy/configuration/environments.mdx.
$ npx skills add langgenius/dify-docs --skill dify-docs-env-vars -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install langgenius/dify-docs dify-docs-env-vars --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/langgenius/dify-docs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/dify-docs-env-vars .claude/skills/dify-docs-env-vars && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "dify-docs-env-vars" agent skill from https://github.com/langgenius/dify-docs/tree/main/.claude/skills/dify-docs-env-vars into .claude/skills/dify-docs-env-vars/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dify-docs-env-vars", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/langgenius/dify-docs/tree/main/.claude/skills/dify-docs-env-varsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add langgenius/dify-docs --skill dify-docs-env-vars -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install langgenius/dify-docs dify-docs-env-vars --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/langgenius/dify-docs.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/dify-docs-env-vars .agents/skills/dify-docs-env-vars && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dify-docs-env-vars" agent skill from https://github.com/langgenius/dify-docs/tree/main/.claude/skills/dify-docs-env-vars into .agents/skills/dify-docs-env-vars/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dify-docs-env-vars", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add langgenius/dify-docs --skill dify-docs-env-vars -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install langgenius/dify-docs dify-docs-env-vars --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/langgenius/dify-docs.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/dify-docs-env-vars .cursor/skills/dify-docs-env-vars && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "dify-docs-env-vars" agent skill from https://github.com/langgenius/dify-docs/tree/main/.claude/skills/dify-docs-env-vars into .cursor/skills/dify-docs-env-vars/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dify-docs-env-vars", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/langgenius/dify-docs.git --path .claude/skills/dify-docs-env-vars--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add langgenius/dify-docs --skill dify-docs-env-vars -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install langgenius/dify-docs dify-docs-env-vars --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/langgenius/dify-docs.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/dify-docs-env-vars .gemini/skills/dify-docs-env-vars && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "dify-docs-env-vars" agent skill from https://github.com/langgenius/dify-docs/tree/main/.claude/skills/dify-docs-env-vars into .gemini/skills/dify-docs-env-vars/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dify-docs-env-vars", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install langgenius/dify-docs dify-docs-env-varsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add langgenius/dify-docs --skill dify-docs-env-vars -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/langgenius/dify-docs.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/dify-docs-env-vars .github/skills/dify-docs-env-vars && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "dify-docs-env-vars" agent skill from https://github.com/langgenius/dify-docs/tree/main/.claude/skills/dify-docs-env-vars into .github/skills/dify-docs-env-vars/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dify-docs-env-vars", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add langgenius/dify-docs --skill dify-docs-env-vars -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install langgenius/dify-docs dify-docs-env-vars --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/langgenius/dify-docs.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/dify-docs-env-vars .opencode/skills/dify-docs-env-vars && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "dify-docs-env-vars" agent skill from https://github.com/langgenius/dify-docs/tree/main/.claude/skills/dify-docs-env-vars into .opencode/skills/dify-docs-env-vars/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dify-docs-env-vars", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
dify-docs-env-varsRule pack for the environment variable reference — en/self-host/deploy/configuration/environments.mdx.
Dify Docs Env Vars is an agent skill from langgenius/dify-docs. Rule pack for the environment variable reference — en/self-host/deploy/configuration/environments.mdx. Carries the tracing procedure, description rules, verifier, and document structure. Loaded by dify-docs-write; not an entry point.
Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/style-overrides.md` and `verify-env-docs.py`).
It sits in DevOps & Cloud, covering Secrets management and Markdown. It works with Dify and Docker. The licence is CC-BY-4.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 01f1cb6. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SECRET_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Dify Docs Env Vars loads about 2.5k tokens when it runs, and up to ~3.4k if it reads all its reference files. Until then it costs about 63 tokens; SKILL.md has 1,299 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from langgenius/dify-docs at commit 01f1cb6, republished under its CC-BY-4.0 licence (© langgenius). 1,299 words, ~2,536 tokens.
.claude/skills/dify-docs-env-vars/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Not an entry point — run under dify-docs-write; the procedure below implements its stages for en/self-host/deploy/configuration/environments.mdx. Read references/style-overrides.md (in this skill directory — env-var-specific style rules and description anti-patterns) together with this pack. Use the ref pinned at S1; cite it in the S4 scope report.
Work through in order. Every variable goes through steps 1–4 without exception — do not skip a variable because it seems "obvious".
When using subagents for tracing, assign 3–5 related variables per agent. Tracing depth depends on variable type:
| Variable type | Depth |
|---|---|
Python config vars (defined in api/configs/) | Full trace (below). |
Frontend vars (mapped in web/docker/entrypoint.sh) | Trace the Docker-to-NEXT_PUBLIC_* mapping in entrypoint.sh; verify the default in both docker/.env.example and web/.env.example; run grep -rn "<VAR_NAME>" <path-to-dify-repo>/api/ — any match means the var is dual-purpose and needs a full trace. |
Docker/container service vars (only in docker-compose.yaml) | grep -rn "<VAR_NAME>" <path-to-dify-repo>/api/ must return no matches; then document from .env.example comments. |
Plugin daemon vars (PLUGIN_* not in api/configs/) | Document from .env.example comments. |
Full trace:
api/configs/ — Pydantic field type, default, description, and any validation_alias (fallback) settings.dify_config.VARIABLE_NAME); read the surrounding code.Cover: what the variable does in practical terms; the specific features that depend on it (name them); what happens if left empty; what happens if set; key code file paths (no line numbers — they shift). This explanation goes into the S4 scope report.
CONSOLE_API_URL")references/style-overrides.mdThe S4 scope report presents: the plain-language explanations, the proposed descriptions, and the pinned ref. The pipeline's S4 gate applies.
Edit en/self-host/deploy/configuration/environments.mdx following Document Structure. Update the zh/ and ja/ copies in the same pass, per tools/translate/formatting-zh.md, tools/translate/formatting-ja.md, and writing-guides/glossary.md.
The canonical command scans BOTH env sources — never pass only one:
python3 .claude/skills/dify-docs-env-vars/verify-env-docs.py \
--env-example <path-to-dify-repo>/docker/.env.example \
--env-example <path-to-dify-repo>/docker/envs \
--compose <path-to-dify-repo>/docker \
--docs en/self-host/deploy/configuration/environments.mdx--compose reads the ${VAR} references in docker/docker-compose*.y*ml. A variable a compose file consumes with no .env.example entry is invisible to every other check — EXPOSE_WEAVIATE_GRPC_PORT went undocumented for eleven months that way — so the script lists them under === IN COMPOSE BUT NOT IN ANY .env.example (<n>) === and treats them as source variables from then on. --compare-rev reads the compose files at both refs on its own. docker-compose.pytest.ports.yaml is skipped in both modes and the skip is printed: it publishes vector-store ports for the integration tests, and nothing a deployment reads.
--env-example is repeatable; a directory argument is globbed **/*.env.example recursively. The script first prints the list of files it parsed — confirm it shows docker/.env.example plus the files under docker/envs/, then the compose file count. A single-source run under-scans and produces false "extra in docs" results.
Output contract: on a fully clean doc the last line is ALL CHECKS PASSED — documentation matches .env.example and the script exits 0; otherwise it prints TOTAL ISSUES: <n> with per-category counts and exits 1.
Cadence. The full command above is the baseline audit, and the baseline was cleared at dify tag 1.17.1. A release pass runs --compare-rev — it diffs both the .env.example files and the compose references between two refs, so a clean baseline stays clean incrementally. Re-run the full command whenever this script, the ignore list's location, or the .env.example layout changes, and after any pass that touched more than a handful of variables; it must end on ALL CHECKS PASSED or every remaining line must be accounted for in the ignore list. Run it against the zh and ja pages too — the parser understands 默认值:, デフォルト値: and (空), so their counts are as meaningful as English's.
Pass bar for every task: the full command ends on ALL CHECKS PASSED, or every remaining line is accounted for in the ignore list with a reason. Missing from docs stopped being standing backlog when the baseline was cleared at tag 1.17.1: a nonzero count now means a variable arrived since, and it is documented or ignored before the task ends. If the script prints WARNING: ignore list not found, it stops with exit status 2 and prints no counts: fix the path and re-run.
The verifier filters out variables listed in the registry's guides/env-ignored-vars.md. That list stays in the private registry because its entries name unreleased work. The verifier finds it through $DIFY_DOCS_REGISTRY or a sibling clone of this repo; pass --ignored PATH to point somewhere else. When you:
.env.example entry is commented out (#FOO=bar) → add it under Verifier false positives. This bucket is only for vars present in .env.example in commented form; see Source of Truth for vars absent entirely.Every entry must include a source reference (PR, commit, or audit date).
After Dify PR #31586, the supported self-host knob surface is split across:
docker/.env.example — essential startup valuesdocker/envs/**/*.env.example — categorized optional vars (core-services, databases, infrastructure, security, vectorstores, middleware)The verifier reads both — always use the canonical verifier command above, which passes both sources.
| Var location | Action |
|---|---|
In any .env.example file, uncommented | Document. |
In any .env.example file, commented (#FOO=bar) | Document; add to Verifier false positives in env-ignored-vars.md (the verifier can't parse defaults from comments). |
Only in api/configs/ Pydantic, not in any .env.example | Don't document. Upstream-deferred; file a PR adding it to the appropriate .env.example file first. |
In .env.example and still parsed, but upstream-deprecated with a replacement | Keep the row; lead the description with the deprecation and the replacement: "Deprecated; use X." Deprecated means still parsed — a removed var never gets a Deprecated label. |
Removed from .env.example because the code no longer reads it | Remove from docs — no tombstone rows (a documented row implies the var still takes effect). If a successor variable replaced it, add one clause to the successor's description so the old names stay findable via search: "Replaces the former EDITION, ignored from 1.17.0 onward." With no successor, remove without trace; upgrader discoverability belongs in upstream Dify release notes. |
The verifier's "extra in docs" signal is not an escape hatch. Never suppress it for Pydantic-only vars via env-ignored-vars.md.
The doc groups variables by subsystem, broadly following the docker/.env.example and docker/envs/** layout (Common Variables, Server Configuration, Web Frontend Service, Database Service, and so on). Match an existing ## section for a new variable; don't invent one. If a variable genuinely fits no section, raise it with the user rather than guessing.
| Element | Use for |
|---|---|
| Tables | Groups of related, straightforward variables (connection settings, credentials, tuning knobs). |
| Individual headings | Important variables needing explanation — enum-type selectors (STORAGE_TYPE, VECTOR_STORE) or variables where the "why" matters (SECRET_KEY, FILES_URL). |
| Tabs | Frontend variables where Docker and source deployments use different names. Tabs cannot sit inside table cells, so tabbed variables need individual headings. |
| Accordions | Provider-specific configuration (storage backends, vector databases, mail providers) — users only need one provider. |
Same audience as en/self-host/deploy/ documentation (see the dify-docs-guides pack): DevOps engineers and system administrators deploying Dify. Assume strong infrastructure knowledge. Readers are actively configuring a deployment and scanning for a specific variable, not reading linearly. They need to know what each variable does, when to change it, and what breaks if they get it wrong.
© langgenius, CC-BY-4.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in .claude/skills/dify-docs-env-vars of langgenius/dify-docs.
Open the folder on GitHubat commit 01f1cb6
Dify Docs Env Vars next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Dify Docs Env Vars this skilllanggenius/dify-docs | 178 | — | ~2.5k | Automated safety check: Pass | CC-BY-4.0 | |
| LangBot Deployment Guidelangbot-app/LangBot | 18k | — | ~1.2k | Automated safety check: Notes | Apache-2.0 | |
| Add Config Env Varbaserow/baserow | 6.1k | — | ~1.1k | Automated safety check: Pass | Custom licence | |
| Monstermq Broker Configvogler75/monster-mq | 143 | — | ~2.2k | Automated safety check: Pass | GPL-3.0 | |
| Deploymentmatrixorigin/memoria | 608 | — | ~1.6k | Automated safety check: Notes | Apache-2.0 | |
| Docker Compose Development Patternsaffaan-m/ECC | 275k | 4 repos | ~2.1k | Automated safety check: Notes | MIT |
langbot-app/LangBot
Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.
baserow/baserow
Add a Baserow configuration environment variable for the backend, frontend, or both, and propagate it through settings, Nuxt runtime config, Docker Compose, documentation, consumers, and tests as…
vogler75/monster-mq
Guide for configuring, deploying, and operating the MonsterMQ broker.
matrixorigin/memoria
Deploy Memoria with Docker Compose or Kubernetes. An agent skill from matrixorigin/memoria.
affaan-m/ECC
Practical Docker and Docker Compose patterns for local development: stacks, override files, networking, volumes, container hardening and debugging.
docker/skills
A skill your agent uses when authoring, planning, or running a declarative sbxenv.yaml file for Docker Sandboxes (sbx env create/run/plan/exec/rm), even if the user just says they want to "check in…
langgenius/dify-docs
Research a Dify feature before writing or optimizing documentation.
langgenius/dify-docs
Check formatting compliance in changed documentation against writing-guides/formatting-guide.md and tools/translate/formatting-{zh,ja}.md.
langgenius/dify-docs
Audit terminology consistency across documentation against the codebase UI labels and the glossary — in prose and in the UI strings shown in screenshots.
langgenius/dify-docs
Rule pack for the Service API specs ({en,zh,ja}/api-reference/openapiservice.json): spec conventions, app-type scoping, code-verification rules, and the audit machinery.
langgenius/dify-docs
The entry point for writing or revising any documentation in this repo: user guides, deployment pages, plugin-dev pages, API specs, the env-var reference, CLI pages.
langgenius/dify-docs
Judge a finished draft as the docs owner would: a fresh agent reads it against the style guide and the reference page in its genre, marks the sentences that fall short, and returns a ship verdict on…
Categories
Rule pack for the environment variable reference — en/self-host/deploy/configuration/environments.mdx. Dify Docs Env Vars is an agent skill from langgenius/dify-docs.mdx.
Dify Docs Env Vars fits situations like: tasks that involve Secrets management; tasks that involve Markdown.
Run `npx skills add langgenius/dify-docs --skill dify-docs-env-vars -a claude-code`. Or copy the skill folder (.claude/skills/dify-docs-env-vars in langgenius/dify-docs) into .claude/skills/dify-docs-env-vars in your project. Claude Code loads it when a task matches its description.
Run `npx skills add langgenius/dify-docs --skill dify-docs-env-vars -a codex`. Or copy the skill folder (.claude/skills/dify-docs-env-vars in langgenius/dify-docs) into .agents/skills/dify-docs-env-vars in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add langgenius/dify-docs --skill dify-docs-env-vars -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dify-docs-env-vars, .gemini/skills/dify-docs-env-vars, .github/skills/dify-docs-env-vars and .opencode/skills/dify-docs-env-vars in your project.
Going by SKILL.md and its folder, Dify Docs Env Vars needs Python for the scripts in its folder, the command-line tools its instructions call (python3) and credentials named SECRET_KEY. Our summary lists: Python 3; Docker; A credential in SECRET_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Dify Docs Env Vars is published under the CC-BY-4.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 870 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Dify Docs Env Vars: LangBot Deployment Guide (langbot-app/LangBot, 18k stars), Add Config Env Var (baserow/baserow, 6.1k stars), Monstermq Broker Config (vogler75/monster-mq, 143 stars) and Deployment (matrixorigin/memoria, 608 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
langgenius (a GitHub organization) maintains it in langgenius/dify-docs, which has 178 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 8, 2026.
Source: langgenius/dify-docs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.