# Schedule

> Create, list, update, or cancel scheduled tasks and reminders. Use whenever the user asks to be reminded, wants something to happen at a specific time, sets up recurring checks, or asks about upcoming scheduled items.

- Skill: `dcramer/schedule` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dcramer/schedule`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dcramer/schedule/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dcramer (https://skillmd.com/u/dcramer)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dcramer/schedule

---


Manage scheduled tasks and reminders using the `ash-sb schedule` CLI.

## Commands

| Command | Description |
|---------|-------------|
| `ash-sb schedule create "msg" --at <time>` | One-time reminder/task (natural language or ISO 8601) |
| `ash-sb schedule create "msg" --cron "<expr>" [--tz TZ]` | Recurring task on a cron schedule |
| `ash-sb schedule list [--all]` | List scheduled tasks (current room by default) |
| `ash-sb schedule cancel --id <id>` | Cancel a scheduled task |
| `ash-sb schedule update --id <id> [--message MSG] [--at TIME] [--cron EXPR] [--tz TZ]` | Update an existing task |

## When to Use `--at` vs `--cron`

| Flag | Use for | Examples |
|------|---------|----------|
| `--at` | One-time reminders and future tasks | "remind me tomorrow at 9am", "check the build in 2 hours" |
| `--cron` | Recurring monitoring, daily summaries, periodic checks | "every weekday at 10am", "every 15 minutes" |

For continuous monitoring, prefer recurring cron checks; use self-rescheduling only when cadence must change dynamically.

## Timezone Handling

- Times default to the user's local timezone. Use `--tz` only when the user specifies a different timezone, including explicit UTC requests.
- If the user specifies a time with an explicit timezone (e.g. "10am ET"), preserve that wall-clock time in that timezone. Example: `10am ET` → `--cron '0 10 * * *' --tz America/New_York` (not a converted hour).
- When a single request includes times in different timezones, create each schedule with its own `--tz` matching the user-specified timezone for that item.

## Task Messages

Write scheduled task messages as self-contained future instructions. The message should make sense when executed later without conversational context.

Good: `"Check the GitHub Actions build status for the main branch and report any failures"`
Bad: `"Check the build"` (ambiguous without context)

## Cron Format

Standard 5-field cron: `minute hour day month weekday`

| Expression | Meaning |
|------------|---------|
| `0 8 * * *` | Daily at 8 AM |
| `0 9 * * 1` | Mondays at 9 AM |
| `0 10 * * 1-5` | Weekdays at 10 AM |
| `*/15 * * * *` | Every 15 minutes |
| `0 0 1 * *` | First of each month at midnight |

## Output Format

Format your `complete()` output exactly as shown below. This is critical — the parent agent relays your output directly.

**After creating a schedule:**

```
Scheduled: Check GitHub Actions build status — tomorrow at 9am
```

```
Scheduled: Daily standup reminder — every weekday at 10am PT
```

**Listing schedules:**

```
- Check GitHub Actions build status — tomorrow at 9am (one-time)
- Daily standup reminder — every weekday at 10am PT (recurring)
```

**After cancel/update:**

```
Cancelled: Daily standup reminder
```

**Formatting rules:**

- Show dates conversationally ("tomorrow at 3pm", "next Monday at 9am") — never raw ISO timestamps
- Hide internal IDs — never show them unless the user asks or a follow-up needs one
- Only claim success after the command produces success output

## Error Handling

- If a command fails, report the error message and stop
- Do not attempt to fix or debug failed commands unless the user asks
- If an ID is needed for cancel/update but not known, list tasks first to find it

