Skip to main content

add-new-configuration

Register a new environment variable / configuration option in dd-trace-py. Use whenever you add (or rename) a DD_*/_DD_*/OTEL_*/DATADOG_* environment variable so it is documented, validated, and tracked for cross-language feature parity. Covers supported-configurations.json, the generated _supported_configurations.py module, docs/configuration.rst, and the feature-parity registry hand-off.

설치로 이동

소스 정보

저장소
DataDog/dd-trace-py
최근 소스 활동
2026년 6월 29일 11:52
감지된 SKILL.md 언어
영어
스타
650
포크
548

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
add-new-configuration
description
Register a new environment variable / configuration option in dd-trace-py. Use whenever you add (or rename) a DD_*/_DD_*/OTEL_*/DATADOG_* environment variable so it is documented, validated, and tracked for cross-language feature parity. Covers supported-configurations.json, the generated _supported_configurations.py module, docs/configuration.rst, and the feature-parity registry hand-off.
allowed-tools
["Bash","Read","Edit","Grep","Glob"]
## When to Use This Skill Use this skill whenever a code change introduces a **new environment variable** (or renames/aliases an existing one). In dd-trace-py every `DD_*`, `_DD_*`, `OTEL_*`, or `DATADOG_*` variable accessed under `ddtrace/` MUST be registered, or the `supported_configurations` CI check fails. Typical trigger: you just added something like `DDConfig.var(bool, AI_GUARD.ENV_OPENAI_ENABLED, default=True)` in a settings module and need to make CI / docs happy. --- ## Key Principles 1. **`supported-configurations.json` is the source of truth.** Edit it by hand; everything else is generated or verified from it. 2. **Never hand-edit `ddtrace/internal/settings/_supported_configurations.py`** — it is AUTO-GENERATED. Run the script to regenerate it. 3. **Keep entries alphabetically sorted** within the `supportedConfigurations` object (the generator sorts the Python module, but keep the JSON tidy too). 4. **Document user-facing variables** in `docs/configuration.rst` under the correct product section. 5. **Hand off to the human** to add the variable to the feature-parity registry — this is an external web app the agent cannot edit. --- ## Steps ### 1. Add the entry to `supported-configurations.json` Find the right alphabetical slot and add a single-element array. Set `type` to mirror the `DDConfig.var(...)` type. Do NOT infer the `implementation` letter from neighbouring variables — it is owned by the central Configuration Registry (see step 6). Use `"A"` for a brand-new key; if the key already exists in the registry, reuse its letter, and if a maintainer must create a new implementation version (because the type/default differs from an existing cross-language entry), reference that version's letter. ```json "DD_AI_GUARD_OPENAI_ENABLED": [ { "implementation": "A", "type": "boolean", "default": "true" } ], ``` Field notes: - `type`: one of `boolean`, `string`, `int`, etc. — mirror the `DDConfig.var(...)` type. - `default`: the **string** form of the default (`"true"`, `"16"`, or `null` for no default). Must match the code default exactly. - `implementation`: the version letter assigned by the central Configuration Registry (step 6), NOT inferred from neighbouring vars. A product prefix like `DD_TRACE_`/`DD_APPSEC_` legitimately mixes multiple letters, so copying a sibling can write the wrong value and only the central CI will catch it. - Optional keys seen in the registry: `aliases`, `deprecated`, `sensitive` (excludes the value from config telemetry). Add these only when applicable. ### 2. Regenerate the Python module ```bash python scripts/supported_configurations.py ``` This rewrites `ddtrace/internal/settings/_supported_configurations.py` (`SUPPORTED_CONFIGURATIONS`, `CONFIGURATION_ALIASES`, `DEPRECATED_CONFIGURATIONS`, `SENSITIVE_CONFIGURATIONS`) and verifies that every env var accessed in `ddtrace/` is registered. ### 3. Verify everything is in sync ```bash python scripts/supported_configurations.py --check ``` Expected output: ``` _supported_configurations.py is up to date. Registry is complete (NNN entries, no unregistered vars). ``` This is the same check CI runs. If it reports unregistered vars, you missed an entry in step 1. ### 4. Document the variable in `docs/configuration.rst` Add an entry under the appropriate product heading using the `.. ddtrace-configuration-options::` directive. Match the surrounding style. ```rst DD_AI_GUARD_OPENAI_ENABLED: type: Boolean default: True description: | Per-provider kill switch for AI Guard auto-instrumentation of the OpenAI SDK. When set to ``False``, disables AI Guard instrumentation for OpenAI only. ``` Include `version_added:` if the option is gated to a specific release. ### 5. Add a release note (if user-impacting) New public configuration is user-facing, so add a Reno fragment (use the `releasenote` skill). Skip only for purely internal/private vars. ### 6. Hand off: add it to the feature-parity registry The agent CANNOT do this — it is an external web application. Tell the user: > ⚠️ **Action required:** Add this configuration to the cross-language > feature-parity registry so it is tracked across tracer languages: > https://feature-parity.us1.prod.dog/#/configurations?viewType=configurations --- ## Validation Checklist - [ ] Entry added to `supported-configurations.json` (correct type/default/implementation). - [ ] `python scripts/supported_configurations.py` run (module regenerated). - [ ] `python scripts/supported_configurations.py --check` passes. - [ ] Documented in `docs/configuration.rst` under the right section. - [ ] Release note added (if user-impacting). - [ ] User reminded to register it at the feature-parity dashboard. --- ## Gotchas - The `--check` step is what CI enforces; always run it before committing. - `default` in the JSON is a **string** (or `null`), even for ints/booleans. - If you only consume the variable in tests or tooling outside `ddtrace/`, the completeness check won't force registration — but register it anyway if it is a real, documented configuration option. - Renames: treat the old name as an `alias` rather than deleting it, to avoid breaking existing deployments.
GitHub에서 보기