WYRE-AI/msp-claude-plugins/msp-claude-plugins/kaseya/datto-rmm/skills/alerts/SKILL.md
Datto RMM Alerts
Datto RMM alert structure, priorities, and the 25+ alert context types (antivirus_ctx, eventlog_ctx, perf_disk_usage_ctx, ransomware_ctx, and more), each with its own type-specific fields. Covers alert resolution workflows and context-specific triage guidance.
- Source repository stars
- 42
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-08-28
- Source checked
- 2026-08-28
Decision brief
What it does: where it fits
Datto RMM alert structure, priorities, and the 25+ alert context types (antivirus_ctx, eventlog_ctx, perf_disk_usage_ctx, ransomware_ctx, and more), each with its own type-specific fields. Covers alert resolution workflows and context-specific triage guidance.
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/kaseya/datto-rmm/skills/alerts"Inspect the Agent Skill "Datto RMM Alerts" from https://github.com/WYRE-AI/msp-claude-plugins/blob/5005f73ba2f52cd299f58aa6bb79f4e70ae87103/msp-claude-plugins/kaseya/datto-rmm/skills/alerts/SKILL.md at commit 5005f73ba2f52cd299f58aa6bb79f4e70ae87103. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Anti-triggers
A SOC-confirmed threat rather than a monitor firing —
A SOC-confirmed threat rather than a monitor firing —Backup failures — appliance and SaaS backup raise alerts on theirVSA alarms — Kaseya's other RMM raises its own alarm objects; use - 02
Key Concepts
Every alert has: - alertUid - Unique identifier for the alert - alertType - Category of alert (Device Offline, Monitor, etc.) - priority - Severity level (Critical, High, Moderate, Low, Information) - alertContext - Type-specific data with @class discriminator - timestamp - When…
alertUid - Unique identifier for the alertalertType - Category of alert (Device Offline, Monitor, etc.)priority - Severity level (Critical, High, Moderate, Low, Information) - 03
Alert Structure
Every alert has: - alertUid - Unique identifier for the alert - alertType - Category of alert (Device Offline, Monitor, etc.) - priority - Severity level (Critical, High, Moderate, Low, Information) - alertContext - Type-specific data with @class discriminator - timestamp - When…
alertUid - Unique identifier for the alertalertType - Category of alert (Device Offline, Monitor, etc.)priority - Severity level (Critical, High, Moderate, Low, Information) - 04
Alert Priorities
Review the “Alert Priorities” section in the pinned source before continuing.
Review and apply the “Alert Priorities” source section. - 05
Alert States
Review the “Alert States” section in the pinned source before continuing.
Review and apply the “Alert States” source section.
Permission review
Static risk signals and limitations
Network access
The documentation includes network, browsing, or remote request actions.
const alerts = await client.request('/api/v2/alerts/open');Network access
The documentation includes network, browsing, or remote request actions.
await client.request(`/api/v2/alert/${alertUid}/resolve`, {Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 96/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 42 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- WYRE-AI/msp-claude-plugins
- Skill path
- msp-claude-plugins/kaseya/datto-rmm/skills/alerts/SKILL.md
- Commit
- 5005f73ba2f52cd299f58aa6bb79f4e70ae87103
- License
- Apache-2.0
- Collected
- 2026-08-28
- Default branch
- main
View the original SKILL.md
Datto RMM Alert Management
Overview
Alerts are the primary notification mechanism in Datto RMM. They're generated by monitors when conditions are met - disk space low, service stopped, CPU high, etc. Each alert contains context-specific data based on the monitor type. This skill covers alert handling, the 25+ context types, and resolution workflows.
Anti-triggers
- A SOC-confirmed threat rather than a monitor firing —
ransomware_ctxandantivirus_ctxalerts are monitor output, not analyst verdicts; userocketcyber-incidents. - Backup failures — appliance and SaaS backup raise alerts on their
own surfaces; use
datto-bcdr-api-patternsorunitrends-api-patterns. - VSA alarms — Kaseya's other RMM raises its own alarm objects; use
kaseya-vsa-api-patterns. - An alert raised by a different RMM — every RMM here emits objects
called alerts with their own severity words; only the enrolled agent
disambiguates. Use
atera-alerts,ninjaone-alerts,superops-alerts, orconnectwise-automate-alerts. - A signal that pages a human — incident platforms also call their
inbound events alerts, but those route to a responder rather than
resolving on the device; use
pagerduty-alertsorrootly-alerts.
Key Concepts
Alert Structure
Every alert has:
- alertUid - Unique identifier for the alert
- alertType - Category of alert (Device Offline, Monitor, etc.)
- priority - Severity level (Critical, High, Moderate, Low, Information)
- alertContext - Type-specific data with
@classdiscriminator - timestamp - When the alert was raised (Unix milliseconds)
Alert Priorities
| Priority | Value | Description | Typical Response |
|---|---|---|---|
| Critical | Critical | Severe impact, immediate action | 15 minutes |
| High | High | Significant issue | 1 hour |
| Moderate | Moderate | Notable but manageable | 4 hours |
| Low | Low | Minor issue | 8 hours |
| Information | Information | Informational only | Best effort |
Alert States
| State | Description |
|---|---|
open | Active, requires attention |
resolved | Closed, issue addressed |
Field Reference
Alert Object
interface Alert {
// Identifiers
alertUid: string; // Unique alert ID
alertSourceInfo: AlertSource; // Source of the alert
// Device Info
deviceUid: string; // Device that generated alert
hostname: string; // Device hostname
// Classification
alertType: string; // "Monitor", "Device Offline", etc.
priority: AlertPriority; // Critical, High, Moderate, Low, Information
alertMessage: string; // Human-readable message
// Context (varies by @class)
alertContext: AlertContext; // Type-specific data
// Timestamps (Unix milliseconds)
timestamp: number; // When alert was raised
resolvedAt?: number; // When resolved (if resolved)
// Resolution
resolved: boolean;
resolvedBy?: string; // Who resolved it
resolution?: string; // Resolution notes
}
type AlertPriority = 'Critical' | 'High' | 'Moderate' | 'Low' | 'Information';
Alert Context Types
Datto RMM has 25+ alert context types, identified by the @class field in alertContext. Each type carries fields specific to that monitor.
@class | Monitor | Key Fields |
|---|---|---|
antivirus_ctx | Antivirus status/detection | avProduct, avStatus, threatName, threatPath |
comp_script_ctx | Component script execution | componentName, exitCode, stdout, stderr |
custom_snmp_ctx | SNMP monitoring | oid, value, threshold, comparison |
disk_health_ctx | ESXi disk health | diskName, status, smartStatus, temperature |
eventlog_ctx | Windows Event Log | logName, source, eventId, eventType, message |
fan_ctx | ESXi fan status | fanName, status, rpm |
fs_object_ctx | File/folder size | path, size, threshold, isDirectory |
online_offline_status_ctx | Device online/offline | status, lastSeen, offlineDuration |
patch_ctx | Windows patch status | patchCount, criticalCount, rebootRequired |
perf_disk_usage_ctx | Disk usage/space | drive, usagePercent, freeSpace, usedSpace |
perf_mon_ctx | Windows Performance Counter | counter, instance, value, threshold |
perf_resource_usage_ctx | CPU/Memory usage | resource, usagePercent, duration, processName |
ping_ctx | Network ping | host, latency, packetLoss, status |
process_resource_usage_ctx | Process resource usage | processName, pid, cpuUsage, memoryUsage |
process_status_ctx | Process running/stopped | processName, status, expectedStatus |
psu_ctx | ESXi power supply | psuName, status, wattage |
ransomware_ctx | Ransomware detection | detectionType, path, action, fileCount |
sec_management_ctx | Webroot/security management | product, status, threatCount, licenseExpiry |
srvc_resource_usage_ctx | Windows Service resource usage | serviceName, cpuUsage, memoryUsage |
srvc_status_ctx | Windows Service status | serviceName, status, expectedStatus, startType |
sw_action_ctx | Software install/remove | action, softwareName, version, publisher |
temperature_ctx | ESXi temperature | sensorName, temperature, threshold, status |
wmi_ctx | WMI query monitoring | query, namespace, property, value |
See references/alert-contexts.md for the complete field definitions and example alerts for each context type.
API Patterns
Get All Open Alerts
GET /api/v2/alerts/open
Authorization: Bearer {token}
Get Open Alerts for Site
GET /api/v2/site/{siteUid}/alerts/open
Authorization: Bearer {token}
Get Open Alerts for Device
GET /api/v2/device/{deviceUid}/alerts/open
Authorization: Bearer {token}
Get Resolved Alerts
GET /api/v2/alerts/resolved?max=250
Authorization: Bearer {token}
Get Alerts Since Timestamp
GET /api/v2/alerts/open?since=1707991200000
Authorization: Bearer {token}
Resolve an Alert
POST /api/v2/alert/{alertUid}/resolve
Authorization: Bearer {token}
Content-Type: application/json
{
"resolution": "Cleared disk space by removing temp files"
}
Note: Muting alerts (PUT to /alert/{alertUid}/mute) is deprecated. Use resolve instead.
Workflows
Alert Triage by Priority
async function triageAlerts(client) {
const alerts = await client.request('/api/v2/alerts/open');
const triaged = {
critical: [],
high: [],
moderate: [],
low: [],
information: []
};
alerts.alerts.forEach(alert => {
const bucket = alert.priority.toLowerCase();
if (triaged[bucket]) {
triaged[bucket].push(alert);
}
});
return triaged;
}
Context-Aware Alert Handling
function getAlertRecommendation(alert) {
const ctx = alert.alertContext;
switch (ctx['@class']) {
case 'perf_disk_usage_ctx':
return {
severity: ctx.usagePercent >= 95 ? 'critical' : 'warning',
action: 'Clear disk space or expand volume',
steps: [
'Run Disk Cleanup utility',
'Clear temp files',
'Check for large log files',
'Consider expanding disk'
]
};
case 'srvc_status_ctx':
return {
severity: 'high',
action: `Start the ${ctx.displayName} service`,
steps: [
`Run: net start "${ctx.serviceName}"`,
'Check Event Log for failure reason',
'Verify service account credentials',
'Check dependencies'
]
};
case 'ransomware_ctx':
return {
severity: 'critical',
action: 'IMMEDIATE: Isolate device and investigate',
steps: [
'Disconnect from network immediately',
'Do NOT restart the device',
'Contact security team',
'Preserve evidence',
'Check for lateral movement'
]
};
case 'online_offline_status_ctx':
return {
severity: ctx.offlineDuration > 60 ? 'high' : 'moderate',
action: 'Verify device connectivity',
steps: [
'Ping device from network',
'Check physical connectivity',
'Verify no scheduled maintenance',
'Contact on-site user if available'
]
};
default:
return {
severity: 'moderate',
action: 'Review alert details',
steps: ['Investigate alert context', 'Check device status']
};
}
}
See references/examples.md for batch alert resolution and alert summary report examples.
Error Handling
Common Alert API Errors
| Error | Status | Cause | Resolution |
|---|---|---|---|
| Alert not found | 404 | Invalid alertUid | Verify alert exists |
| Already resolved | 400 | Alert already closed | Check alert state first |
| Permission denied | 403 | API restrictions | Check API permissions |
Error Handling Pattern
async function safeResolveAlert(client, alertUid, resolution) {
try {
await client.request(`/api/v2/alert/${alertUid}/resolve`, {
method: 'POST',
body: JSON.stringify({ resolution })
});
return { success: true };
} catch (error) {
if (error.status === 404) {
return { success: false, reason: 'Alert not found - may already be resolved' };
}
if (error.status === 400) {
return { success: false, reason: 'Alert already resolved' };
}
throw error;
}
}
Best Practices
- Prioritize by severity - Handle Critical and High alerts first
- Use context data - Each @class has specific actionable fields
- Document resolutions - Include what was done and outcome
- Set up escalation - Auto-escalate stale high-priority alerts
- Monitor patterns - Repeated alerts may indicate larger issues
- Use site filtering - Scope alerts to relevant sites when possible
- Handle ransomware specially - Immediate isolation protocol
- Track resolution time - Measure alert-to-resolution duration
- Correlate alerts - Multiple alerts may share root cause
- Review resolved alerts - Learn from past incidents
Alert Priority Matrix
| Context Type | Typical Priority | Notes |
|---|---|---|
ransomware_ctx | Critical | Always immediate action |
online_offline_status_ctx (server) | High | Business impact |
perf_disk_usage_ctx (>95%) | High | Data loss risk |
srvc_status_ctx (critical service) | High | Service impact |
antivirus_ctx (threat detected) | High | Security risk |
perf_resource_usage_ctx | Moderate | Performance impact |
patch_ctx (critical patches) | Moderate | Security debt |
eventlog_ctx | Varies | Based on event severity |
sw_action_ctx | Low | Informational |
Related Skills
- Datto RMM Devices - Device management
- Datto RMM Sites - Site-level alert views
- Datto RMM Jobs - Remediation jobs
- Datto RMM API Patterns - Authentication and pagination
Frequently asked questions
What to verify before installation and use
What does the Datto RMM Alerts source document cover?
Datto RMM alert structure, priorities, and the 25+ alert context types (antivirus_ctx, eventlog_ctx, perf_disk_usage_ctx, ransomware_ctx, and more), each with its own type-specific fields. Covers alert resolution workflows and context-specific triage guidance.
How do I install Datto RMM Alerts?
The source record exposes this install command: npx skills add https://github.com/WYRE-AI/msp-claude-plugins --skill "msp-claude-plugins/kaseya/datto-rmm/skills/alerts". Inspect the command and pinned source before running it.
Which permission-related actions were detected?
Static rules flagged network in the source; the page lists the matching lines and excerpts.
Alternatives
Compare before choosing
coreyhaines31/marketingskills
ab-testing
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
garrytan/gbrain
bulk-ingestion
End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.
alirezarezvani/claude-skills
app-store-optimization
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
dotnet/skills
migrate-vstest-to-mtp
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing