From cron-openclaw
Guide for creating and managing cron jobs and scheduled tasks in OpenClaw. Use this skill when the user wants to schedule periodic tasks, set up reminders, batch automated checks, configure the OpenClaw Gateway scheduler, or decide between using a cron job versus a heartbeat. Triggers include "create a cron job", "schedule a task", "remind me in", "run every", "automate this check", "cron vs heartbeat".
How this skill is triggered — by the user, by Claude, or both
Slash command
/cron-openclaw:cron-openclawThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides instructions for configuring, managing, and reasoning about the OpenClaw Gateway scheduler for cron jobs.
This skill provides instructions for configuring, managing, and reasoning about the OpenClaw Gateway scheduler for cron jobs.
OpenClaw has two primary ways to run automated tasks: Cron and Heartbeat. It's important to choose the right one for the job.
--at flag (e.g., "Remind me in 20 minutes").--session main): Enqueues a system event (using --system-event), which the agent handles during the next heartbeat (or immediately if --wake now) with full conversational context.--session isolated): Runs with a clean slate, without prior context. Use --message instead of --system-event. Ideal for independent tasks that announce directly to a channel without cluttering main history.--session current): Binds to the session where the cron is created.--session session:<custom-id>): Maintains persistent context across runs.Isolated Recurring Job (e.g., Morning Briefing):
openclaw cron add \
--name "Morning briefing" \
--cron "0 7 * * *" \
--tz "America/New_York" \
--session isolated \
--message "Generate today's briefing: weather, calendar, top emails, news summary." \
--model opus \
--announce \
--channel whatsapp \
--to "+15551234567"
Main Session One-Shot Reminder:
openclaw cron add \
--name "Meeting reminder" \
--at "20m" \
--session main \
--system-event "Reminder: standup meeting starts in 10 minutes." \
--wake now \
--delete-after-run
--stagger <duration> (e.g., --stagger 30s) or completely disable staggering for precise execution with --exact.--announce: Posts directly without waiting for a heartbeat.--no-deliver: Suppresses any delivery.--light-context reduces context overhead for simple queries.--agent <name> pins the job to a specific agent (e.g., --agent ops).openclaw cron listopenclaw cron run <jobId>openclaw cron runs --id <jobId> (Use --limit 50 for more history)openclaw cron edit <jobId> --model "opus" --thinking low
openclaw cron edit <jobId> --announce --channel telegram --to "123456789"
openclaw cron edit <jobId> --no-deliver
openclaw cron edit <jobId> --clear-agent~/.openclaw/cron/jobs.json.cron.add):
schedule.kind: 'at', 'every' (uses everyMs), or 'cron' (uses expr and optional tz).wakeMode: Defaults to 'now'. Can be 'next-heartbeat'.payload: Use { "kind": "systemEvent", "text": "..." } for main session, or { "kind": "agentTurn", "message": "..." } for isolated.deleteAfterRun: Automatically set to true for at schedules if omitted.--session main, --system-event, and --delete-after-run.--session isolated, --message, --announce, --channel, and --to.notify: true with a cron.webhook, migrate them to the new delivery webhook configuration using:
openclaw doctor --fix
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub mbadoz/mbadoz-skills --plugin cron-openclaw