casual-cron
v1.2.0Create 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 Teleg...
Installation
Please help me install the skill `casual-cron` from SkillHub official store.
npx skills add gostlightai/casual-cron
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
- Agent detects scheduling intent from user message (or
/at//everycommand) - Parses: time, frequency, channel, destination, message
- Builds
openclaw cron addcommand with correct flags - 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 confirm parsed time, job name, and job id with the user before finalizing.
Command Reference
One-shot (clock time, DST-aware):
openclaw cron add
--name "Reminder example"
--at "2026-01-28T15:00:00-05:00"
--session isolated
--message "Output exactly: <TASK>"
--deliver --channel telegram --to <TELEGRAM_CHAT_ID>
--delete-after-run
One-shot (relative time):
openclaw cron add
--name "Reminder in 20m"
--at "20m"
--session isolated
--message "Output exactly: <TASK>"
--deliver --channel telegram --to <TELEGRAM_CHAT_ID>
--delete-after-run
Repeating (clock time, DST-aware):
openclaw cron add
--name "Daily 3pm reminder"
--cron "0 15 * * *" --tz "America/New_York"
--session isolated
--message "Output exactly: <TASK>"
--deliver --channel telegram --to <TELEGRAM_CHAT_ID>
Repeating (interval):
openclaw cron add
--name "Every 2 hours"
--every "2h"
--session isolated
--message "Output exactly: <TASK>"
--deliver --channel telegram --to <TELEGRAM_CHAT_ID>
Configuration
| Setting | Value |
|---|---|
| Default timezone | America/New_York (DST-aware) |
| Default channel | telegram (override via CRON_DEFAULT_CHANNEL env var) |
| Supported channels | telegram, whatsapp, slack, discord, signal |
Supported Patterns
Time Formats
| Input | Cron |
|---|---|
8am |
0 8 * * * |
8:45pm |
45 20 * * * |
noon |
0 12 * * * |
midnight |
0 0 * * * |
14:30 |
30 14 * * * |
Frequencies
| Input | Behavior |
|---|---|
daily / every day |
Daily at specified time |
weekdays / mon-fri |
Mon-Fri at specified time |
mondays / every monday |
Weekly on Monday |
hourly / every hour |
Every hour at :00 |
every 2 hours |
0 */2 * * * |
weekly |
Weekly (defaults to Monday) |
monthly |
Monthly (1st of month) |