home / skills / windmill-labs / windmill / schedules

This skill helps you configure and manage cron schedules for automated scripts and flows in Windmill, enabling reliable timed executions.

npx playbooks add skill windmill-labs/windmill --skill schedules

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
1.3 KB
---
name: schedules
description: MUST use when configuring schedules.
---

# Windmill Schedules

Schedules run scripts and flows automatically on a cron schedule.

## File Naming

Schedule files use the pattern: `{path}.schedule.yaml`

Example: `f/folder/daily_sync.schedule.yaml`

Note: The path is derived from the filename, not stored in the file content.

## Cron Expression Format

Windmill uses 6-field cron expressions (includes seconds):

```
 ┌───────────── second (0-59)
 │ ┌───────────── minute (0-59)
 │ │ ┌───────────── hour (0-23)
 │ │ │ ┌───────────── day of month (1-31)
 │ │ │ │ ┌───────────── month (1-12 or jan-dec)
 │ │ │ │ │ ┌───────────── day of week (0-6, 0=Sunday, or sun-sat)
 │ │ │ │ │ │
 * * * * * *
```

**Common Examples:**
- `0 0 0 * * *` - Daily at midnight
- `0 0 12 * * *` - Daily at noon
- `0 */5 * * * *` - Every 5 minutes
- `0 0 9 * * 1-5` - Weekdays at 9 AM
- `0 0 0 1 * *` - First day of each month

## CLI Commands

```bash
# Push schedules to Windmill
wmill sync push

# Pull schedules from Windmill
wmill sync pull

# List schedules
wmill schedule
```

Overview

This skill provides practical guidance for configuring and managing schedules that run scripts and flows automatically on cron schedules. It explains the required file naming, the 6-field cron format (including seconds), and the CLI commands used to push, pull, and list schedules. Use it whenever you need reliable, repeatable automation for workflows.

How this skill works

Schedules are defined as YAML files named with the pattern {path}.schedule.yaml; the schedule path is derived from the filename. Each schedule uses a six-field cron expression (seconds, minutes, hours, day of month, month, day of week) to control execution. The CLI lets you push schedule files to the platform, pull them back for editing, and list active schedules.

When to use it

  • Automate periodic data syncs, backups, or maintenance tasks.
  • Run ETL jobs or workflow flows on a fixed cadence (every minute, hourly, daily).
  • Trigger weekday-only jobs like reports or notifications.
  • Schedule monthly or first-of-month tasks such as billing or summary generation.
  • Manage many scheduled jobs as code in source control.

Best practices

  • Name files using the exact {path}.schedule.yaml pattern so paths map correctly to schedules.
  • Include seconds in cron expressions to avoid ambiguity; platform expects six fields.
  • Prefer descriptive file paths (e.g., f/folder/daily_sync.schedule.yaml) to make intent and scope clear.
  • Test schedules locally or with a short interval before switching to production cadence.
  • Keep schedule configuration in version control and use the CLI sync commands to deploy changes.

Example use cases

  • daily_sync.schedule.yaml to run a nightly database sync at 00:00:00.
  • health_check.schedule.yaml running every 5 minutes to monitor service status.
  • weekday_report.schedule.yaml executing at 09:00:00 Monday–Friday to email summaries.
  • monthly_billing.schedule.yaml triggering the first day of each month to generate invoices.

FAQ

What cron format does the platform use?

It uses a six-field cron with seconds first: second minute hour day month day-of-week.

How do I deploy schedule changes?

Use the CLI: 'wmill sync push' to upload schedule files, 'wmill sync pull' to fetch them, and 'wmill schedule' to list active schedules.