Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when translating a human schedule into a crontab (cron) expression, or reviewing one: write the five space-separated fields in the fixed order minute, hour, day-of-month, month, day-of-week; use `*` for an unconstrained field and the `*/n` step form for regular intervals; set only one of day-of-month or day-of-week unless a union is intended, because Vixie cron runs the job when EITHER matches; treat 0 and 7 as Sunday; and precede the line with a comment stating the schedule — which cheaper models get wrong by default. Do NOT use for systemd timer units, for parsing or computing future run-times from a cron string, or for non-cron calendar scheduling.
.claude/skills/cron-expression-conventions/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 93% | 15 |
| Model | Lift | Δ tokens | Δ turns | Cases | Verified |
|---|---|---|---|---|---|
| gemini-3.6-flashbest | +14% | +176% | 0% | 22 | 54d ago |
| gemini-3.5-flash | pending re-run | — | |||
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-21 | ✗→✓ | ▲ Improved | — | — |
| case-04 | ✗→✓ | ▲ Improved | — | — |
| case-10 | ✗→✓ | ▲ Improved | — | — |
| case-22 | ✗→✗ | = Same ✗ | — | — |
| case-14 | ✗→✗ | = Same ✗ | — | — |
Write a five-field crontab expression to the standard form: the fields in the fixed order minute, hour, day-of-month, month, day-of-week; * for anything unconstrained; the */n step form for a regular interval; only one of the two day fields restricted unless a union is genuinely wanted (cron ORs them); 0 and 7 both meaning Sunday; and a leading comment naming the schedule in words. Apply when producing or reviewing a crontab line; not for systemd timers, for parsing a cron string, or for non-cron scheduling.
┌ minute (0–59) │ ┌ hour (0–23) │ │ ┌ day-of-month (1–31) │ │ │ ┌ month (1–12) │ │ │ │ ┌ day-of-week (0–7)
The minute is first and the day-of-week is last — not the other way around.
* means every. A field you are not constraining is * — every minute, every day, everymonth. Do not enumerate all values (1,2,3,…,12) to mean "every".
, for a list (0,30), - for an inclusive range (1-5), / for a step.A step over the whole field is */n (*/15); a step over a range is start-end/n (9-17/2).
*/n. "Every 15 minutes" is */15, NOT the list 0,15,30,45 andNOT a range like 0-59/15 or 0-45/15. Reach for the step form whenever the interval is regular.
field are restricted (neither is *), cron runs the job when EITHER matches — a union, not an intersection. So constrain only ONE of them and leave the other *, unless you deliberately want the union. "First of the month at 2am" is 0 2 1 * * (day-of-week *), never 0 2 1 * 1.
0 and 7 both mean Sunday; 1 isMonday … 6 is Saturday.
the expression, so a reader does not have to decode five fields:
# every day at 03:30 30 3 * * *
Interval — enumerated list vs. the step form:
BEFORE 0,20,40 * * * * # "every 20 minutes"
AFTER */20 * * * *Field order — a fixed daily time:
# 2:30 PM every day
30 14 * * * # minute=30 first, hour=14 secondUnconstrained fields stay *:
BEFORE 0 12 1-31 1-12 0-6 # "noon every day", every field spelled out
AFTER 0 12 * * *Single day condition — leave the other day field *:
# every Tuesday at 08:00
0 8 * * 2 # day-of-month is *, only day-of-week is setThe day trap — a union you DID want, both fields set:
# 1st of the month and every Friday, at midnight
0 0 1 * 5 # runs on the 1st OR any Friday (cron ORs the two)Sunday, either spelling:
# every Sunday at midnight
0 0 * * 0 # 0 and 7 both mean Sunday0 */6 * * *, not */6 * * * *.0 6,18 * * *.
0 9-17 * * 1-5.fields — restrict day-of-month and guard the weekday in the command, or accept the union.
JAN, MON), but numbers are the portable default.@daily, @hourly macros exist but the explicit five fields are the reviewable form.* for an unconstrained field. Don't enumerate every value to mean "every".*/n. Don't spell it as a list or an equivalent range.day-of-week by reflex.
14 30 * * * for 2:30 PM instead of 30 14 * * *.0,15,30,45 * * * * or 0-45/15 * * * * instead of */15.0 9 1 * 1) expecting "1st AND Monday" — cron runs it on the 1st OR anyMonday.
0-59 0-23 1-31 1-12 0-6) instead of * * * * *.0 and 7 both mean Sunday.* for unconstrained; */n for a regular interval.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.5-flash | verified | 7/10/2026 | +9% |
Other measured skills in the registry, with their headline benchmark lift.