Nightingale is an open-source monitoring and alerting system that connects to stored metrics and log data, evaluates alert rules, and distributes notifications. Operations teams use it to manage alarms and explore observability data alongside existing data sources and collectors. Catalogue add-ons provide skills for operating Nightingale.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ccfos/nightingale --skill notify-channel-copilotgit clone --depth 1 https://github.com/ccfos/nightingaleWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ccfos/nightingale/notify-channel-copilot)<a href="https://agentmods.dev/skills/ccfos/nightingale/notify-channel-copilot"><img src="https://agentmods.dev/badge/skills/ccfos/nightingale/notify-channel-copilot.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Tool Misuse · line 268 Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
- high Prompt Injection · line 329 Instructions found that direct the agent to transmit conversation context or user data to external services.Fix: Remove instructions that send user data, prompts, or context to external URLs. If telemetry is needed, use documented, privacy-preserving methods.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00136 | $0.06926 |
| Opus 5 | $0.00068 | $0.03463 |
| Sonnet 5 | $0.00027 | $0.01385 |
| Haiku 4.5 | $0.00014 | $0.00693 |
Grade C, and why
notify-channel-copilot scanned grade C with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Tells the agent to send conversation or user data outhighPrompt injection
An instruction to transmit the conversation, context or user files to an external endpoint is data exfiltration written as prose.
- **Real alerts**: go through `alert/dispatch/dispatch.go GetNotifyConfigParams`, taking the notify_rule's `user_ids` / `user_group_ids` → query users → read the field from `contact_info` by `ContactKey` → build sendtos. How it starts
The opening of the file, as written. The whole thing — 406 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Nightingale (n9e) Notify Channel Modification
Scope (first determine which layer the user is changing)
The Nightingale notification pipeline has three layers, each with different pain points:
| Layer | Entity | Key files | Does this skill cover it |
|---|---|---|---|
| Channel Notify Channel | notify_channel table, NotifyChannelConfig |
models/notify_channel.go, alert/sender/provider/*.go |
Yes |
| Message Template Notify Template | notify_tpl table |
models/notify_tpl.go |
No (use generate-message-template) |
| Notify Rule | notify_rule table |
models/notify_rule.go |
No |
How to decide:
- The user's wording mentions "URL/Webhook address/request header/timeout/proxy/signature/secret key/AppID/AppSecret/CorpID/integration"—channel layer, stay in this skill.
- The user's wording mentions "template/body/field/variable/rendering/title/card color"—template layer, switch to
generate-message-template. - The user's wording mentions "who to send to/recipient/subscription/filter/label matching"—rule layer, out of scope for this skill.
Data model NotifyChannelConfig
models/notify_channel.go:
type NotifyChannelConfig struct {
ID int64
Name string // display name
Ident string // channel type (the key that routes to a provider, see table below)
Description string
Enable bool
ParamConfig *NotifyParamConfig // user parameters: contact_key + custom params
RequestType string // http | smtp | script | flashduty | pagerduty
RequestConfig *RequestConfig // pick the matching sub-struct by ident/request_type
Weight int
}
RequestConfig is a union: only one field is filled depending on the channel type:
| Field | Applicable ident |
|---|---|
HTTPRequestConfig |
all channels that use a pure HTTP webhook (dingtalk, feishu, wecom, telegram, slackwebhook, callback, …) |
SMTPRequestConfig |
email |
ScriptRequestConfig |
script |
FlashDutyRequestConfig |
flashduty |
PagerDutyRequestConfig |
pagerduty |
DingtalkAppRequestConfig |
dingtalkapp (DingTalk app, currently not registered, see provider/init.go) |
FeishuAppRequestConfig |
feishuapp |
WecomAppRequestConfig |
wecomapp |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 406 lines · 136 tokens per session scan C 924d9a59a7f7
notify-channel-copilot is a skill published in the GitHub repository ccfos/nightingale (13,282 stars, last pushed today), licensed Apache-2.0. It adds 136 tokens to every session and 6,926 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it C with 1 finding (tells the agent to send conversation or user data out). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
cis-aws-database-10.8
Ensure Monitoring and Alerting is Enabled.
monitoring
Use when setting up uptime and health monitoring, alerts, or on-call basics for a service already in production, so you learn it is down before customers do — health and readiness probes, alerting on SLO error-budget burn rather than raw counts, curing alert fatigue, on-call rotation with escalation, and a status…
grafana-expert
Expert-level Grafana dashboards, visualization, data sources, alerting, and production operations. Use when the user mentions dashboards, visualization, monitoring, observability, or alerting, or when the task involves Grafana Architecture, Installation on Kubernetes, Data Sources, or Dashboard JSON.
datadog
Full-stack observability with Datadog APM, logs, metrics, synthetics, and RUM. Use when implementing monitoring, tracing, alerting, or cost optimization for production systems.
monitoring-expert
Expert-level monitoring and observability with Prometheus, Grafana, logging, and alerting. Use when the user mentions observability, Prometheus, Grafana, logging, metrics, or alerting, or when the task involves The Three Pillars of Observability, Monitoring Fundamentals, Prometheus Configuration, or Alert Rules.
prometheus-expert
Expert-level Prometheus monitoring, metrics collection, PromQL queries, alerting, and production operations. Use when the user mentions monitoring, metrics, observability, alerting, or PromQL, or when the task involves Prometheus Architecture, Installation on Kubernetes, ServiceMonitor, or PromQL Queries.