back
loading skill details...
Create monitors for anything. User defines what to check, skill handles scheduling and alerts.
---
name: Monitor
slug: monitor
version: 1.0.2
description: Create monitors for anything. User defines what to check, skill handles scheduling and alerts.
changelog: Declared required binaries and optional env vars in metadata
metadata: {"clawdbot":{"emoji":"๐ก","requires":{"bins":["curl"],"env":{"optional":["PUSHOVER_TOKEN","PUSHOVER_USER"]}},"os":["linux","darwin","win32"]}}
---
## Data Storage
```
~/monitor/
โโโ monitors.json # Monitor definitions
โโโ config.json # Alert preferences
โโโ logs/ # Check results
โโโ {name}/YYYY-MM.jsonl
```
Create on first use: `mkdir -p ~/monitor/logs`
## Scope
This skill:
- โ
Stores monitor definitions in ~/monitor/
- โ
Runs checks at specified intervals
- โ
Alerts user on status changes
**Execution model:**
- User explicitly defines WHAT to monitor
- User grants any permissions/tools needed
- Skill only handles WHEN and ALERTING
This skill does NOT:
- โ Assume access to any service or endpoint
- โ Run checks without user-defined instructions
- โ Store credentials (user provides via environment or other skills)
## Requirements
**Required:**
- `curl` โ for HTTP checks
**Optional (for alerts):**
- `PUSHOVER_TOKEN` / `PUSHOVER_USER` โ for push notifications
- Webhook URL โ user provides their own endpoint
**Used if available:**
- `openssl` โ for SSL certificate checks
- `pgrep` โ for process checks
- `df` โ for disk space checks
- `nc` โ for port checks
## Quick Reference
| Topic | File |
|-------|------|
| Monitor type examples | `templates.md` |
| Alert configuration | `alerts.md` |
| Analysis patterns | `insights.md` |
## Core Rules
### 1. User Defines Everything
When user requests a monitor:
1. **WHAT**: User specifies what to check
2. **HOW**: User provides method or grants tool access
3. **WHEN**: This skill handles interval
4. **ALERT**: This skill handles notifications
Example flow:
```
User: "Monitor my API at api.example.com every 5 minutes"
Agent: "I'll check HTTP status. Alert you on failures?"
User: "Yes, and check SSL cert too"
โ Monitor stored with user-defined checks
```
### 2. Monitor Definition
In ~/monitor/monitors.json:
```json
{
"api_prod": {
"description": "User's API health",
"checks": [
{"type": "http", "target": "https://api.example.com/health"},
{"type": "ssl", "target": "api.example.com"}
],
"interval": "5m",
"alert_on": "change",
"requires": [],
"created": "2024-03-15"
}
}
```
### 3. Common Check Types
User can request any of these (or others):
| Type | What it checks | Tool used |
|------|---------------|-----------|
| http | URL status + latency | curl |
| ssl | Certificate expiry | openssl |
| process | Process running | pgrep |
| disk | Free space | df |
| port | Port open | nc |
| custom | User-defined command | user specifies |
### 4. Confirmation Format
```
โ
Monitor: [description]
๐ Checks: [what will be checked]
โฑ๏ธ Interval: [how often]
๐ Alert: [when to notify]
๐ง Requires: [tools/access needed]
```
### 5. Alert on Change
- Alert when status changes (okโfail, failโok)
- Include failure count
- Recovery message when back to OK
- Never spam repeated same-status
### 6. Permissions
The `requires` field lists what user granted:
- Empty = basic checks only (curl, df, pgrep)
- `["ssh:server1"]` = user granted SSH access
- `["docker"]` = user granted Docker access
Agent asks before assuming any access.
don't have the plugin yet? install it then click "run inline in claude" again.