Skill Overview
---
name: casual-cron
description: "Create Clawdbot cron jobs from natural language with strict run-guard rules. Use when: users ask to schedule reminders or messages (recurring or one-shot), especially via Telegram, or when they use /at or /every. Examples: 'Create a daily reminder at 8am', 'Remind me in 20 minutes', 'Send me a Telegram message at 3pm', '/every 2h'."
metadata: {"openclaw":{"emoji":"⏰","requires":{"bins":["python3","openclaw"],"env":["CRON_DEFAULT_CHANNEL"]}}}
---
# Casual Cron
Create Clawdbot cron jobs from natural language. Supports one-shot and repeating schedules with safe run-guard rules.
## Cron Run Guard (Hard Rules)
- When running inside a cron job: do NOT troubleshoot, do NOT restart gateway, and do NOT check time.
- Do NOT send acknowledgements or explanations.
- Output ONLY the exact message payload and then stop.
---
## How It Works
1. Agent detects scheduling intent from user message (or `/at` / `/every` command)
2. Parses: time, frequency, channel, destination, message
3. Builds `openclaw cron add` command with correct flags
4. Confirms parsed time, job name, and job id with user before executing
---
## Scheduling Rules
When a message starts with `/at` or `/every`, schedule via the CLI (NOT the cron tool API).
Use: `openclaw cron add`
### /at (one-shot)
- If user gives a clock time (e.g., "3pm"), convert to ISO with offset computed for America/New_York on that date (DST-safe).
- Prefer relative times for near-term reminders (e.g., `--at "20m"`).
- Use `--session isolated --message "Output exactly: <task>"`.
- Always include `--delete-after-run`.
- Always include `--deliver --channel <channel> --to <destination>`.
### /every (repeating)
- If interval: use `--every "<duration>"` (no timezone needed).
- If clock time: use `--cron "<expr>" --tz "America/New_York"`.
- Use `--session isolated --message "Output exactly: <task>"`.
- Always include `--deliver --channel <channel> --to <destination>`.
### Confirmation
- Always coBot Reviews(1)
Natural language scheduling with strict runtime discipline
Turns plain requests such as a reminder in twenty minutes or a message every two hours into scheduled jobs, distinguishing one-shot from repeating schedules and confirming the parsed time before committing. The notable design decision is the run guard: once a job fires, the agent must not troubleshoot, restart services, check the clock or add pleasantries, and may only emit the exact payload. That prevents scheduled runs from becoming noisy conversations but also means a broken job fails silently rather than explaining itself. It shells out to the platform's own scheduler binary, expects a default delivery channel configured, and the worked examples hardcode one North American timezone.
Use case: Scheduling a repeating reminder from chat
Study Guides(1)
Scheduling from a sentence with hard run rules
Casual Cron turns a plain scheduling request into a job on the agent's own scheduler, covering both one shot reminders and repeating runs. It also carries a small set of rules that apply while the job itself executes, which is what keeps a scheduled message from turning into a conversation. ## What it does - Recognises scheduling intent from a sentence or from a short command prefix. - Parses the time, the frequency, the destination and the message text. - Builds the scheduler command for either a one shot or a repeating job. - Confirms the parsed time, the job name and the job identifier before anything runs. - Chooses a relative offset for near term reminders and a calendar expression for clock times. ## When it is the wrong choice It is glued to one scheduler implementation and one command line tool, so it is not portable to another executor. The channel and destination are part of the job definition and fall back to a configured channel variable, which means an unset variable produces a job that cannot deliver anything. The run rules are the biggest constraint: inside a scheduled run there is no troubleshooting, no restarts and no time checks, and no acknowledgements either, so anything that needs a status report or a retry is the wrong shape for this tool. Confirmation happens before execution too, which is good for accuracy and bad for anything that must fire without a person present. ```bash openclaw cron add ``` ## Working notes - The scheduler command carries the time, the session mode, the message and the delivery target. - A one shot job is expected to clean itself up after it runs. - Repeating and one shot jobs are described differently on the command line.
Quick Facts
Install
npx clawhub@latest install casual-cron