Migrate Vstest To Mtp
runceel/ReactiveProperty
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP).
Author, adapt, modify, or review Netdata health alerts and alert templates.
$ npx skills add netdata/netdata --skill health-alert-authoring -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install netdata/netdata health-alert-authoring --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/netdata/netdata.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/health-alert-authoring .claude/skills/health-alert-authoring && rm -rf skills-srcUse ~/.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/
Install the "health-alert-authoring" agent skill from https://github.com/netdata/netdata/tree/master/.agents/skills/health-alert-authoring into .claude/skills/health-alert-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "health-alert-authoring", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/netdata/netdata/tree/master/.agents/skills/health-alert-authoringType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add netdata/netdata --skill health-alert-authoring -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install netdata/netdata health-alert-authoring --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/netdata/netdata.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/health-alert-authoring .agents/skills/health-alert-authoring && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "health-alert-authoring" agent skill from https://github.com/netdata/netdata/tree/master/.agents/skills/health-alert-authoring into .agents/skills/health-alert-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "health-alert-authoring", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add netdata/netdata --skill health-alert-authoring -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install netdata/netdata health-alert-authoring --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/netdata/netdata.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/health-alert-authoring .cursor/skills/health-alert-authoring && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "health-alert-authoring" agent skill from https://github.com/netdata/netdata/tree/master/.agents/skills/health-alert-authoring into .cursor/skills/health-alert-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "health-alert-authoring", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/netdata/netdata.git --path .agents/skills/health-alert-authoring--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add netdata/netdata --skill health-alert-authoring -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install netdata/netdata health-alert-authoring --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/netdata/netdata.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/health-alert-authoring .gemini/skills/health-alert-authoring && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "health-alert-authoring" agent skill from https://github.com/netdata/netdata/tree/master/.agents/skills/health-alert-authoring into .gemini/skills/health-alert-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "health-alert-authoring", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install netdata/netdata health-alert-authoringInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add netdata/netdata --skill health-alert-authoring -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/netdata/netdata.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/health-alert-authoring .github/skills/health-alert-authoring && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "health-alert-authoring" agent skill from https://github.com/netdata/netdata/tree/master/.agents/skills/health-alert-authoring into .github/skills/health-alert-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "health-alert-authoring", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add netdata/netdata --skill health-alert-authoring -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install netdata/netdata health-alert-authoring --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/netdata/netdata.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/health-alert-authoring .opencode/skills/health-alert-authoring && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "health-alert-authoring" agent skill from https://github.com/netdata/netdata/tree/master/.agents/skills/health-alert-authoring into .opencode/skills/health-alert-authoring/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "health-alert-authoring", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
health-alert-authoringAuthor, adapt, modify, or review Netdata health alerts and alert templates.
Health Alert Authoring is an agent skill from netdata/netdata. Author, adapt, modify, or review Netdata health alerts and alert templates. Use when translating alerts from another system; changing src/health/health.d/.conf, lookup/calc/warn/crit expressions, lifecycle, timing, routing, ownership, or missing-data behavior; writing health-config tests; or selecting an alert's chart/context/label identity.
Its SKILL.md is about 7.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in DevOps & Cloud, covering Translation. The repository describes itself as: The fastest path to AI-powered full stack observability, even for lean teams. The licence is GPL-3.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 5bcdf74. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Health Alert Authoring loads about 7.1k tokens when it runs. Until then it costs about 92 tokens; SKILL.md has 3,713 words of instructions outside code blocks.
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.
The automated check found no risky patterns in SKILL.md.
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.
The full file from netdata/netdata at commit 5bcdf74, republished under its GPL-3.0 licence (© netdata). 3,713 words, ~7,146 tokens.
.claude/skills/health-alert-authoring/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Use this skill when changing or reviewing a health-alert definition. Alerts are production policy: a syntactically valid expression can still page incorrectly, manufacture a recovery, duplicate an incident owner, or make a disappearing entity look healthy.
The normal goal when translating an alert from another system is Netdata-adapted operational equivalence, not execution-engine emulation. Preserve the operator-visible incident as closely as Netdata can express it through NIDL instances, alert beats, database lookups, native gap behavior, and chart obsoletion. Treat differences from the source engine as explicit design facts to document and test, not as defects by default.
Read the target alert, its collector/profile signal contract, and the existing incident owner. Search for duplicate names, contexts and equivalent generic alerts. Select the affected references:
| Question | Sources |
|---|---|
| Identity, scope, variables and expression syntax | docs/NIDL-Framework.md, src/health/REFERENCE.md; current variable/evaluator code when affected |
| Template/alarm ownership or overrides | src/health/alert-configuration-ordering.md and existing named/generic rules |
| Lifecycle, gaps or timing | src/health/README.md, relevant lookup/delay sections of src/health/REFERENCE.md, and runtime owners below |
| Runtime semantics changed or uncertain | health_event_loop.c, health_variable.c under src/health/; src/web/api/queries/query-execute.c, selected grouping implementation and src/libnetdata/eval/eval-evaluate.c as applicable |
| Collector/profile signal or identity changes | Matching collector/profile skill and its affected references; this skill does not replace them |
For review, use the contract and completion sections as questions against the complete assigned change and existing design/test evidence. Read an active SOW when available; do not create one or demand a new authoring note merely to review. Missing evidence matters when it leaves an affected contract unproven. Implementation follows the root SOW gate.
Never query or reconfigure a live Agent merely to validate an alert unless the user has explicitly authorized that access.
Write down the following in the active SOW before changing a non-trivial alert:
NETDATA-ADAPTED as the normal classification. Reserve EXACT for a proven coincidental
match across timing, gaps, identity, recovery, and removal—not merely a similar expression.alarm only for a specific chart instance; choose a template for a context-wide rule. An
identity label MUST identify the same monitored entity across its intended lifetime. A label whose source value can
change for that entity is current metadata, not RRDSET identity: preserve the chart ID and update/promote the label.
Confirm labels preserve the incident identity and do not create unbounded instances.
Prove whether each promoted source label is live metadata, creation-time metadata, or source-frozen history. Do not
describe a label as "current" merely because Netdata can update labels.component: classification field does not replace this NIDL mapping.UNINITIALIZED, CLEAR, WARNING/CRITICAL, UNDEFINED, and REMOVED behavior.
State whether an ordinary recovery emits a zero or whether the chart/dimension disappears instead.for: state machine.Pause for a user decision when the change creates a public alert contract, changes default notification policy, changes the owner of an incident, needs shared health/query framework work, or cannot preserve the approved operator-visible incident closely enough with Netdata-native behavior. A difference from Prometheus execution alone is not such a blocker.
Choose the smallest pattern that can express the condition truthfully. Do not introduce cross-chart or intermediate-alert plumbing when the required values already share the alert's chart.
Use unqualified dimension variables in calc, warn, or crit when every required value is a dimension on the chart
named by on::
template: example_ratio
on: app.state
calc: $total - $usedRuntime facts:
collector.last_stored_value: the latest database-stored value after interpolation, not
a database-window aggregate and not necessarily the raw last collector sample.NaN.UNDEFINED is the required missing-input state; do not rely on arithmetic or
comparisons to preserve NaN.Use $dimension_raw only when the contract specifically needs the last collected value before interpolation/storage
presentation, and $dimension_last_collected_t only when it needs that dimension's collection timestamp.
Do not treat equal dimension timestamps as a collection identifier: PLUGINSD SET calls timestamp dimensions
independently. pluginsd_set calls rrddim_set_by_pointer (or its double variant), which stamps a timeval with
microsecond precision; health's variable_lookup_in_chart exposes only its tv_sec field. One complete collection
can cross a second boundary. Conversely, an omitted dimension retains its previous raw value, so freshness and
arithmetic coherence alone can miss a partial collection. When using raw values, also test stored-input gaps:
rrdset_done_interpolate sets the normal dimension value to NaN when an omitted dimension reaches a storage beat.
Validate omission after a valid zero, as well as a never-present dimension. These checks provide native freshness
and gap eligibility; they do not prove atomic transaction membership, particularly when collections occur faster
than the storage cadence.
Use a dotted chart/context reference when values live on different charts:
template: example_cross_chart
on: app.usage
calc: $this * 100 / ${app.capacity.total}The dotted prefix is interpreted from right to left as chart/context plus the final dimension name. Runtime resolution:
Consequences:
component=ceph is usually insufficient across many cluster instances.${...} braces.NaN.Create a non-notifying helper alert when the required value itself needs a database lookup or multi-stage computation, then reference that alert by name from the consuming alert:
template: example_window
on: app.work
lookup: average -1h of requests
calc: $this
to: silent
template: example_consumes
on: app.current
lookup: average -1m of requests
calc: $this / $example_window
warn: $this > 1
to: sysadminRuntime facts:
rc->value), after that helper's own lookup and calc.every: or disclose this timing difference.to: silent on helpers and document why they exist; a helper is instrumentation, not a second incident owner.| Source situation | Alert-lifecycle consequence |
|---|---|
| Valid numeric input and both conditions are false | CLEAR |
| Valid numeric input and warning/critical condition is true | WARNING or CRITICAL |
| Some values exist in a lookup window and some are NULL | The lookup continues using numeric values; NULL is not automatically a failed condition |
| Collector misses a collection while the chart remains live | A runnable alert may evaluate a lookup based on stored data; no fresh sample is fabricated |
| Lookup runs and its selected window has no usable values | $this is NaN; the final state is UNDEFINED only when the condition preserves it |
| A lookup's newest stored sample is too old for its runnable-history gate | The health loop skips that evaluation; it does not manufacture CLEAR or guarantee an UNDEFINED transition |
| Collector knows the entity is gone and obsoletes the chart | The alert enters REMOVED, not an ordinary zero/CLEAR recovery |
Important rules:
$last_collected_t and $update_every expose freshness when an
alert is the deliberate stale-collection owner.UNDEFINED.NaN to an empty lookup result. A condition
that itself evaluates to NaN is UNDEFINED.NaN. In the expression evaluator, NaN is false in boolean contexts and a comparison
such as $this == 0 produces a finite false result. That can yield CLEAR, not UNDEFINED. If the contract requires
UNDEFINED, make and test an expression path that preserves NaN; never assume a comparison does so.$now - $last_collected_t for an explicit collection/staleness alert only
when no existing generic collection-failure alert already owns the incident. A data-state alert normally owns the
measured condition, not the collector outage.For a data-state alert that MUST become UNDEFINED when its lookup is non-finite, use and test this condition shape:
warn: ($this == nan or $this == inf) ? (nan) : (<numeric predicate>)Use crit: in the same way. This preserves the non-finite result only; it does not turn a partial-null window into a
collection-failure alert or replace a known-obsolete chart's REMOVED lifecycle.
Use calc when the source's current value is the full condition. Test start-up, missing input, normal recovery, and chart
obsoletion separately. delay: controls notification hysteresis, not the evaluated alert state; it is not a substitute
for a Prometheus for: duration.
Stability involves signal smoothing, threshold hysteresis and notification delay. Address them in that order.
State-dependent thresholds are hysteresis; delay: postpones notification execution while the evaluated alert state
changes immediately. See src/health/REFERENCE.md#alert-line-delay and its conditional-operator hysteresis section.
Use lookup: to make $this a stable aggregate over an explicit observation window:
lookup: average -5m unaligned of latencyaverage smooths noisy utilization, rate, latency, and utilization-like signals.min requires every observed numeric sample to remain active, appropriate for persisted binary fault states.max preserves worst-case excursions when the incident is defined by peaks.countif expresses percent-of-observed-time semantics.This reduces noise but cannot prevent a stable aggregate from hovering near one threshold. A 5-minute average near 100 ms can still cross a 100 ms threshold repeatedly.
For policy thresholds whose signal may hover near the boundary, use a state-dependent predicate:
warn: $this > (($status >= $WARNING) ? (90) : (100))
crit: $this > (($status == $CRITICAL) ? (105) : (110))This changes one threshold into two thresholds:
Important semantics:
every: cadence.UNDEFINED must remain possible.Prefer this when independent raise/clear boundaries are meaningful and the signal is expected to linger near one boundary. Do not use it to redefine a categorical exact condition into a policy band.
Use delay: when notification execution should wait after a state change:
delay: down 5m multiplier 1.5 max 1hup is selected when the new numeric status is greater than the old; down otherwise.
This includes UNDEFINED (-1) → CLEAR (1) using up, not just warning/critical escalation.
Owners: src/health/health_event_loop.c (delay selection), src/health/rrdcalc.h (status values).multiplier grows the delay when the state changes during the delay.max caps the accumulated delay.This is the only layer that postpones an alert transition notification. It can suppress rapid clear/reactivate
notification cycles, but it can also postpone notice of a real incident. Use it sparingly and record the expected
notification delay in the alert contract. The status still changes on the evaluation beat: health_event_loop.c
updates it immediately, while health_notifications.c checks the notification due time.
lookup: window and aggregation first.delay: only when rapid transition notifications are independently harmful and later notification is acceptable.Treat another system's for: D as an operator intent to suppress transient conditions. It is not a requirement to emulate
that system's pending-state machine. Choose the closest safe Netdata-native behavior from the source's actual numeric
state space, set an explicit every:, and disclose the differences:
min -5m unaligned with an active predicate is true only when
every observed numeric value in the selected window is active. This is a Netdata observation-window adaptation, not
Prometheus for: 5m.min/max rule by analogy. Use an exact predicate over the
full state space. For example, countif(!=target) returns the percentage of observed values outside target; zero means
every observed value matched.min, max, and countif operate on the numeric samples they receive. Test active-to-other-state transitions in both
directions and record the intended partial-gap behavior.D after chart creation. Do not
conceal this with a hand-authored "window complete" flag.For every persistence adaptation, prove: chart startup, observed active history, each recovery state, each higher/lower
enumerated state, a partial source gap, a stale non-runnable lookup, collection resumption, chart obsoletion, and the
configured evaluation cadence. Never invent a pending state that Netdata does not expose, and never declare fidelity
from the look of an expression alone.
instances.by_labels merely to make filtering convenient. Exclude known named rules from generic
fallbacks, including special sources whose recovery is chart removal rather than zero.Run the smallest relevant tests first, then the full affected suite. A complete alert change normally needs all applicable items below:
/usr/sbin/netdata -W healthconfigtest for the built-in health parser and lookup suite.collecttest health checks named in
.agents/skills/collectors-go-framework-v2/chart-template.md#tests. A test MUST NOT copy the definition's lookup,
cadence, thresholds, expressions or recipients into expected literals; that restates the file and pins whatever it
said, right or wrong.windowComplete flag or label skipped NULLs as continuous evaluation. Cover startup, active transition, normal zero
recovery, a true all-null query, partial-null behavior, stale non-runnable behavior, collection resumption, known
disappearance/REMOVED, and label identity.NaN, test the evaluator result directly. Check both direct NaN propagation and any
comparison/conditional branch; do not infer the result from ordinary floating-point intuition.vnode: is incomplete unless the example defines or clearly links the required vnode.git diff --check and the project-required validation/review gate before claiming completion.healthconfigtest runs built-in health parser and lookup cases. It does not load every stock health template, prove that a
template attaches to the intended chart, or prove the runtime lifecycle. Cover those separately with source-aware contract
and transition tests.
Before requesting review, confirm all of the following:
NaN, UNDEFINED, CLEAR, and REMOVED transitions match the recorded contract.delay: is not
standing in for another engine's persistence state machine.src/health/REFERENCE.mdsrc/health/README.mddocs/NIDL-Framework.mdsrc/health/alert-configuration-ordering.mdREMOVED: src/health/health_event_loop.c$now, $last_collected_t, $update_every, dimension freshness, same-chart variables, cross-chart/context
variables, alert variables, and label-score selection: src/health/health_variable.csrc/database/rrdlabels.c:rrdlabels_common_count()src/web/api/queries/query-execute.c and the relevant grouping implementationNaN expression semantics: src/libnetdata/eval/eval-evaluate.c© netdata, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .agents/skills/health-alert-authoring of netdata/netdata.
Open the folder on GitHubat commit 5bcdf74
Health Alert Authoring 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Health Alert Authoring this skillnetdata/netdata | 81k | — | ~7.1k | Automated safety check: Pass | GPL-3.0 | |
| Migrate Vstest To Mtprunceel/ReactiveProperty | 944 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Doca Telemetry UtilsNVIDIA/skills | 3.6k | — | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Lokalise Deploy Integrationjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~3.4k | Automated safety check: Pass | MIT | |
| Azure TranslatorMicrosoftDocs/Agent-Skills | 776 | — | ~4.4k | Automated safety check: Pass | CC-BY-4.0 | |
| Build Openshell Mxc WindowsNVIDIA/OpenShell | 16k | — | ~4.9k | Automated safety check: Pass | Apache-2.0 |
runceel/ReactiveProperty
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP).
NVIDIA/skills
A skill your agent uses when the user is invoking docatelemetryutils on a host with DOCA installed — discovering the diagnostic-counter schema, translating counter names to binary Data IDs…
jeremylongshore/tons-of-skills-marketplace
Deploy Lokalise integrations to Vercel, Netlify, and Cloud Run platforms.
MicrosoftDocs/Agent-Skills
Expert knowledge for Azure Translator development including troubleshooting, best practices, decision making, limits & quotas, security, configuration, integrations & coding patterns, and deployment.
NVIDIA/OpenShell
Maintain and validate OpenShell's build-only Windows MSVC lane for x64 and ARM64.
Pr1p/pi-runbook
A skill your agent uses when creating, editing, or polishing pi-runbook content: README/index pages, docs, journal notes, experiments, bilingual documentation, source-reading summaries…
netdata/netdata
Use only when the user explicitly asks to build, run, preview, inspect, or validate learn.netdata.cloud locally using the contents of a PR or documentation branch before merge.
netdata/netdata
Inspect Netdata-org source checkouts under NETDATAREPOSDIR, or set up and synchronize that mirror when requested.
netdata/netdata
Investigate Netdata crashes, panics and fatals from agent-events captures or authorized fleet queries.
netdata/netdata
Inspect, analyze, troubleshoot, or review Codacy findings and local analyzer/API helpers.
netdata/netdata
Inspect or review Coverity Scan defects and saved CID bundles; fetch live findings or apply verified triage decisions when requested.
netdata/netdata
Inspect, review, or apply authorized triage decisions to SonarCloud issues and security hotspots; also review the Sonar helpers.
Author, adapt, modify, or review Netdata health alerts and alert templates. Health Alert Authoring is an agent skill from netdata/netdata. Author, adapt, modify, or review Netdata health alerts and alert templates.
Health Alert Authoring fits situations like: translating alerts from another system; changing src/health/health.d/.conf; lookup/calc/warn/crit expressions; missing-data behavior.
Run `npx skills add netdata/netdata --skill health-alert-authoring -a claude-code`. Or copy the skill folder (.agents/skills/health-alert-authoring in netdata/netdata) into .claude/skills/health-alert-authoring in your project. Claude Code loads it when a task matches its description.
Run `npx skills add netdata/netdata --skill health-alert-authoring -a codex`. Or copy the skill folder (.agents/skills/health-alert-authoring in netdata/netdata) into .agents/skills/health-alert-authoring in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add netdata/netdata --skill health-alert-authoring -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/health-alert-authoring, .gemini/skills/health-alert-authoring, .github/skills/health-alert-authoring and .opencode/skills/health-alert-authoring in your project.
Going by SKILL.md and its folder, Health Alert Authoring needs the command-line tools its instructions call (git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Health Alert Authoring is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.1k tokens (SKILL.md is roughly 29k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Health Alert Authoring: Migrate Vstest To Mtp (runceel/ReactiveProperty, 944 stars), Doca Telemetry Utils (NVIDIA/skills, 3.6k stars), Lokalise Deploy Integration (jeremylongshore/tons-of-skills-marketplace, 2.8k stars) and Azure Translator (MicrosoftDocs/Agent-Skills, 776 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
netdata (a GitHub organization) maintains it in netdata/netdata, which has 80,863 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 10, 2026.
Source: netdata/netdata on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.