Install
openclaw skills install job-execution-monitorMonitor scheduled cron jobs hourly, alerting you only if jobs fail or miss their expected run time with tracked alert state to avoid spam.
openclaw skills install job-execution-monitorMonitor scheduled jobs (cron) and alert when they fail or miss their schedule.
Install:
clawhub install job-execution-monitor
Update:
clawhub update job-execution-monitor
Use when the user asks to:
Heartbeat-based monitoring:
Cost: ~100k tokens/day (~48 checks × 2k tokens)
job-execution-monitor.jsonsystemctl --user stop openclaw-job-execution-monitor.timer
systemctl --user disable openclaw-job-execution-monitor.timer
systemctl --user daemon-reload
# Optional: remove unit files
rm -f ~/.config/systemd/user/openclaw-job-execution-monitor.service \
~/.config/systemd/user/openclaw-job-execution-monitor.timer
crontab -l | sed '/job-execution-monitor\/scripts\/healthcheck\.sh/d' | crontab -
rm -f ~/.openclaw/workspace/job-execution-monitor.json
rm -f ~/.openclaw/workspace/.job-execution-monitor-state.json
rm -f ~/.openclaw/workspace/job-execution-monitor.log
File: ~/.openclaw/workspace/job-execution-monitor.json
{
"checkIntervalMin": 60,
"jobs": {
"Daily 21:00 journaling (projects + accomplishments + next day plan)": {
"schedule": "0 22 * * *",
"tolerance": 600,
"critical": true,
"expectedMinLength": 200,
"errorPatterns": ["error", "failed", "Pong", "token overflow"]
}
}
}
Fields:
schedule: cron expression for expected run timetolerance: grace period in seconds (default 600 = 10min)critical: if true, alerts immediately (future: could escalate)expectedMinLength: minimum response length (phase 2)errorPatterns: text patterns that indicate failure (phase 2)File: ~/.openclaw/workspace/.job-execution-monitor-state.json
{
"lastCheck": 1771025000,
"alerts": {
"daily-wrap-up_missed": 1771024500
}
}
lastCheck: unix timestamp of last checkalerts: map of alert_key → timestamp (prevents spam)In HEARTBEAT.md:
## Job Execution Monitor (every ~60min, rotate)
Check cron jobs for missed schedules. Only alert if problem found.
**Instructions:**
1. Load `job-execution-monitor.json` config
2. Call `cron list`
3. For each job in config:
- Extract `state.lastRunAtMs` and `state.lastStatus`
- Parse schedule (e.g., "0 22 * * *" = 22:00 daily)
- If last run > (expected time + tolerance): **ALERT**
- If last run recent: **SILENT**
4. On alert: send wake event with job name, expected time, last run time
5. On recovery (was alerting before, now OK): send recovery wake event
**State tracking:** `~/.openclaw/workspace/.job-execution-monitor-state.json`
- Track which jobs already alerted (don't spam)
- Clear alert flag when job recovers
**Rotate check:** Only run every ~4th heartbeat (once/hour if heartbeat is 15min)
Scenario 1: Job missed
🔴 Job Execution Monitor: "daily-wrap-up" missed schedule
Expected: 22:00 ±10min
Last run: 5h 32m ago
Checking logs...
Scenario 2: Job recovered
✅ Job Execution Monitor: "daily-wrap-up" recovered
Last run: 22:02 (2min ago)
Scenario 3: All OK
(silent - no wake event, no alert)
Per check (~2k tokens):
Daily (~48 checks):
Compared to alternatives:
SKILL.md - This documentationREADME.md - Quick startconfig/job-execution-monitor.example.json - Config templatescripts/patterns.json - Error patterns (phase 2)~/workspace/job-execution-monitor.json - User config~/workspace/.job-execution-monitor-state.json - Alert stateSmart monitoring, minimal cost.
Phase 1 complete. ✅
Phase 2 (pattern matching): Coming soon.
Phase 3 (structured validation): Future.