Official agent skill

Create Core Check

by DataDog in DataDog/datadog-agent

Create a new Go core check that collects metrics and sends them to Datadog

OfficialApache-2.0Auto-check: notes

Install Create Core Check

skills CLI
$ npx skills add DataDog/datadog-agent --skill create-core-check -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install DataDog/datadog-agent create-core-check --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/DataDog/datadog-agent.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-core-check .claude/skills/create-core-check && rm -rf skills-src

Use ~/.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/

Facts

Skill name
create-core-check
GitHub stars
3.8k
Token cost
~2k tokens
SKILL.md length
883 words
Files
1
Skills in repo
35
Repo updated
First seen
Licence
Apache-2.0

At a glance

Create a new Go core check that collects metrics and sends them to Datadog

  • Works in 7 steps: Gather information from the user → Read reference examples from the codebase → Create the check package → …
  • SKILL.md covers Instructions, Sender Methods Reference, Important Notes and Usage
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Create Core Check is an agent skill from DataDog/datadog-agent, published by the product's own GitHub organization. Create a new Go core check that collects metrics and sends them to Datadog

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with Datadog. The repository describes itself as: Main repository for Datadog Agent. The licence is Apache-2.0.

Example prompts

  • “/create-core-check”

Requirements

  • Pre-approved tools (allowed-tools): Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Gather information from the user
  2. Read reference examples from the codebase
  3. Create the check package
  4. Register the check
  5. Create the default configuration
  6. Write tests
  7. Verify

What it can do on your machine

Read from SKILL.md and the folder at commit 20eff25. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and yaml).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Create Core Check loads about 2k tokens when it runs. Until then it costs about 23 tokens; SKILL.md has 883 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~23
When it runs · the whole SKILL.md, loaded when a task matches
~2k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion

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.

SKILL.md

The full file from DataDog/datadog-agent at commit 20eff25, republished under its Apache-2.0 licence (© DataDog). 883 words, ~2,029 tokens.

Download SKILL.mdSave it as .claude/skills/create-core-check/SKILL.md (or your agent's skills folder).
name
create-core-check
description
Create a new Go core check that collects metrics and sends them to Datadog
allowed-tools
Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion
argument-hint
[check-name]
model
sonnet

Create a new Go-based core check for the Datadog Agent. Core checks collect metrics, service checks, or events and send them to Datadog at regular intervals.

Instructions

Step 1: Gather information from the user

Use AskUserQuestion to collect the following. If $ARGUMENTS provides the check name, skip that question.

  1. Check name: The identifier for the check (e.g. uptime, memory, ntp). Used as the package name, registration key, and config directory name.

  2. Check category: Where should the check live under pkg/collector/corechecks/?

    • system/ — System-level checks (CPU, memory, uptime, disk)
    • net/ — Network checks (NTP, DNS)
    • containers/ — Container-related checks
    • ebpf/ — eBPF-based checks (these are more complex, see pkg/collector/corechecks/ebpf/AGENTS.md)
    • embed/ — Embedded service checks
    • Top-level under corechecks/ — For standalone checks
  3. What does it collect?: Describe the metrics, service checks, or events it produces.

  4. Configuration: Does it need instance-level configuration?

    • No config — Single instance, no user parameters (like uptime)
    • Simple config — A few YAML parameters (like memory with collect_memory_pressure)
    • Multi-instance — Supports multiple configured instances (like ntp with different servers)
  5. Component dependencies: Does the check need injected components?

    • None — Simple check, no external dependencies
    • Tagger — Needs to tag metrics with container/host tags
    • WorkloadMeta — Needs access to workload metadata store
    • Other — Specify which components
  6. Long-running?: Does the check run continuously in the background?

    • No (default) — Run() is called at regular intervals (default 15s)
    • Yes — Run() never returns, processes events in a loop
  7. Platform restrictions: Does the check only work on certain platforms?

    • All platforms (default)
    • Linux only
    • Windows only
    • Linux + macOS (not Windows)
Step 2: Read reference examples from the codebase

Before writing any code, read the appropriate reference files based on the check type determined in Step 1. Follow the patterns found in these files exactly.

Check typeReference file to read
Simple, no configpkg/collector/corechecks/system/uptime/uptime.go
Simple with configpkg/collector/corechecks/system/memory/memory.go
Multi-instance with configpkg/collector/corechecks/net/ntp/ntp.go
With component dependenciespkg/collector/corechecks/containerimage/check.go
Long-runningRead the NewLongRunningCheckWrapper usage in pkg/collector/corechecks/containerimage/check.go
Platform-specific stubsFind a _no*.go or _stub.go file alongside a platform-specific check in pkg/collector/corechecks/system/

Also read these files for registration and test patterns:

  • pkg/commonchecks/corechecks.go — to see how checks are registered (import alias convention, RegisterCheck calls)
  • The _test.go file alongside whichever reference check you read — to see mock sender patterns
Step 3: Create the check package

Directory: pkg/collector/corechecks/<category>/<checkname>/

Create the check implementation file following the patterns from the reference files read in Step 2. Key structural elements that every check needs:

  1. CheckName constant — string identifier for the check
  2. Check struct — embeds core.CheckBase, plus any config or component fields
  3. Factory() function — returns option.Option[func() check.Check]. Components are injected as Factory parameters.
  4. Configure() method — calls CommonConfigure, then FinalizeCheckServiceTag, then parses instance config if needed
  5. Run() method — collects data, calls sender methods, ends with sender.Commit()

Key rules to follow:

  • For multi-instance checks: call c.BuildID(integrationConfigDigest, rawInstance, rawInitConfig) before CommonConfigure()
  • For long-running checks: wrap with core.NewLongRunningCheckWrapper() in Factory, return 0 from Interval(), implement Stop()
  • For platform-specific checks: add //go:build <platform> tag and create a stub file for other platforms that returns option.None[func() check.Check]()
Step 4: Register the check

Edit pkg/commonchecks/corechecks.go:

  1. Add an import for the check package using the standard alias convention visible in the file (typically the check name)
  2. Add a corecheckLoader.RegisterCheck() call in RegisterChecks(), matching the Factory signature to available component parameters
Show full SKILL.md (359 more words)Show less
Step 5: Create the default configuration

File: cmd/agent/dist/conf.d/<checkname>.d/conf.yaml.default

Look at an existing example in cmd/agent/dist/conf.d/ for the format. At minimum:

yaml
init_config:

instances:
  - {}

For checks with configuration, use @param annotations following the same format as other conf.yaml.default files in the tree.

Step 6: Write tests

File: pkg/collector/corechecks/<category>/<checkname>/<checkname>_test.go

Follow the test patterns from the reference file read in Step 2. The standard test flow is:

  1. Create a mocksender.NewMockSender("")
  2. Set up mockSender.On("FinalizeCheckServiceTag").Return()
  3. Create and Configure the check with mockSender.GetSenderManager()
  4. Call mocksender.SetSender(mockSender, check.ID())
  5. Set expectations on the mock sender for expected metrics
  6. Call Run() and assert expectations
Step 7: Verify
  1. Run the check tests:

    bash
    dda inv test --targets=./pkg/collector/corechecks/<category>/<checkname>
  2. Build the agent:

    bash
    dda inv agent.build --build-exclude=systemd
  3. Run the linter:

    bash
    dda inv linter.go
  4. Report the results to the user.

Sender Methods Reference

The sender (c.GetSender()) provides these methods for submitting data:

MethodDescription
Gauge(metric, value, hostname, tags)Submit a gauge metric
Rate(metric, value, hostname, tags)Submit a rate metric
Count(metric, value, hostname, tags)Submit a count metric
MonotonicCount(metric, value, hostname, tags)Submit a monotonic count
Histogram(metric, value, hostname, tags)Submit a histogram metric
Distribution(metric, value, hostname, tags)Submit a distribution metric
ServiceCheck(name, status, hostname, tags, message)Submit a service check
Event(event)Submit an event
Commit()Flush all submitted data — must be called at end of Run()
  • Pass "" for hostname to use the agent's default hostname.
  • Pass nil for tags if no tags are needed.
  • Service check statuses: servicecheck.ServiceCheckOK, ServiceCheckWarning, ServiceCheckCritical, ServiceCheckUnknown (from pkg/metrics/servicecheck).

Important Notes

  • CheckBase provides default implementations for most Check interface methods. You only need to override Run() and optionally Configure(), Stop(), and Interval().
  • CommonConfigure handles standard configuration: collection interval (min_collection_interval), custom tags, service tag, etc.
  • FinalizeCheckServiceTag() must be called after CommonConfigure to apply the service tag to the sender.
  • Always call sender.Commit() at the end of Run() to flush data.
  • For multi-instance checks, BuildID() must be called before CommonConfigure().
  • The option.None[func() check.Check]() pattern is used for platform stubs — the loader skips checks with no factory.
  • integration.FakeConfigHash is the constant to use in tests for the config digest parameter.

Usage

  • /create-core-check — Interactive: prompts for all details
  • /create-core-check my_check — Pre-fills the check name

© DataDog, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/create-core-check of DataDog/datadog-agent.

Open the folder on GitHubat commit 20eff25

Compare with similar skills

Create Core Check 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.

Create Core Check compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Core Check this skillDataDog/datadog-agent3.8k—~2kAutomated safety check: NotesApache-2.0
Code Design Rationale Investigatorcursor/plugins10k9 repos~2.6kAutomated safety check: PassNone
Apm IntegrationsDataDog/dd-trace-js836—~3kAutomated safety check: PassCustom licence
Bump LibdatadogDataDog/dd-trace-dotnet573—~1.7kAutomated safety check: PassApache-2.0
Dd IdpDataDog/pup1k—~2kAutomated safety check: PassApache-2.0
Datadog Data Source GeneratorDataDog/terraform-provider-datadog468—~2.7kAutomated safety check: PassMPL-2.0

Similar skills

  • Official

    Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.

    10k GitHub starsUsed in 9 repos~2.6k tokens
    DevelopmentAuto-check passed
  • Apm Integrations

    DataDog/dd-trace-js

    Official

    A skill your agent uses when adding, debugging, fixing, or modifying instrumentation and plugins for third-party libraries in dd-trace-js.

    836 GitHub stars~3k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Bump Libdatadog

    DataDog/dd-trace-dotnet

    Official

    Update/bump the libdatadog native library version in dd-trace-dotnet.

    573 GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Dd Idp

    DataDog/pup

    Official

    Find, filter, count, and connect software, teams, engineering work and delivery, infrastructure, and operational or security records through Pup's read-only Datadog entity graph.

    1k GitHub stars~2k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Datadog Data Source Generator

    DataDog/terraform-provider-datadog

    Official

    Generates a Datadog Terraform provider data source from an OpenAPI operation with tfgen and opens a review-ready GitHub PR with a risk scan and testing guide.

    468 GitHub stars~2.7k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Release

    DataDog/datadog-go

    Official

    Cut a new datadog-go release and update CHANGELOG.md following the repo's house style.

    375 GitHub stars~2k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from DataDog/datadog-agent

All 35 skills in this repo
  • Triage CI Failure

    DataDog/datadog-agent

    Official

    Classify a failed CI as either caused by an active incident, flakiness, or a true code regression.

    3.8k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Elicit

    DataDog/datadog-agent

    Official

    Run a structured discovery session to build an Allium specification through conversation.

    3.8k GitHub starsUsed in 1 repo~3.7k tokens
    Auto-check passed
  • Follow PR

    DataDog/datadog-agent

    Official

    Monitor the current PR's GitLab pipeline to completion, then report success, auto-fix, or investigate a failure.

    3.8k GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • Create Epic Recap

    DataDog/datadog-agent

    Official

    A skill your agent uses when an engineer or manager asks to recap, summarize, or post an update on a Jira Epic — a progress update for an in-progress Epic (how far along it is, what's shipped so…

    3.8k GitHub stars~5k tokensUpdated today
    Auto-check: notes
  • Explain Lading Config

    DataDog/datadog-agent

    Official

    Explains a lading.yaml config file from the regression test suite, using the lading Rust source as ground truth for field meanings and defaults.

    3.8k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Distill

    DataDog/datadog-agent

    Official

    Extract an Allium specification from an existing codebase. An agent skill from DataDog/datadog-agent.

    3.8k GitHub starsUsed in 1 repo~7k tokens
    Auto-check passed

Works with

Questions about Create Core Check

What does Create Core Check do?

Create a new Go core check that collects metrics and sends them to Datadog. Create Core Check is an agent skill from DataDog/datadog-agent, published by the product's own GitHub organization.

How do I install Create Core Check in Claude Code?

Run `npx skills add DataDog/datadog-agent --skill create-core-check -a claude-code`. Or copy the skill folder (.agents/skills/create-core-check in DataDog/datadog-agent) into .claude/skills/create-core-check in your project. Claude Code loads it when a task matches its description.

How do I install Create Core Check in Codex?

Run `npx skills add DataDog/datadog-agent --skill create-core-check -a codex`. Or copy the skill folder (.agents/skills/create-core-check in DataDog/datadog-agent) into .agents/skills/create-core-check in your project. Codex loads it when a task matches its description.

Can I use Create Core Check in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add DataDog/datadog-agent --skill create-core-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-core-check, .gemini/skills/create-core-check, .github/skills/create-core-check and .opencode/skills/create-core-check in your project.

What does Create Core Check need to run?

SKILL.md names no scripts, command-line tools or credentials: Create Core Check is instructions for the agent only. Its frontmatter pre-approves these tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion.

Does Create Core Check access the network?

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.

Is Create Core Check safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Create Core Check use?

Create Core Check is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Create Core Check use?

About 2k tokens (SKILL.md is roughly 8.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Create Core Check?

Skills that share tags, products or a category with Create Core Check: Code Design Rationale Investigator (cursor/plugins, 10k stars), Apm Integrations (DataDog/dd-trace-js, 836 stars), Bump Libdatadog (DataDog/dd-trace-dotnet, 573 stars) and Dd Idp (DataDog/pup, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Core Check?

DataDog (a GitHub organization, an official publisher) maintains it in DataDog/datadog-agent, which has 3,757 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on October 8, 2026.

Source: DataDog/datadog-agent on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.