Skill: promadgenius/ez-cronjob (version 1.0.0)

--- 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.*


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: suspicious | SkillSpector: clean (LOW)