
signoz-creating-alerts
Create a new SigNoz alert rule from a natural-language intent: threshold, anomaly, log-volume, error-rate, latency, or absent-data alerts across metrics, logs, traces, and exceptions. Make sure to use this skill whenever the user says "alert me when…", "notify me if…", "set up monitoring for…", "page me on…", "create an alert for…", or asks for a new alert/notification rule, even if they don't say the word "alert" explicitly. Also use it when someone asks to be notified about error rates, latency spikes, log volume, CPU/memory pressure, or anomalous behavior on a service or host.
- Installs
- 355
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/signoz/agent-skills --skill signoz-creating-alerts- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads signoz-creating-alerts automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Alert Create
Build a SigNoz alert from natural-language intent. Autonomous agents and interactive clients follow the same flow.
Prerequisites
This skill calls SigNoz MCP tools (signoz_create_alert,
signoz_list_alert_rules, signoz_get_field_keys, etc.). Confirm they are
available; otherwise run signoz-mcp-setup. Never fall back to raw HTTP or
fabricate alert configs.
When to use
Use this skill when the user wants to:
- Create, set up, or configure a new alert rule.
- Get paged or notified when a metric, log volume, latency, or error rate crosses a threshold.
- Detect anomalous behavior on a service, host, or signal.
- Catch silent data loss ("alert if data stops arriving from X").
Do NOT use when the user wants to:
- Understand what an existing alert monitors →
signoz-explaining-alerts. - Diagnose why an existing alert fired →
signoz-investigating-alerts. - Modify thresholds, queries, or routing on an existing alert → call
signoz_update_alertdirectly.
Required inputs (strict)
Alert creation writes to a shared system. Enforce this strict input contract; guesses create noisy alerts on the wrong service:
| Input | Required | Source if missing |
|---|---|---|
| Alert intent (NL goal) | yes | $ARGUMENTS or recent user turn |
Resource attribute filter (e.g. service.name, k8s.namespace.name, host.name) | yes | discover via signoz_get_field_keys + signoz_get_field_values |
| Threshold value(s) | threshold / PromQL rules | derive a sensible default and surface in the preview; never substitute one for an absent-only request |
| Severity | inferred from intent | resolve with Severity defaults in Step 5 |
| Notification routing | yes | direct: verified channel display name(s); policy: confirmation that an existing org policy matches this rule |
If a required input is missing and undiscoverable, stop before any write and ask through the host's supported clarification UI.
What to include in the question:
- What is missing: name it concretely (e.g. "which resource-attribute filter to use").
- Candidate lists from discovery: concrete values per attribute, e.g.:
service.name→frontend,checkout,payments;host.name→prod-api-1,prod-db-1. - Free-form input so the user can name an unsurfaced value.
In autonomous mode, escalate or use upstream context; never call
signoz_create_alert with a guessed value.
Workflow
Step 1: Parse intent and check what's missing
Extract from the user's request:
- What to monitor: signal type (metrics / logs / traces / exceptions) and the specific condition (CPU, error rate, p99 latency, log count, ...).
- Resource scope: which service, host, namespace, or environment.
- Threshold: numeric value and comparison ("above 80%", "below 100/s").
- Severity: note any severity the user names and any urgency cue ("page me", "just FYI"). Step 5 resolves the final value.
- Routing: direct channel name(s), or an explicit request to use a confirmed existing org notification policy.
Map signal phrasing to alert type:
| User says | alertType | signal |
|---|---|---|
| metric, CPU, memory, latency, request rate | METRIC_BASED_ALERT | metrics |
| log, error logs, log volume, log pattern | LOGS_BASED_ALERT | logs |
| trace, span, latency p99, slow requests | TRACES_BASED_ALERT | traces |
| exception, stack trace, crash | EXCEPTIONS_BASED_ALERT | (clickhouse_sql) |
The table lists the types the SigNoz alert UI can edit today. Newer types
the UI does not surface yet, such as AI_TRACES_BASED_ALERT for LLM and
AI-agent span telemetry, are also accepted. Use one only when the user names
it or no listed type fits, and say that the UI has no editor for it.
If resource scope is missing, run discovery (Step 2). If still missing after discovery, stop and ask the user (see Required inputs above).
Step 2: Discover resource attributes and metric names
When the user does not name a service / host / namespace, the SigNoz MCP guideline applies: always prefer a resource-attribute filter. Discover candidates instead of guessing:
- Call
signoz_get_field_keyswithfieldContext=resourceto enumerate resource attributes for the chosen signal. - Call
signoz_get_field_valuesfor the most likely attribute (typicallyservice.name, thenhost.name, thenk8s.namespace.name) to get concrete values. - If the user mentioned a metric by name, call
signoz_list_metricswith a search term to verify the exact OTel metric name. Wrong names create alerts that never fire.
Surface the candidates in your clarification request (see Required inputs above). Do not pick one.
Step 3: Check for duplicate alerts
Once the scope is resolved (either provided by the user or discovered in Step 2), check for existing alerts before probing data or authoring a new config: both are wasted work if the user wants to update an existing rule instead.
Call signoz_list_alert_rules and paginate through every page:
pagination.hasMore is true until you have walked the full list. This lists
configured alert rules (the durable state); do not use signoz_list_alerts,
which returns currently triggered/active alert instances and will silently
miss rules that are configured but not firing right now. Check for existing
rules that match the user's intent (same signal + same scope + similar
threshold). If a likely duplicate exists, surface it and ask whether to
create a new one anyway, modify the existing one (out of scope here: use
signoz_update_alert), or cancel.
Step 4: Probe data existence for the chosen filter (fail fast)
Before authoring any alert config, confirm the specific combination the alert will watch (metric × service × any other filter) actually emits data. The most common silent failure is "metric exists in the catalog and the service exists in the catalog, but the service doesn't emit that metric"; each piece checks out in isolation, the alert saves successfully, and it silently never fires.
Run a single probe over the last 1 hour using the same filter the alert will use, but with the simplest aggregation that confirms data exists:
- Metrics: use
signoz_query_metricswith the concretemetricNameand the alert'sfilter; it auto-applies aggregation defaults. If the full v5 tool is necessary, use a metrics aggregation object containingmetricName,timeAggregation, andspaceAggregation. Metrics do not accept expression aggregations such ascount()or filter-only probes. - Logs: call
signoz_aggregate_logswithaggregation: "count"and the alert filter.count()is a Query Builder expression, not a helper-tool argument. - Traces: call
signoz_aggregate_traceswithaggregation: "count"and the alert filter. Do not passaggregation: "count()".
Inspect the result:
- Probe returns rows → proceed to Step 5.
- Probe returns empty → STOP. Do not build an alert config the user
will then be asked to throw away. Stop and ask the user (see Required
inputs above), describing what was missing and offering concrete
recovery:
- Service doesn't emit the metric → call
signoz_get_field_values signal=metrics name=service.name metricName=<metric>to list the services that do emit it; let the user pick a different service or a different metric. - Wrong attribute name (
serviceinstead ofservice.name) → suggest the semantic-convention name and re-probe. - Service emits the metric but not in the expected time range → widen the probe window once (e.g. last 24h) before declaring no-data.
- Service doesn't emit the metric → call
Exception: log-based crash / panic / OOMKilled / FATAL alerts. These intentionally have zero matches in a healthy system. The probe will return empty by design. Do not stop; instead, surface the zero-match result and ask the user to confirm before save. Treat this exception narrowly: it applies to "alert me when bad thing happens" log queries, not to alerts that depend on continuous data flow.
Step 5: Build the alert config
Read the signoz://alert/instructions and signoz://alert/examples MCP
resources for the canonical, version-current shape.
Compose the full payload; no field is filled in for you. Set these explicitly on every threshold or PromQL rule:
schemaVersion: "v2alpha1". An omittedschemaVersionis read with v1 semantics and rejected for missing v1 condition fields.evaluation:{ "kind": "rolling", "spec": { "evalWindow": "5m0s", "frequency": "1m0s" } }unless the intent implies another cadence. Required on v2alpha1 rules.notificationSettings: required on v2alpha1 rules; setusePolicyper Step 7 andgroupByon high-cardinality queries.labels.severity: the highest tier's severity from Severity defaults below. Without it the rule has no severity in the alert list.condition.compositeQuery.panelType: "graph". An omitted value is stored empty.
Anomaly rules use the v1 shape instead: top-level evalWindow and
frequency, condition.op / matchType / target / algorithm /
seasonality, no schemaVersion, no thresholds, no evaluation, and no
notificationSettings.
Threshold/PromQL condition.thresholds requires kind (use "basic") and
non-empty spec[]. Current v2 cannot represent alertOnAbsent as the sole
trigger. For an exact absent-only request, stop before any write and offer a
combined threshold + absence rule only with explicit approval.
For most user intents, the config is one of a small number of patterns:
| Pattern | Example intents |
|---|---|
| Single-metric threshold | "alert when CPU > 80%", "p99 latency > 2s" |
| Log volume threshold | "more than N error logs/min" |
| Trace-based count or p-tile | "p99 span duration > 2s on checkout" |
| Error-rate formula (A/B*100): see "Common query shapes" below | "error rate > 5%" |
| Anomaly detection (Z-score) | "alert me on anomalous traffic" |
| Combined threshold + absence (only after approval) | "alert if data stops arriving" |
ClickHouse SQL alert: author SQL using the schema in signoz://alert/examples | non-trivial joins, custom aggregations the builder cannot express |
PromQL alert: delegate to signoz-generating-queries for the query, then return here | when user already has PromQL |
Threshold op and matchType values. Use these op words: above,
below, equal, not_equal, above_or_equal, below_or_equal, and
outside_bounds; equals is invalid. Use above for anomaly rules: their
absolute score covers spikes and drops.
| Comparison | op | Evaluation behavior | matchType |
|---|---|---|---|
| above / exceeds / > | "above" | breach at any point | "at_least_once" |
| below / under / < | "below" | breach for entire window | "all_the_times" |
| equal / = | "equal" | average breaches | "on_average" |
| not equal / != | "not_equal" | sum breaches | "in_total" |
| last value breaches | "last" |
Conventions this skill writes into the payload (and surfaces in the preview):
evalWindow: 5m0s,frequency: 1m0s: change only if the intent implies a slower or faster cadence.matchType: "on_average"for CPU / memory / latency: smooths transient spikes.matchType: "at_least_once"for error counts / error rates: catches any breach.
Severity defaults. Resolve each threshold tier's severity in this order:
- Take the first matching row below (no cue needed), or
warningif none. - A user cue overrides the default. A named severity ("critical", "warning
at 80%") wins over an urgency cue. "Page me", "wake me up", or "urgent"
sets
critical. "Just FYI", "no paging", or "low priority" lowers the default one tier (criticaltowarning,warningtoinfo,infostaysinfo). A cue tied to one threshold ("page me at 90%") applies only to that tier. Ask when urgency cues conflict on the same tier. - Name each threshold tier by its severity and set
labels.severityto the highest tier, which SigNoz's alert-rule list sorts and filters by. Every firing carries that label, so on a multi-tier rule onlythreshold.nameshows which tier fired. Anomaly rules have no tiers: SigNoz uses the label as the tier name. The Step 8 preview states each tier's severity and why.
| Alert intent | Default severity |
|---|---|
| Any single crash event: OOMKilled / CrashLoopBackOff / panic / FATAL log line | critical |
| Service down / no-data on a production service | critical |
| SLO burn rate | 14.4× or more: critical; 6× to under 14.4×: warning; under 6× (e.g. ticket-level 1×): info |
| Error rate with a threshold above 1% | critical |
| Error log or exception volume above a count threshold | warning |
| Latency degradation (p95/p99 above target) | warning |
| CPU / memory / disk pressure | warning |
| Request-rate / traffic anomaly | warning |
Example: "alert me when checkout error rate goes above 2%" is critical
(error-rate row); the same request with "just FYI" is warning.
Attribute names: use exact keys returned by signoz_get_field_keys; when
available they are usually OTel names such as service.name, not service.
Annotation templates: include moving values; on-call sees the notification, not the config:
summary: single-line headline. Include the resource scope and the numeric value:"checkoutservice error rate {{$value}}% above 3%".description: longer message. Include{{$value}},{{$threshold}}, the groupBy values (e.g.{{$labels.service_name}}), and a sentence on what to do or where to look. For count-based alerts include the count explicitly:"{{$value}} crash log lines in the last 5 minutes from service {{$labels.service_name}}".
Use {{$value}} for the breaching value, {{$threshold}} for the target,
and {{$labels.<key>}} for groupBy values (note SigNoz substitutes the
dotted attribute name with underscores: service.name → service_name).
Common query shapes: conventions
Read signoz://alert/examples for the authoritative JSON of all
patterns (error rate, p99 latency, log volume, absent-data, anomaly,
PromQL, ClickHouse SQL). The conventions that don't live in the
schema:
- Error-rate formula: set
disabled: trueon the component queries A and B so only the formula F1 renders in the alert chart and notification. The raw counts are intermediate, not the alert signal: forgetting this clutters the preview with three series and confuses the on-call engineer reading the notification. - p99 latency: the query emits nanoseconds, but express the threshold in
the user's unit (for example
target: 2,targetUnit: "s"); SigNoz converts it during evaluation. - Low-traffic percentile guard: put
count() > Nin the percentile query'shaving.expressionand setstepIntervalto the requested bucket size (for example,60for “per minute”). Do not invent comparison operators inside a formula such asA * (B >= N). - Log volume spike: prefer
groupBy: service.nameover a hard filter when the user said "any service": groupBy provides the scoping AND keeps the notification useful per-service.
Step 6: Dry-run the full query and validate the threshold
Step 4 confirmed data flows. Step 6 does two things:
- Validate query shape. Run the full builder spec (with
groupBy, formulas, disabled component queries, and non-string filters): Step 4's barecount()probe doesn't exercise these. The create-alert schema accepts queries that error at evaluation (numericgroupBy, unquoted bool filter, mismatched aggregation). Any HTTP 5xx or "filter type mismatch" = fix the config before proceeding to (2).disabled: trueon formula component queries (A, B inA * 100 / B) is the recommended pattern, not a failure (see Step 5). - Calibrate the threshold. Given the validated query, would the alert have fired a sensible number of times in the last hour?
Run the full primary query (or formula) over the last hour:
signoz_execute_builder_queryfor all builder, formula, and PromQL queries: setcompositeQuery.queries[].typetobuilder_query/builder_formula/promqlas appropriate. Alert PromQL specs carry onlyname/query/legend/disabled; dry-run execution PromQL specs may also carrystep/stats. Still omit builder-onlystepInterval. Put the string inspec.query, readsignoz://promql/instructionsfor the UTF-8 quoted-selector form SigNoz requires ({"metric.name.with.dots"}, not the underscored or bare-dotted forms), and keep alert PromQL fully literal: no$var,$__rate_interval, or other dashboard variable is evaluated.- Alert specs omit time bounds, but this dry-run cannot: set outer-query
start/endto absolute JSON integer Unix-ms (e.g. now−3600000 → now), orsignoz_execute_builder_queryfails withmissing start or end timestamp. - For intent grouped by a dimension, each execution
groupBy[].nameis the exact Step 2 key (e.g.k8s.pod.name), never empty. OmitgroupByotherwise. signoz_aggregate_logs/signoz_aggregate_traceswhen those fit better.signoz_query_metricswhen the alert query targets a single known metric bymetricName: the tool auto-applies aggregation defaults and acceptsfilter,groupBy, andformulaalongside. PromQL is not supported here; usesignoz_execute_builder_queryfor that.
Omit limit and order from every query in the persisted rule, builder
queries, formula inputs, and formula results alike. On a grouped alert query
limit plus order act as a top-N series cap: only the top-N groups ranked
over the whole evaluation window are evaluated, so series beyond N
are never evaluated, a group with a short-lived spike can be ranked out, and a
below alert ordered descending can exclude every breaching series. Set them
only when top-N alerting is the explicit intent ("alert on the five busiest
hosts"), using Query Builder v5 wire order, never dashboard orderBy.
The dry-run is different: signoz_execute_builder_query is a display
context with a response budget, so the bounds signoz-generating-queries
teaches for it (a positive limit and v5 order on each query) are fine
there. They stay in the dry-run envelope only; never copy them into the
signoz_create_alert payload. Because the dry-run returns at most limit
groups, a breach count computed from it covers the returned groups only;
when the groupBy can exceed that bound, say so in the preview rather than
reporting the count as complete.
Compute how many evaluation points breached the proposed threshold. Surface in the preview as "would have fired N times in the last 1h". A 1h window is too short to grade most alerts: only the upper extreme is actionable:
- N is large (e.g. > 30) → likely alert storm. Surface and
recommend tightening or adding hysteresis (
recoveryTarget). - N = 0 → expected for a healthy system; do not nudge the user to loosen. Only flag if the user said they'd expect the alert firing right now (e.g. during an active incident).
- N is small and non-zero → report the count; the user decides whether the threshold is right. One hour can't distinguish "tuned well" from "barely caught a transient".
- Exceptions:
- Anomaly alerts: execute the underlying metric query without the
anomaly
functionstransform to verify its shape and data, then skip the breach count (Z-scores aren't directly comparable to raw values). Be explicit that this validates the base query, not anomaly scoring. - Log-based crash / panic / OOMKilled / FATAL alerts: these intentionally have zero matches in a healthy system. Step 4 has already surfaced the zero-match result and obtained user confirmation; skip the breach count.
- Anomaly alerts: execute the underlying metric query without the
anomaly
If Step 4 was somehow skipped (e.g. a downstream skill is invoking this flow mid-stream), the no-data stop rule applies here too: empty result → stop and ask the user (see Required inputs above) instead of saving an alert that will never fire.
Step 7: Resolve notification routing
Choose direct or org-policy routing after dry-run and final severity. A missing channel does not authorize policy routing.
For a confirmed existing org policy on a threshold/PromQL rule, set
notificationSettings.usePolicy: true, preserve the confirmed matcher labels
and threshold tier, and omit threshold channels and preferredChannels. This
skill does not create policies. If the policy or match criteria are not
confirmed, stop and ask. Anomaly rules are direct-only. If the criteria route
tiers by severity, stop and ask: every tier matches as the highest (Step 5).
Offer a threshold.name matcher, one rule per tier, or direct routing.
For direct routing, reuse a fully paginated same-operation channel result or
page signoz_list_notification_channels until hasMore=false; its total
counts filtered matches. Match and route by immutable displayName, not the
machine name; show displayName and kind when asking the user to pick.
Offer creation only from user-provided config and never create automatically.
Build signoz_create_notification_channel arguments from its current input
schema, which defines the supported provider kinds and identity fields:
provider settings go inside config, never as flat fields. Ask whether the
user wants a test notification and send test: true only if they agree. On
PERMISSION_DENIED, use an
admin-created channel or a short-lived minimum-role credential from the host's
secret store. If routing remains unresolved, stop and ask.
Put exact returned display names in each threshold's channels; anomaly rules
use top-level preferredChannels. Never substitute one routing field for the
other. A threshold tier with no channels, or a displayName that does not
exist, fails unless notificationSettings.usePolicy is true. Top-level
preferredChannels on a v2alpha1 rule is stored unused, so a threshold rule
routed only through it saves and notifies nobody.
Updating or handling secret-bearing channel config
signoz_update_notification_channel is full replacement: resolve id, get
the channel, copy complete config, change requested fields, then send id
plus full config. Do not send or change name or displayName. Preserve
credentials and effective sendResolved without echoing them. A kind change
needs the complete new provider config. Update tests require explicit opt-in.
If a requested test fails after a successful write, report mutation and test
status separately. On a post-write auth error with mutationCommitted: true,
retain the id and inspect after authentication; do not replay mutation or test.
Transport success does not prove final provider delivery.
Slack webhook URLs, PagerDuty integration keys, and similar webhook tokens are secrets. When the user supplies them inline, treat them as opaque inputs and follow these rules:
- Do not echo the secret back. Never include the webhook URL,
integration key, or any password-like token in chat output, previews,
confirmation messages, summaries, or the
<navigation_suggestions>payload. Refer to the channel by itsdisplayNameonly ("Slack channelPlatform Alertscreated") and omit the value entirely. - Do not stash secrets in clarification context. If you need to ask the
user a follow-up question after they pasted a secret, do not include
the secret value in the clarification
message,discovered_context, or any other field that the host may persist for resume. Refer to it symbolically (e.g. "the webhook you just provided"). - One-pass only. Pass the secret directly to
signoz_create_notification_channeland do not retain it in any intermediate prose. After the create call succeeds, refer to the channel by display name; after a failure, ask the user to re-paste rather than echoing what they sent. - If the user instead asks "how do I set up a Slack channel?": that is a docs question, not a create-channel request. Answer with the docs flow (the SigNoz UI's Notification Channels page) and do not solicit the secret in chat at all. Prefer the UI path when the user seems uncertain about exposing the token.
Step 8: Preview the prepared config
Emit a one-paragraph plain-language summary of what will be created: no raw JSON dump. The user-facing facts (what fires, on what scope, at what threshold, where it routes) are captured by the summary; clicking through the JSON does not catch query-shape errors (Step 6's dry-run does).
Summary: This alert fires when [condition] for [resource scope], evaluated every [frequency] over the last [window]. Severity: [tier], because [table row or user cue]. Thresholds: warning at X, critical at Y. Notifications route through [direct channels / confirmed org policy]. Dry-run on the last hour: would have fired N times.
Step 9: Save and report
- Call
signoz_create_alertwith the config from Step 8. - Name collision: if
signoz_create_alertreturns a duplicate-name error, do not suffix-append or callsignoz_update_alert. Stop and tell the user the existing alert blocked creation; offer to use a different name or modify the existing alert (which is out of scope for this skill). - On success, report:
- The alert ID and name.
- What it watches, at what threshold, and at what severity.
- How notifications route (direct channels or the confirmed org policy).
- The dry-run summary ("would have fired N times in last 1h").
Guardrails
- Strict inputs over guessing Resource attribute and notification routing are required. Direct routing needs a channel; policy routing needs a confirmed existing match and does not require a direct channel.
- Always paginate
signoz_list_alert_rulesStopping at page 1 misses duplicates and produces noise. - Dry-run is mandatory Complete Steps 4 and 6 before
signoz_create_alert; a never-firing alert creates false confidence. - Threshold operators use canonical words Use the
opandmatchTypewords from Step 5, neverequals. - Compose the full payload Set
schemaVersion,evaluation,notificationSettings,labels.severity, andpanelTypeyourself (Step 5); nothing fills them in. - No
limitororderon persisted alert queries They cap a grouped alert to its top-N series (Step 6). Keep them in the dry-run envelope only. - Signal must match alertType
signal: "logs"requiresLOGS_BASED_ALERT. Mismatches fail validation. - Anomaly rules are metrics-only
anomaly_rule+ non-metric alertType is rejected. - Routing must be confirmed. Direct routes use exact returned
displayNamevalues from the fully paginatedsignoz_list_notification_channels; put them in per-thresholdchannelsfor threshold/PromQL rules or top-levelpreferredChannelsfor anomaly rules. Confirmed policy routes setnotificationSettings.usePolicyand omit direct channel fields. - Never echo channel secrets. Slack webhook URLs, PagerDuty integration
keys, and similar webhook tokens are secrets. Pass them to
signoz_create_notification_channelonce and never repeat the value in chat output, previews, confirmations, summaries, clarification payloads, or navigation suggestions. Refer to the channel by display name only after creation; ask the user to re-paste on failure rather than reproducing what they sent.
Examples
Four canonical alert flows (multi-severity metric threshold, error-rate
formula, log-volume groupBy, and anomaly detection) live in
references/examples.md.
Additional resources
signoz://alert/instructionsandsignoz://alert/examplesMCP resources: the alert payload shape, the fields to set explicitly, threshold codes, filter expression syntax, and version-current pattern examples. Always preferred over any transcribed copy.signoz-generating-queriesskill: for authoring PromQL or testing queries before wrapping them in an alert.
FAQ
What does the signoz-creating-alerts skill do?
Create a new SigNoz alert rule from a natural-language intent: threshold, anomaly, log-volume, error-rate, latency, or absent-data alerts across metrics, logs, traces, and exceptions. Make sure to use this skill whenever the user says "alert me when…", "notify me if…", "set up monitoring for…", "page me on…", "create an alert for…", or asks for a new alert/notification rule, even if they don't say the word "alert" explicitly. Also use it when someone asks to be notified about error rates, latency spikes, log volume, CPU/memory pressure, or anomalous behavior on a service or host.
How do I install signoz-creating-alerts?
Run npx skills add https://github.com/signoz/agent-skills --skill signoz-creating-alerts in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/signoz-creating-alerts/ (personal) or .claude/skills/signoz-creating-alerts/ (project).
Which AI agents can use signoz-creating-alerts?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is signoz-creating-alerts safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains signoz-creating-alerts?
It is published by signoz in signoz/agent-skills, and it is an official skill from the maker of the technology it covers. It has 355 recorded installs.
More from signoz/agent-skills
signoz-searching-docs
signoz/agent-skills
Look up information in SigNoz documentation. Make sure to use this skill whenever the user asks "how do I", "where in the docs", "what does the docs say about", "find docs for", or otherwise needs reference material on SigNoz instrumentation, OpenTelemetry setup, self-hosted deployment, API endpoints, auth headers, or troubleshooting steps, even if they don't say the word "docs" explicitly. Docs lookup only; for actions inside SigNoz, the agent will pick the matching signoz- action skill.
signoz-creating-dashboards
signoz/agent-skills
Create a new SigNoz dashboard from a natural-language intent: import a curated template (PostgreSQL, Redis, JVM, k8s, hostmetrics, APM, LLM, etc.) when one fits, or build a custom dashboard from scratch with metric / trace / log panels. Make sure to use this skill whenever the user says "create a dashboard for…", "set up monitoring for…", "build me a dashboard…", "I need observability for…", "import a dashboard template", or asks to track / visualize a service, database, cluster, or AI/LLM platform, even if they don't explicitly say "dashboard". Also use it when someone wants to "monitor", "watch", or "see metrics for" a technology and the natural answer is a dashboard.
signoz-generating-queries
signoz/agent-skills
Generate, write, or run an ad-hoc query against SigNoz observability data (metrics, logs, or traces) without wrapping it in a dashboard panel or alert. Make sure to use this skill whenever the user asks "show me error rates", "query logs for timeout errors", "what's the p99 latency for the cart service", "how many requests hit the payment endpoint", "find slow traces", "errors in the last hour", or otherwise asks an exploratory question that needs live observability data, even if they don't say "query" or "search" explicitly.
signoz-writing-clickhouse-queries
signoz/agent-skills
Open the skill to read its SKILL.md instructions.
signoz-explaining-dashboards
signoz/agent-skills
Explain what an existing SigNoz dashboard shows in plain operational language: the panels, queries, variables, and what to watch for on each. Make sure to use this skill whenever the user asks "explain this dashboard", "what does my [X] dashboard show", "walk me through the panels", "what should I watch for on this dashboard", or "help me understand this dashboard", or otherwise asks for an interpretation of a dashboard's contents, even if they don't say "explain" explicitly. Also use it when someone is onboarding to a service and wants to understand what its existing observability looks like.
signoz-modifying-dashboards
signoz/agent-skills
Modify an existing SigNoz dashboard: add or remove panels, edit a panel's query, threshold, or unit, rename the dashboard, change a panel type (graph ↔ table ↔ value), rearrange the layout, add or edit variables, or update tags. Make sure to use this skill whenever the user says "add a panel to my dashboard", "change the query on this panel", "remove the latency widget", "rename my dashboard", "update the filters", "rearrange the layout", "add a variable", "change panel type from graph to table", or otherwise asks to change something on a dashboard that already exists, even if they don't say "modify" or "edit" explicitly.
Popular ai & agents skills
google-agents-cli-publish
google/agents-cli
This skill should be used when the user wants to "publish an agent", "publish my ADK agent", "register an agent with Gemini", "publish to Gemini" (formerly Gemini Enterprise), or needs guidance on the agents-cli publish gemini command. Also use when the user wants to "manage agents in Agent Registry", "list/update/delete registered agents", or "register an MCP server". Covers ADK vs A2A registration modes, programmatic and interactive usage, flag reference, auto-detection from deployment metadata, Agent Registry fleet management, and troubleshooting. Part of the agents-cli skills suite. Do NOT use for deployment (use google-agents-cli-deploy).
google-agents-cli-eval
google/agents-cli
This skill should be used when the user wants to "run an evaluation", "evaluate my agent", "evaluate my ADK agent", "write an eval dataset", "analyze eval failures", "compare eval results", "optimize agent", or needs guidance on the Gemini platform eval methodology and the Quality Flywheel. Covers eval metrics, dataset schema, LLM-as-judge scoring, and common failure causes. Applies to any agents-cli project, whatever framework the agent is written in. Do NOT use for agent API code patterns (ADK: use google-agents-cli-adk-code), deployment (use google-agents-cli-deploy), or project scaffolding (use google-agents-cli-scaffold).
skill-creator
anthropics/skills
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
codex-pet
prime-skills/runcomfy-agent-skills
Codex Pet generator on RunComfy. Build a Codex-compatible Codex Pet spritesheet.webp + pet.json from a single reference image, drop it into ${CODEXHOME:-$HOME/.codex}/pets/ / and Codex picks it up as a custom Codex Pet next to the 8 built-ins. This skill produces the exact Codex Pet atlas Codex expects (1536x1872 PNG/WebP, 8 cols x 9 rows, 192x208 cells, 9 animation states — idle, running-right, running-left, waving, jumping, failed, waiting, running, review). Calls OpenAI GPT Image 2 edit ONCE via the local RunComfy CLI as runcomfy run openai/gpt-image-2/edit to produce a canonical Codex Pet pose, then assembles all 9 animation rows programmatically with ImageMagick micro-transforms — no Codex Pro, no $imagegen, no OPENAIAPIKEY required, only RUNCOMFYTOKEN. Triggers on "codex pet", "create codex pet", "make codex pet", "hatch codex pet", "/hatch image", "desktop pet codex", "codex pets", "spritesheet.webp", or any explicit ask to build a custom pet for OpenAI Codex.
full-output-enforcement
leonxlnx/taste-skill
Overrides default LLM truncation behavior. Enforces complete code generation, bans placeholder patterns, and handles token-limit splits cleanly. Apply to any task requiring exhaustive, unabridged output.
executing-plans
obra/superpowers
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available