Back to Skills
    🦞

    ez-cronjob

    Fix common cron job failures in Clawdbot/Moltbot - message

    By @promadgenius
    View on GitHub
    SKILL.md
    ---
    name: ez-cronjob
    description: Fix common cron job failures in Clawdbot/Moltbot - message delivery issues, tool timeouts, timezone bugs, and model fallback problems.
    author: Isaac Zarzuri
    author-url: https://x.com/Yz7hmpm
    version: 1.0.0
    homepage: https://www.metacognitivo.com
    repository: https://github.com/ProMadGenius/clawdbot-skills
    metadata: {"agentskills":{"category":"troubleshooting","tags":["cron","scheduling","telegram","debugging","moltbot","clawdbot"]}}
    ---
    
    # Cron Job Reliability Guide
    
    A comprehensive guide to diagnosing and fixing cron job issues in Clawdbot/Moltbot. This skill documents common failure patterns and their solutions, learned through production debugging.
    
    ## When to Use This Skill
    
    Use this skill when:
    - Scheduled messages aren't being delivered
    - Cron jobs show "error" status
    - Messages arrive at wrong times (timezone issues)
    - The agent times out when using the `cron` tool
    - Fallback models ignore instructions and call tools unexpectedly
    
    ## Quick Reference
    
    ### The Golden Rule
    
    **Always use these flags together for reliable delivery:**
    
    ```bash
    clawdbot cron add \
      --name "my-job" \
      --cron "0 9 * * 1-5" \
      --tz "America/New_York" \
      --session isolated \
      --message "[INSTRUCTION: DO NOT USE ANY TOOLS] Your prompt here" \
      --deliver --channel telegram --to "CHAT_ID" \
      --best-effort-deliver
    ```
    
    ### Essential Flags Explained
    
    | Flag | Purpose | Why It Matters |
    |------|---------|----------------|
    | `--session isolated` | Creates dedicated session | Prevents message loss in busy conversations |
    | `--tz "TIMEZONE"` | Sets explicit timezone | Avoids UTC confusion |
    | `--deliver` | Sends to channel | Required for Telegram/WhatsApp |
    | `--best-effort-deliver` | Don't fail on delivery error | Graceful degradation |
    
    ---
    
    ## Problem 1: Internal `cron` Tool Deadlock
    
    ### Symptoms
    - Agent times out (10s) when calling `cron list` or `cron add`
    - Error: "Tool execution timed out"
    - Gateway logs show 80s+ response times
    
    ### Root Cause
    The internal `cron` tool creates a deadlock between the agent process and gateway.
    
    ### Solution
    **Never use the `cron` tool directly.** Use `exec` (or `bash`) instead:
    
    ```bash
    # CORRECT - uses exec to bypass deadlock
    exec: clawdbot cron list
    exec: clawdbot cron add --name "reminder" --at "+5m" --message "Hello"
    
    # INCORRECT - causes timeout
    cron list        # DO NOT USE
    cron add ...     # DO NOT USE
    ```
    
    ### For Agents
    If you're an AI agent reading this: when the user asks you to manage cron jobs, **always use the exec/bash tool** to run `clawdbot cron` commands. Never invoke the `cron` tool directly.
    
    ---
    
    ## Problem 2: Messages Not Delivered
    
    ### Symptoms
    - Job shows "ok" status but message never arrives
    - Works in testing but fails on schedule
    - Intermittent delivery
    
    ### Root Cause
    Using `--session main` or `--system-event` causes messages to get lost when there's an active conversation in the main session.
    
    ### Solution
    **Always use `--session isolated`:**
    
    ```bash
    # CORRECT - isolated session, guaranteed delivery
    clawdbot cron add \
      --name "daily-standup" \
      --cron "0 9 * * 1-5" \
      --session isolated \
      --deliver --channel telegram --to "-100XXXXXXXXXX"
    
    # INCORRECT - messages can be lost
    clawdbot cron add \
      --name "daily-standup" \
      --session main \
      --system-event \
      ...
    ```
    
    ### Verification
    After creating a job, test it:
    
    ```bash
    # Run the job immediately to verify delivery
    clawdbot cron run <job-id>
    ```
    
    ---
    
    ## Problem 3: Wrong Execution Time
    
    ### Symptoms
    - Job runs 4-5 hours early or late
    - Schedule shows correct time but execution is off
    - Works correctly sometimes, fails other times
    
    ### Root Cause
    Missing timezone specification defaults to UTC.
    
    ### Solution
    **Always specify timezone explicitly:**
    
    ```bash
    # CORRECT - explicit timezone
    clawdbot cron add \
      --cron "0 9 * * 1-5" \
      --tz "America/New_York" \
      ...
    
    # INCORRECT - defaults to UTC
    clawdbot cron add \
      --cron "0 9 * * 1-5" \
      ...
    ```
    
    ### Common Timezone IDs
    
    | Region | Timezone ID |
    |--------|-------------|
    | US Eastern | `America/New_York` |
    | US Pacific | `America/Los_Angeles` |
    | UK | `Europe/London` |
    | Central Europe | `Europe/Berlin` |
    | India | `Asia/Kolkata` |
    | Japan | `Asia/Tokyo` |
    | Australia Eastern | `Australia/Sydney` |
    | Brazil | `America/Sao_Paulo` |
    | Bolivia | `America/La_Paz` |
    
    ---
    
    ## Problem 4: Fallback Models Ignore Instructions
    
    ### Symptoms
    - Primary model works correctly
    - When fallback activates, agent calls tools unexpectedly
    - Agent tries to use `exec`, `read`, or other tools when it shouldn't
    
    ### Root Cause
    Some fallback models (especially smaller/faster ones) don't follow system instructions as strictly as primary models.
    
    ### Solution
    **Embed instructions directly in the message:**
    
    ```bash
    # CORRECT - instruction embedded in message
    clawdbot cron add \
      --message "[INSTRUCTION: DO NOT USE ANY TOOLS. Respond with text only.] 
      
      Generate a motivational Monday message for the team."
    
    # INCORRECT - relies only on system prompt
    clawdbot cron add \
      --message "Generate a motivational Monday message for the team."
    ```
    
    ### Robust Message Template
    
    ```text
    [INSTRUCTION: DO NOT USE ANY TOOLS. Write your response directly.]
    
    Your actual prompt here. Be specific about what you want.
    ```
    
    ---
    
    ## Problem 5: Job Stuck in Error State
    
    ### Symptoms
    - Job status shows "error"
    - Subsequent runs also fail
    - No clear error message
    
    ### Diagnosis
    
    ```bash
    # Check job details
    clawdbot cron show <job-id>
    
    # Check recent logs
    tail -100 /tmp/clawdbot/clawdbot-$(date +%Y-%m-%d).log | grep -i cron
    
    # Check gateway errors
    tail -50 ~/.clawdbot/logs/gateway.err.log
    ```
    
    ### Common Causes and Fixes
    
    | Cause | Fix |
    |-------|-----|
    | Model quota exceeded | Wait for quota reset or switch model |
    | Invalid chat ID | Verify channel ID with `--to` |
    | Bot removed from group | Re-add bot to Telegram group |
    | Gateway not running | `clawdbot gateway restart` |
    
    ### Nuclear Option
    
    If nothing works:
    
    ```bash
    # Remove the problematic job
    clawdbot cron rm <job-id>
    
    # Restart gateway
    clawdbot gateway restart
    
    # Recreate with correct flags
    clawdbot cron add ... (with all recommended flags)
    ```
    
    ---
    
    ## Debugging Commands
    
    ### View All Jobs
    
    ```bash
    clawdbot cron list
    ```
    
    ### Inspect Specific Job
    
    ```bash
    clawdbot cron show <job-id>
    ```
    
    ### Test Job Immediately
    
    ```bash
    clawdbot cron run <job-id>
    ```
    
    ### Check Logs
    
    ```bash
    # Today's logs filtered for cron
    tail -200 /tmp/clawdbot/clawdbot-$(date +%Y-%m-%d).log | grep -i cron
    
    # Gateway errors
    tail -100 ~/.clawdbot/logs/gateway.err.log
    
    # Watch logs in real-time
    tail -f /tmp/clawdbot/clawdbot-$(date +%Y-%m-%d).log | grep --line-buffered cron
    ```
    
    ### Restart Gateway
    
    ```bash
    clawdbot gateway restart
    ```
    
    ---
    
    ## Complete Working Examples
    
    ### Daily Standup Reminder (9 AM, Mon-Fri)
    
    ```bash
    clawdbot cron add \
      --name "daily-standup-9am" \
      --cron "0 9 * * 1-5" \
      --tz "America/New_York" \
      --session isolated \
      --message "[INSTRUCTION: DO NOT USE ANY TOOLS. Write directly.]
    
    Good morning team! Time for our daily standup.
    
    Please share:
    1. What did you accomplish yesterday?
    2. What are you working on today?
    3. Any blockers?
    
    @alice @bob" \
      --deliver --channel telegram --to "-100XXXXXXXXXX" \
      --best-effort-deliver
    ```
    
    ### One-Shot Reminder (20 minutes from now)
    
    ```bash
    clawdbot cron add \
      --name "quick-reminder" \
      --at "+20m" \
      --delete-after-run \
      --session isolated \
      --message "[INSTRUCTION: DO NOT USE ANY TOOLS.]
    
    Reminder: Your meeting starts in 10 minutes!" \
      --deliver --channel telegram --to "-100XXXXXXXXXX" \
      --best-effort-deliver
    ```
    
    ### Weekly Report (Friday 5 PM)
    
    ```bash
    clawdbot cron add \
      --name "weekly-report-friday" \
      --cron "0 17 * * 5" \
      --tz "America/New_York" \
      --session isolated \
      --message "[INSTRUCTION: DO NOT USE ANY TOOLS.]
    
    Happy Friday! Time to wrap up the week.
    
    Please share your weekly highlights and any items carrying over to next week." \
      --deliver --channel telegram --to "-100XXXXXXXXXX" \
      --best-effort-deliver
    ```
    
    ---
    
    ## Checklist for New Cron Jobs
    
    Before creating any cron job, verify:
    
    - [ ] Using `exec: clawdbot cron add` (not the `cron` tool directly)
    - [ ] `--session isolated` is set
    - [ ] `--tz "YOUR_TIMEZONE"` is explicit
    - [ ] `--deliver --channel CHANNEL --to "ID"` for message delivery
    - [ ] `--best-effort-deliver` for graceful failures
    - [ ] Message starts with `[INSTRUCTION: DO NOT USE ANY TOOLS]`
    - [ ] Tested with `clawdbot cron run <id>` after creation
    
    ---
    
    ## Related Resources
    
    - [Clawdbot Cron Documentation](https://docs.molt.bot/tools/cron)
    - [Timezone Database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
    - [Cron Expression Generator](https://crontab.guru/)
    
    ---
    
    *Skill authored by Isaac Zarzuri. Based on production debugging experience with Clawdbot/Moltbot.*