Install
openclaw skills install create-cron-jobCreate and configure OpenClaw cron jobs with correct scheduling, execution modes, and delivery patterns. Use when asked to schedule a task, set up a recurring job, create a reminder, run something at a specific time, or automate a periodic operation.
openclaw skills install create-cron-jobSet up a scheduled task per conventions/cron.md. Read the convention first.
Need a periodic check instead? Consider HEARTBEAT.md — see "Cron vs Heartbeat" in conventions/cron.md.
Determine:
| Question | If yes | If no |
|---|---|---|
| Does the task need recent conversation context? | Main session | Isolated |
| Does the agent need its AGENTS.md/SOUL.md? | Isolated (normal) | Isolated + lightContext |
| Is this a one-shot reminder? | --at with --delete-after-run | Recurring schedule |
Format: <agent-id>-<purpose> in kebab-case.
Examples: auditor-daily-report, archivist-daily-backup, reminder-standup-meeting
| Pattern | CLI flag | Example |
|---|---|---|
| Cron expression | --cron | --cron "0 7 * * *" (7 AM daily) |
| Fixed interval | --every | --every "4h" |
| One-shot (relative) | --at | --at "20m" |
| One-shot (absolute) | --at | --at "2026-03-15T09:00:00Z" |
Always set timezone for cron expressions: --tz "America/Los_Angeles"
Main session (task needs conversational context):
openclaw cron add \
--name "<agent-id>-<purpose>" \
--every "<interval>" \
--session main \
--system-event "<instruction text>" \
--wake now
Isolated (standalone task):
openclaw cron add \
--name "<agent-id>-<purpose>" \
--cron "<expr>" \
--tz "<timezone>" \
--session isolated \
--message "<instruction text>" \
--agent <agent-id> \
--announce \
--channel <channel> \
--to "<target>"
Isolated + lightweight context (simple, self-contained chore):
openclaw cron add \
--name "<agent-id>-<purpose>" \
--every "<interval>" \
--session isolated \
--message "<self-contained instruction>" \
--light-context \
--announce
One-shot reminder:
openclaw cron add \
--name "reminder-<purpose>" \
--at "<time>" \
--session isolated \
--message "<reminder text>" \
--announce \
--delete-after-run
Always use --agent <agent-id> for agent-specific jobs.
--announce --channel <ch> --to "<target>"--webhook <url>## Scheduled Tasks
| Job | Schedule | Message | Action |
|---|---|---|---|
| `<job-name>` | `<schedule>` | `<message>` | <what the agent does> |
If the cron job executes scripts (not just a self-contained message), create a skill using the create-skill skill:
workspace/skills/<skill-name>/scripts/, not in ad-hoc workspace directoriesconventions/skills.md for where files belongSkip if the cron job's message is fully self-contained (no external scripts or supporting files).
openclaw cron run <jobId> # Force immediate execution
openclaw cron list # Verify job exists
openclaw cron runs --id <jobId> # Check run history
<agent-id>-<purpose> kebab-case convention--tz)--agent binding for agent-specific jobsopenclaw cron run <jobId>--delete-after-runworkspace/skills/<name>/ with scripts in its scripts/ subdirconventions/skills.md)