✓ Verified 💻 Development ✓ Enhanced Data

Cron Retry

Auto-retry failed cron jobs on connection recovery.

Rating
4.4 (21 reviews)
Downloads
806 downloads
Version
1.0.0

Overview

Auto-retry failed cron jobs on connection recovery.

Complete Documentation

View Source →

Cron Retry Skill

Automatically detect and retry cron jobs that failed due to network/connection errors.

Quick Start (Heartbeat Integration)

Add this to your HEARTBEAT.md:

markdown
## Cron Recovery Check
Check for cron jobs with lastStatus: "error". If the error matches network patterns (connection error, sendMessage failed, fetch failed, ETIMEDOUT, ECONNREFUSED), retry the job using cron tool with action: "run" and the job ID. Report what was recovered.

That's it. On each heartbeat, failed network jobs get retried automatically.

How It Works

  • On heartbeat, check all cron jobs via cron list
  • Filter for jobs where lastStatus = "error" and enabled = true
  • Check if lastError matches network-related patterns
  • Re-run eligible jobs via cron run
  • Report results

Network Error Patterns (Retryable)

These errors indicate transient network issues worth retrying:

  • Network request.*failed
  • Connection error
  • ECONNREFUSED
  • ETIMEDOUT
  • ENOTFOUND
  • sendMessage.*failed
  • fetch failed
  • socket hang up

What Gets Retried vs Skipped

Retried:

  • Network timeouts
  • Connection refused
  • Message send failures
  • DNS lookup failures
Skipped (not retried):
  • Logic errors (bad config, missing data)
  • Auth failures
  • Disabled jobs
  • Jobs that just ran successfully

Manual Recovery Check

To check and retry failed jobs manually:

bash
# List all jobs and their status
clawdbot cron list

# Find failed jobs
clawdbot cron list | jq '.jobs[] | select(.state.lastStatus == "error") | {name, error: .state.lastError}'

# Retry a specific job
clawdbot cron run --id <JOB_ID>

Agent Implementation

When implementing the heartbeat check:

text
1. Call cron tool with action: "list"
2. For each job in response.jobs:
   - Skip if job.enabled !== true
   - Skip if job.state.lastStatus !== "error"
   - Check if job.state.lastError matches network patterns
   - If retryable: call cron tool with action: "run", jobId: job.id
3. Report: "Recovered X jobs" or "No failed jobs to recover"

Example Scenario

  • 7:00 PM — Evening briefing cron fires
  • Network hiccup — Telegram send fails
  • Job marked lastStatus: "error", lastError: "Network request for 'sendMessage' failed!"
  • 7:15 PM — Connection restored, heartbeat runs
  • Skill detects the failed job, sees it's a network error
  • Retries the job → briefing delivered
  • Reports: "Recovered 1 job: evening-wrap-briefing"

Safety

  • Only retries transient network errors
  • Respects job enabled state
  • Won't create retry loops (checks lastRunAtMs)
  • Reports all recovery attempts

Installation

Terminal bash

openclaw install cron-retry
    
Copied!

💻Code Examples

Check for cron jobs with lastStatus: "error". If the error matches network patterns (connection error, sendMessage failed, fetch failed, ETIMEDOUT, ECONNREFUSED), retry the job using cron tool with action: "run" and the job ID. Report what was recovered.

check-for-cron-jobs-with-laststatus-error-if-the-error-matches-network-patterns-connection-error-sendmessage-failed-fetch-failed-etimedout-econnrefused-retry-the-job-using-cron-tool-with-action-run-and-the-job-id-report-what-was-recovered.txt
That's it. On each heartbeat, failed network jobs get retried automatically.

## How It Works

1. On heartbeat, check all cron jobs via `cron list`
2. Filter for jobs where `lastStatus = "error"` and `enabled = true`
3. Check if `lastError` matches network-related patterns
4. Re-run eligible jobs via `cron run`
5. Report results

## Network Error Patterns (Retryable)

These errors indicate transient network issues worth retrying:

- `Network request.*failed`
- `Connection error`
- `ECONNREFUSED`
- `ETIMEDOUT`
- `ENOTFOUND`
- `sendMessage.*failed`
- `fetch failed`
- `socket hang up`

## What Gets Retried vs Skipped

**Retried:**
- Network timeouts
- Connection refused
- Message send failures
- DNS lookup failures

**Skipped (not retried):**
- Logic errors (bad config, missing data)
- Auth failures
- Disabled jobs
- Jobs that just ran successfully

## Manual Recovery Check

To check and retry failed jobs manually:

clawdbot cron run --id <JOB_ID>

clawdbot-cron-run---id-jobid.txt
## Agent Implementation

When implementing the heartbeat check:
example.sh
# List all jobs and their status
clawdbot cron list

# Find failed jobs
clawdbot cron list | jq '.jobs[] | select(.state.lastStatus == "error") | {name, error: .state.lastError}'

# Retry a specific job
clawdbot cron run --id <JOB_ID>
example.txt
1. Call cron tool with action: "list"
2. For each job in response.jobs:
   - Skip if job.enabled !== true
   - Skip if job.state.lastStatus !== "error"
   - Check if job.state.lastError matches network patterns
   - If retryable: call cron tool with action: "run", jobId: job.id
3. Report: "Recovered X jobs" or "No failed jobs to recover"

Tags

#self_hosted-and-automation

Quick Info

Category Development
Model Claude 3.5
Complexity One-Click
Author jrbobbyhansen-pixel
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install cron-retry