create-environment-variables

star 4

Guide for creating and naming environment variables in this project. All project environment variables must use the TORRUST_TD_ prefix. Covers the condition-based vs action-based naming decision framework, when to use each approach, and practical examples. Use when adding new environment variables, changing existing env var names, or deciding how to name a toggle or flag. Triggers on "environment variable", "env var", "TORRUST_TD_", "variable naming", "feature flag", "feature toggle", "configuration flag", or "add env var".

torrust By torrust schedule Updated 2/25/2026

name: create-environment-variables description: Guide for creating and naming environment variables in this project. All project environment variables must use the TORRUST_TD_ prefix. Covers the condition-based vs action-based naming decision framework, when to use each approach, and practical examples. Use when adding new environment variables, changing existing env var names, or deciding how to name a toggle or flag. Triggers on "environment variable", "env var", "TORRUST_TD_", "variable naming", "feature flag", "feature toggle", "configuration flag", or "add env var". metadata: author: torrust version: "1.0"

Creating Environment Variables

Mandatory: TORRUSTTD Prefix

All project environment variables must use the TORRUST_TD_ prefix.

# ✅ Good
TORRUST_TD_SKIP_FIREWALL_IN_CONTAINER=true
TORRUST_TD_LOG_LEVEL=debug

# ❌ Bad: missing prefix
SKIP_FIREWALL=true
LOG_LEVEL=debug

The prefix prevents naming conflicts with system, OS, or tool environment variables.

Condition-Based vs Action-Based Naming

Condition-Based: "I am X" / "Running in X"

Describes context or state. Use when the variable affects multiple behaviors.

TORRUST_TD_RUNNING_IN_AGENT_ENV=true   # affects logging, timeouts, interactivity
if env::var("TORRUST_TD_RUNNING_IN_AGENT_ENV").unwrap_or_default() == "true" {
    skip_slow_tests = true;
    reduce_logging = true;
    disable_interactive_prompts = true;
}

Action-Based: "Do X" / "Skip X"

Describes a specific behavior. Use when the variable controls one thing.

TORRUST_TD_SKIP_FIREWALL_IN_CONTAINER=true  # controls one specific behavior
if env::var("TORRUST_TD_SKIP_FIREWALL_IN_CONTAINER").unwrap_or_default() == "true" {
    // only affects firewall step
}

Decision Framework

Does this variable affect multiple subsystems?
├─ YES → Condition-Based ("TORRUST_TD_IN_CI", "TORRUST_TD_IS_CONTAINER")
└─ NO → Action-Based ("TORRUST_TD_SKIP_VALIDATION", "TORRUST_TD_ENABLE_X")

Is it a platform/infrastructure concern?
├─ YES → Condition-Based
└─ NO → Action-Based

Boolean Values Convention

Use "true" or "false" (lowercase strings):

TORRUST_TD_SKIP_FIREWALL_IN_CONTAINER=true   # ✅
TORRUST_TD_SKIP_FIREWALL_IN_CONTAINER=True   # ❌ (inconsistent)
TORRUST_TD_SKIP_FIREWALL_IN_CONTAINER=1      # ❌ (use strings)

Examples from the Codebase

Variable Type Controls
TORRUST_TD_SKIP_FIREWALL_IN_CONTAINER Action Skip UFW config in containers

Reference

Naming guide: docs/contributing/environment-variables-naming.md Prefix ADR: docs/decisions/environment-variable-prefix.md

Install via CLI
npx skills add https://github.com/torrust/torrust-tracker-deployer --skill create-environment-variables
Repository Details
star Stars 4
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator