Create a new RuntimeSetting that can be changed at runtime via `agent config set/get` and the config API
npx skills add https://github.com/DataDog/datadog-agent --skill create-runtime-setting
Create a new RuntimeSetting implementation for the Datadog Agent. RuntimeSettings are settings that can be read and changed at runtime via:
agent config get <setting>, agent config set <setting> <value>, agent config list-runtimeGET /config/{setting}, POST /config/{setting}Use AskUserQuestion to collect the following. If $ARGUMENTS provides the setting name, skip that question.
log_payloads, dogstatsd_stats): the name used to register and access the setting via the API./config/list-runtime).pkg/config/settings/) — Used by multiple agent services (agent, trace-agent, process-agent, etc.)cmd/agent/subcommands/run/internal/settings/) — Only used by the core agentdatadog.yaml config key this setting maps to (e.g. log_payloads, internal_profiling.enabled). Often the same as the setting name, but can differ.cmd/agent/subcommands/run/command.go)cmd/cluster-agent/subcommands/start/command.go)cmd/trace-agent/subcommands/run/command.go)cmd/process-agent/subcommands/run/command.go)cmd/security-agent/subcommands/runtime/command.go)cmd/system-probe/subcommands/run/command.go)cmd/dogstatsd/subcommands/start/command.go)Before writing any code, read the appropriate reference files to follow existing patterns exactly.
comp/core/settings/component.go to understand the RuntimeSetting methods.Glob with pattern pkg/config/settings/runtime_setting_*.go to list available examples, then read one that matches the desired type (boolean, integer, string, etc.).command.go files listed in Step 1.7 to see how settings are added to the Settings map.File naming convention: runtime_setting_<feature_name>.go
File location:
pkg/config/settings/runtime_setting_<feature>.gocmd/agent/subcommands/run/internal/settings/runtime_setting_<feature>.goCreate the implementation following the patterns from the reference file read in Step 2. Every RuntimeSetting needs:
ConfigKey string fieldNew<Name>RuntimeSetting() that sets the config keyDescription() — 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 calls config.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".
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 valuesGet returns the correct value from configSet with a valid value updates the configSet with a string representation works (e.g. "true"/"false" for bools)Set with an invalid value returns an errorFind 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.
dda inv test --targets=<package_path>
dda inv linter.go
RuntimeSetting interface is defined in comp/core/settings/component.goGetBool and GetInt are in pkg/config/settings/runtime_setting.goSet methods receive a model.Source parameter for config source tracking — always pass it through to config.Set()/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/create-runtime-setting — Interactive: prompts for all details/create-runtime-setting my_new_setting — Pre-fills the setting name, prompts for the restGuide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
Next.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
Take datadog/create-runtime-setting from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.