Casual Cron

v1.2.0

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

1· 2.9k·10 current·10 all-time
bygostlight@gostlightai·fork of @i-mw/cron-mastery
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description align with required binaries (python3, openclaw) and the CRON_DEFAULT_CHANNEL env var. The skill only needs an OpenClaw CLI to add cron jobs and an optional default channel — these are proportionate to the stated purpose.
Instruction Scope
SKILL.md instructs building and (after confirmation) running openclaw cron add commands; that matches the parser/builder code. Minor inconsistency: SKILL.md says to 'confirm parsed time, job name, and job id with user before executing' — job id is only available after creating the job, so confirmation flow may be misstated. Otherwise instructions do not request unrelated files, envs, or external endpoints.
Install Mechanism
No install spec (instruction-only) and provided code files are local. No downloads or third-party package installs are declared, so there is no elevated install risk.
Credentials
Only CRON_DEFAULT_CHANNEL is required (used to choose a default delivery channel). No tokens, passwords, or unrelated credentials are requested. The code defaults to placeholders for destinations when none are parsed.
Persistence & Privilege
Skill is not always-included and does not request system-wide config changes. It builds and (when executed by the agent) runs CLI commands to schedule jobs — appropriate for a scheduling skill. Autonomous invocation is allowed by platform default but is not combined with other red flags here.
Assessment
This skill appears to do exactly what it says: parse natural-language reminders and build openclaw cron add commands. Before installing, confirm: (1) you have a trusted openclaw binary on PATH (the skill runs that CLI), (2) CRON_DEFAULT_CHANNEL is set to an acceptable default if you rely on it, and (3) your agent's execution policy requires explicit user confirmation before running the constructed openclaw commands (the SKILL.md claims confirmation, but job id can only be known after creation). Note the skill can schedule messages to arbitrary destinations (phone numbers/handles), so ensure your agent won't be allowed to create jobs without human oversight and periodically audit scheduled jobs. The repository contains duplicate script/test copies and slightly inconsistent metadata (minor housekeeping issue) but nothing that indicates hidden exfiltration or unrelated credential access.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Clawdis
Binspython3, openclaw
EnvCRON_DEFAULT_CHANNEL
latestvk9730szpy66y4mgnzx3d5y20as80yg2p
2.9kdownloads
1stars
6versions
Updated 1mo ago
v1.2.0
MIT-0

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

SettingValue
Default timezoneAmerica/New_York (DST-aware)
Default channeltelegram (override via CRON_DEFAULT_CHANNEL env var)
Supported channelstelegram, whatsapp, slack, discord, signal

Supported Patterns

Time Formats

InputCron
8am0 8 * * *
8:45pm45 20 * * *
noon0 12 * * *
midnight0 0 * * *
14:3030 14 * * *

Frequencies

InputBehavior
daily / every dayDaily at specified time
weekdays / mon-friMon-Fri at specified time
mondays / every mondayWeekly on Monday
hourly / every hourEvery hour at :00
every 2 hours0 */2 * * *
weeklyWeekly (defaults to Monday)
monthlyMonthly (1st of month)

Comments

Loading comments...