Skip to main content
ClaudeWave
Skill48k repo starsupdated yesterday

cron

The cron skill schedules reminders, recurring tasks, and one-time notifications using flexible time expressions. Use it when you need to send direct messages to users at intervals, have an agent execute tasks periodically and report results, or trigger actions at specific times. It supports interval-based scheduling (every_seconds), cron expressions for complex patterns, timezone-aware scheduling, and job management through add, list, and remove actions.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/HKUDS/nanobot /tmp/cron && cp -r /tmp/cron/nanobot/skills/cron ~/.claude/skills/cron
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Cron

Use the `cron` tool to schedule reminders or recurring tasks that should report back to the originating chat/session when they run.

Do not use `cron` for periodic background checks that should stay quiet when there is nothing useful to report. For those, update `HEARTBEAT.md`; the protected heartbeat job runs those checks and only delivers results that pass the notification gate.

## Three Modes

1. **Reminder** - message is sent directly to user
2. **Task** - message is a task description, agent executes and sends result
3. **One-time** - runs once at a specific time, then auto-deletes

## Examples

Fixed reminder:
```
cron(action="add", message="Time to take a break!", every_seconds=1200)
```

Dynamic task (agent executes each time):
```
cron(action="add", message="Check HKUDS/nanobot GitHub stars and report", every_seconds=600)
```

One-time scheduled task (compute ISO datetime from current time):
```
cron(action="add", message="Remind me about the meeting", at="<ISO datetime>")
```

Timezone-aware cron:
```
cron(action="add", message="Morning standup", cron_expr="0 9 * * 1-5", tz="America/Vancouver")
```

List/remove:
```
cron(action="list")
cron(action="remove", job_id="abc123")
```

## Time Expressions

| User says | Parameters |
|-----------|------------|
| every 20 minutes | every_seconds: 1200 |
| every hour | every_seconds: 3600 |
| every day at 8am | cron_expr: "0 8 * * *" |
| weekdays at 5pm | cron_expr: "0 17 * * 1-5" |
| 9am Vancouver time daily | cron_expr: "0 9 * * *", tz: "America/Vancouver" |
| at a specific time | at: ISO datetime string (compute from current time) |

## Timezone

Use `tz` with `cron_expr` to schedule in a specific IANA timezone. Without `tz`, the server's local timezone is used.