Compatible with Claude Code, Codex CLI, Cursor, Windsurf, and any SKILL.md-compatible agent.
Cron Doctor
Diagnose and triage cron job failures.
Usage
When asked to check cron health or diagnose failures:
1. List All Jobs
# List user's crontab
crontab -l
# List system crontabs
sudo cat /etc/crontab
ls -la /etc/cron.d/
2. Check Recent Execution
# Check cron logs (location varies by system)
# Debian/Ubuntu:
grep CRON /var/log/syslog | tail -50
# RHEL/CentOS:
tail -50 /var/log/cron
# macOS:
log show --predicate 'process == "cron"' --last 1h
# Check for specific job output
grep "your_job_name" /var/log/syslog | tail -20
3. Identify Problems
Error patterns to watch:
"command not found"— Missing executable or PATH issue"Permission denied"— File/directory permissions wrong"No such file or directory"— Script path incorrect"timeout"— Job took too long"ECONNREFUSED"— Network/service down"rate limit"— API throttling- Missing output — Job may not be running at all
4. Triage Priority
| Priority | Criteria |
|---|---|
| 🔴 Critical | Trading, backup, security jobs |
| 🟠 High | User-facing deliveries |
| 🟡 Medium | Monitoring, research jobs |
| 🟢 Low | Nice-to-have, non-essential |
5. Generate Report
Write to ~/workspace/reports/cron-health-YYYY-MM-DD.md:
# Cron Health Report - [DATE]
## Summary
- ✅ Healthy: X jobs
- ⚠️ Warning: X jobs
- ❌ Failed: X jobs
## Failed Jobs
### [Job Name]
- **Error:** [message]
- **Last Success:** [date]
- **Priority:** [level]
- **Fix:** [suggested action]
## Recommendations
1. [Action item]
2. [Action item]
6. Common Fixes
| Error | Fix |
|---|---|
| Command not found | Use full path to executable, or set PATH in crontab |
| Permission denied | Check file permissions, run chmod +x script.sh |
| No output | Add >> /tmp/job.log 2>&1 to capture output |
| Wrong timezone | Set TZ= in crontab or use system timezone |
| Rate limit | Reduce frequency or add backoff |
7. Debugging Tips
# Test cron environment (cron has minimal PATH)
env -i /bin/sh -c 'echo $PATH'
# Verify script runs manually
/path/to/your/script.sh
# Check if cron daemon is running
systemctl status cron # Linux
launchctl list | grep cron # macOS
Escalation
If 3+ critical jobs failed, alert the user immediately.
Verification Gates
Before claiming diagnosis complete:
- All failed jobs listed — none skipped or ignored
- Priority assigned — based on impact, not just recency
- Fix suggested — actionable next step for each failure
- Report written — to
~/workspace/reports/cron-health-YYYY-MM-DD.md - Critical failures escalated — 3+ critical = alert user