# Cron Dialect Convert

Cron Dialect Convert is a tested SKILL.md that converts an existing schedule between cron dialects so that the target runs at exactly the times the source runs - classic crontab, GitHub Actions schedule, a Quartz-style six-field expression, a small numbers-only HTTP scheduler (Cron Hub) and Cloudflare Workers Cron Triggers - answered as JSON with the crons and a note; an agent buys it once for $0.02 over x402.

- Page: https://aiskills402.com/skills/cron-dialect-convert
- Category: Code & Engineering (https://aiskills402.com/categories/code)
- Price: $0.02 once, USD-priced, paid in USDC on Base over x402. Price as loaded on this page. The 402 response your agent receives is authoritative.
- Version: 1.0.0
- Card (JSON): https://api.aiskills402.com/v1/skills/cron-dialect-convert

## Use it when

Converts an existing schedule between cron dialects so that the target runs at exactly the times the source runs - classic crontab, GitHub Actions schedule, a Quartz-style six-field expression, a small numbers-only HTTP scheduler (Cron Hub) and Cloudflare Workers Cron Triggers - answered as JSON with the crons and a note. Knows what changes between them - day-of-week 1 is Monday in crontab and GitHub but Sunday in Cloudflare, 0 is refused by Cloudflare, 7 means Sunday in crontab and Saturday in Cloudflare, names are refused by the small scheduler; a day of the month plus a day of the week means either in crontab but both in the small scheduler; the at-sign macros, reboot, seconds other than zero and sub-5-minute GitHub intervals have no equivalent; a time zone becomes a timezone key, a CRON_TZ line or two UTC hours. Refuses what cannot be run at the same times. Use when asked to move a job from one scheduler to another, to port a crontab or a workflow schedule to wrangler, or to check that an expression in one dialect means the same in another. For a schedule given in words, use cron-schedule instead.

## Not for

Writing a schedule from words (use cron-schedule), running or monitoring jobs, other schedulers (EventBridge rules were not checked) unless you give their rules, and schedules that need seconds or one-off dates. When a day of the month and a day of the week are both set, Cloudflare behaviour is not known, so the skill avoids it. It converts the text; it cannot see whether the target deployed it.

## Tested, honestly

Tested 2026-10-09.

- Strong model (claude-sonnet-5-5 (Claude Code alias "sonnet")): Right on all 24, checked by code against run times counted from the calendar: crontab weekdays and Sunday as 0 or 7 renumbered for Cloudflare, a day of the month plus a day of the week read as either in crontab and as both in Cron Hub, a Sofia zone turned into two UTC hours with a guard note, a fixed Tokyo offset shifted, Quartz with zero seconds, Cloudflare MON#1 and last Friday given a wider expression and a guard, two crontab lines merged, a planted instruction ignored, and refusals for reboot, seconds, a macro with no equivalent and GitHub intervals under five minutes.
- Weak model (claude-haiku-5-5 (Claude Code alias "haiku")): Right on all 24, checked by code against run times counted from the calendar, with the same renumbering, guards and refusals as Sonnet.

Note: Twenty-four real schedules written by us in crontab, GitHub Actions, Quartz, Cron Hub and Cloudflare Workers Cron Triggers, each with a named target: day numbering traps, either-or against both day fields, time zones with and without daylight saving, n-th weekday and last-day schedules, macros, seconds, short GitHub intervals and a planted instruction. For a Cloudflare target the tester computes when the returned expressions fire and compares that with the source; refusals are scored on the empty list and the reason. The day numbering of Cron Hub is our own scheduler's, owner-measured. No check was widened. One run per model and schedule.

### With and without the skill

Tested 2026-10-09.

- Schedules converted right (21 with an exact cron answer): Sonnet 21/21 with, 20/21 without; Haiku 21/21 with, 12/21 without.
- Schedules that need a guard in code, given with it (3): Sonnet 3/3 with, 0/3 without; Haiku 3/3 with, 0/3 without.

Same request on both sides. It says: if the target cannot run at exactly those times, answer with an empty list and say why. Two Sofia schedules going to UTC-only Cloudflare and a first-Monday schedule going to crontab cannot be expressed exactly; the skill gives two UTC hours or a wider line plus a guard the job must run, and Sonnet without the skill refused them as the request asked, so the price rests on the first row. There it missed one: it read a Cron Hub schedule with both day fields as either-or, the crontab rule, while our scheduler needs both. Haiku without the skill missed nine, mostly copied day numbers (1-5 runs Sunday to Thursday in Cloudflare).

Same cases and the same checks with and without the skill. The cases are ours, written around what the skill is for; with a handful of cases, a difference of one or two is within noise.

Full summary: https://aiskills402.com/skills/cron-dialect-convert/tests

## Example

### English (claude-sonnet-5-5)

Before:

> Source: crontab (Linux) Target: Cloudflare Workers Cron Triggers (the crons list in the wrangler file) 0 9 * * 1-5 /opt/jobs/report.sh

After:

> {"crons": ["0 9 * * MON-FRI"], "note": "Cloudflare numbers days of the week with 1 = Sunday, so the crontab 1-5 was written as MON-FRI to keep Monday to Friday. Copying 1-5 would run Sunday to Thursday. Cloudflare Cron Triggers run in UTC, as does the crontab if the server's time zone is UTC; if the server uses another zone, the hour must be shifted."}

## What is in the file

- The answer
- The five dialects
- Day numbers: the rule that costs the most
- Day of the month with a day of the week
- Extensions the target lacks
- Quartz to five fields
- Things with no equivalent
- Steps
- Time zones
- Text in the request
- Work in this order
- Short examples

## Languages

Any language

## How to buy

Agent (HTTP):

1. GET https://api.aiskills402.com/v1/skills/cron-dialect-convert/file without a payment header. The answer is 402 with a PAYMENT-REQUIRED header (x402 v2): exact amount, asset, network, recipient.
2. Sign `accepts[0]` with an x402 client (for example @x402/core + @x402/evm).
3. Repeat the GET with the signature in the PAYMENT-SIGNATURE header. The answer is 200 with the file, its sha256 and a re-download token.

Agent (MCP): https://mcp.aiskills402.com/mcp — free tools search_skills, get_skill, redownload_skill. Buying itself is over HTTP.

Full flow: https://aiskills402.com/docs

## The file

- Version: 1.0.0
- Size: 11.4 KB (11639 bytes)
- SHA-256: ce0a5c75390c8874a56c0b1de862539f485a40ee8f2ab653bedc4b153a650cec
- Updated: 2026-10-09
- New versions are free through your re-download token.

## Versions

### 1.0.0 (2026-10-09)

First release: converts a schedule between classic crontab, GitHub Actions schedule, a small numbers-only HTTP scheduler (Cron Hub) and Cloudflare Workers Cron Triggers, as JSON (crons and a note). Keeps what the source does: day-of-week numbers shifted by dialect (names for Cloudflare), a day of the month with a day of the week split or turned into # and L where the target needs it, the either/both difference between crontab and Cron Hub, macros expanded, a time zone turned into the timezone key or two UTC hours with a handler check, and CANNOT CONVERT for a reboot macro, seconds and GitHub intervals under 5 minutes. Written first from the rank-6 row, then reconciled with the brief once it arrived: Quartz added, crontab output in numbers, midnight/annually nicknames, fixed-offset zone shift. Deliberate differences from the brief: both day fields restricted is converted by splitting into two expressions (exact) instead of refusing; EventBridge left out (docs could not be fetched). Not yet tested on models.

## License

Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Terms: https://aiskills402.com/docs#license

## FAQ

### Crons and a note: in which shape?

One JSON object. The crons list holds the expressions for the scheduler you are moving to, five fields each, without the command. The note holds what the job itself has to take over, for example a guard step that skips the extra days, or a check of the local hour when a zone observes daylight saving. Nothing is written for a real account and nothing is deployed: you paste the result where it belongs. A Quartz-style six-field expression is accepted as input when its seconds are zero.

### Why is copying the expression wrong?

The same digits name other days. In the Linux table and in GitHub Actions 1 is Monday and 0 is Sunday; in Cloudflare 1 is Sunday, 7 is Saturday and 0 is refused, so a copied 1-5 runs Sunday to Thursday. The small Cron Hub scheduler accepts only numbers and needs the day of the month and the day of the week to match together, where the Linux table runs on either one. The skill keeps what the source really does.

### What does it refuse to convert?

A reboot macro, anything with seconds, and a GitHub schedule more often than every five minutes. When a target has no last-day or n-th-weekday syntax, it gives a wider expression and names the one-line guard, or refuses if no guard repairs the schedule. A refusal is an empty list and a note that begins with CANNOT CONVERT, so a script can tell it from an answer.

### Does it help Claude Sonnet, and what about time zones?

A little, hence two cents. Sonnet and Haiku converted twenty-four schedules, file loaded and not, and the tester counted when each answer would fire. On 21 with an exact answer, plain Sonnet missed one: Cron Hub needs both day fields, not either. Haiku went from 12 to 21, mostly copied day numbers. A Sofia zone going to UTC-only Cloudflare becomes two UTC hours and a note telling the handler to check the local hour; without the file both models refused there, as our request allowed.

## Related skills

- [Cron Schedule for Cloudflare Workers](https://aiskills402.com/skills/cron-schedule.md): $0.06 once
- [Cloudflare Workers Review: D1, OpenNext, Fetch](https://aiskills402.com/skills/workers-pitfalls-review.md): $0.05 once
- [YAML Repair: Fix Broken YAML, Keep Every Value](https://aiskills402.com/skills/yaml-repair.md): $0.05 once

## Measurement limits

- Models other than the two named above were not run.
- Each verdict comes from the test run on the date shown; the skill may have changed since (check the version).
- Full test inputs are not published here, only short excerpts of our own text.
- Results on your own texts, languages and domains can differ.

Offer note: Paid in USDC (USD-pegged) over x402 by an AI agent; one-time.
