create-runtime-setting
SkillAI & modelsThis skill lets your AI add new runtime-changeable settings to the Datadog Agent. Once a setting is created, it can be changed while the agent is running using agent config set/get or the config API. Your AI generates the code, tests, and registration needed for each new setting.
Available today. Use it from your connected AI after setup.
No other account needed.
After adding the skill, describe the setting you want to create and your AI will generate the code, tests, and registration for it. Once the setting is in place, change it at any time with agent config set/get or the config API.
Then ask your AI: use the create-runtime-setting skill
What your AI can do with it
- Add new settings to the Datadog Agent that can be changed while it runs
- Generate the code for each new setting
- Generate tests for each new setting
- Register each new setting so the agent recognizes it
- Make settings adjustable through agent config set/get and the config API
What this skill tells your AI
The instructions your AI receives, as published by datadog/datadog-agent in .agents/skills/create-runtime-setting/SKILL.md and read by ahel’s review.
Create a new RuntimeSetting implementation for the Datadog Agent. RuntimeSettings are settings that can be read and changed at runtime via:
- The CLI:
agent config get <setting>,agent config set <setting> <value>,agent config list-runtime - The HTTP API:
GET /config/{setting},POST /config/{setting}
Instructions
Step 1: Gather information from the user
Use AskUserQuestion to collect the following. If $ARGUMENTS provides the setting name, skip that question.
-
Setting name (the config key, e.g.
log_payloads,dogstatsd_stats): the name used to register and access the setting via the API. -
Value type: What type of value does this setting hold?
- Boolean (true/false)
- Integer
- String
- String slice (list of strings)
-
Description: A human-readable description of what this setting controls (shown in
/config/list-runtime). -
Hidden: Should this setting be hidden from the public runtime settings list? (default: false)
-
Scope: Where should this setting live?
- Shared (
pkg/config/settings/) — Used by multiple agent services (agent, trace-agent, process-agent, etc.) - Agent-specific (
cmd/agent/subcommands/run/internal/settings/) — Only used by the core agent
- Shared (
-
Config key: The
datadog.yamlconfig key this setting maps to (e.g.log_payloads,internal_profiling.enabled). Often the same as the setting name, but can differ. -
Which services should register it: Ask which services should have this setting registered:
- Core Agent (
cmd/agent/subcommands/run/command.go) - Cluster Agent (
cmd/cluster-agent/subcommands/start/command.go) - Trace Agent (
cmd/trace-agent/subcommands/run/command.go) - Process Agent (
cmd/process-agent/subcommands/run/command.go) - Security Agent (
cmd/security-agent/subcommands/runtime/command.go) - System Probe (
cmd/system-probe/subcommands/run/command.go) - DogStatsD (
cmd/dogstatsd/subcommands/start/command.go)
- Core Agent (
Step 2: Read reference examples from the codebase
Before writing any code, read the appropriate reference files to follow existing patterns exactly.
-
Read the interface defined in
comp/core/settings/component.goto understand theRuntimeSettingmethods. -
Read an existing implementation matching the chosen value type. Use
Globwith patternpkg/config/settings/runtime_setting_*.goto list available examples, then read one that matches the desired type (boolean, integer, string, etc.). -
Read the test file alongside the chosen reference to see the test pattern.
-
Read a registration site: Look at one of the
command.gofiles listed in Step 1.7 to see how settings are added to theSettingsmap.
Step 3: Create the RuntimeSetting implementation file
File naming convention: runtime_setting_<feature_name>.go
File location:
- Shared:
pkg/config/settings/runtime_setting_<feature>.go - Agent-specific:
cmd/agent/subcommands/run/internal/settings/runtime_setting_<feature>.go
Create the implementation following the patterns from the reference file read in Step 2. Every RuntimeSetting needs:
- Struct with a
ConfigKey stringfield - Constructor
New<Name>RuntimeSetting()that sets the config key Description()— returns the human-readable descriptionHidden()— returns whether hidden from list-runtimeName()— returns the config keyGet(config)— reads the current value using the appropriate typed getterSet(config, v, source)— validates/converts the input value, then callsconfig.Set()
Type conversion in Set(): for Boolean and Integer types, use the GetBool(v) / GetInt(v) helper functions from pkg/config/settings — these handle string-to-type conversion. For agent-specific settings, import the helpers via settings "github.com/DataDog/datadog-agent/pkg/config/settings".
Step 4: Create a unit test file
Create a test file alongside the implementation: runtime_setting_<feature>_test.go
Follow the test patterns from the reference test file read in Step 2. The test should verify:
Name(),Description(),Hidden()return expected valuesGetreturns the correct value from configSetwith a valid value updates the configSetwith a string representation works (e.g."true"/"false"for bools)Setwith an invalid value returns an error
Step 5: Register the setting
Find the settings.Params provider in the appropriate command.go file(s) for each selected service (from Step 1.7). Add the new setting to the Settings map following the existing pattern in that file. The import alias convention and registration format are visible in the existing entries.
Step 6: Verify
-
Run the new test:
dda inv test --targets=<package_path> -
Run the linter on changed files:
dda inv linter.go -
Report the results to the user. If tests or linting fail, fix the issues.
Important Notes
- The
RuntimeSettinginterface is defined incomp/core/settings/component.go - Helper functions
GetBoolandGetIntare inpkg/config/settings/runtime_setting.go - All
Setmethods receive amodel.Sourceparameter for config source tracking — always pass it through toconfig.Set() - Settings are exposed via HTTP at
/config/{setting_name}(GET to read, POST to write) and via the CLI:agent config get <setting>,agent config set <setting> <value>,agent config list-runtime - Follow existing code style: use the same comment patterns, error formatting, and naming conventions as existing RuntimeSettings
Usage
/create-runtime-setting— Interactive: prompts for all details/create-runtime-setting my_new_setting— Pre-fills the setting name, prompts for the rest
Signals
- GitHub stars
- 4k
- Forks
- 1k
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
create-runtime-setting- Source
- github.com/datadog/datadog-agent