Agent skill · software engineering · sickn33
cron-doctor
Diagnose and validate cron expressions before they ship. Catches the five silent death-traps: impossible dates that never fire, OR-semantics that fire too often, midnight spikes, uneven step drift, and leap-year February 29.
Why this skill is useful
Adds a zero-dependency validation engine that checks cron expressions for common pitfalls and computes next fire times, which the AI cannot generate on its own.
What it needs
About 6k tokens when loaded. Last updated 2026-08-07. 44,571 stars on the source repository.
What this skill does
cron-doctor Overview Cron is deceptively error-prone. The failure mode is silent — a syntactically valid expression that simply never fires, or fires far more often than intended. 0 0 30 2 parses cleanly and then sits dead forever (February has no 30th). 0 0 1,15 1 looks like "1st and 15th if Monday" but actually means "1st, 15th, OR every Monday" — ~6 fires/month instead of ~2. This skill teaches an agent to catch those before they reach production. It comes with a zero-dependency validation engine (scripts/cron-engine.js, no install needed) that parses, describes, deep-validates, and computes next fire times. When to Use This Skill Use when a user writes, edits, reviews, or deploys a cron expression — in a crontab, a Kubernetes CronJob, a GitHub Actions schedule, an Airflow DAG, a Celery beat schedule, a systemd timer, or any scheduled task. Use when debugging a job that "didn't fire" or "fired at the wrong time." Use when a user asks "what does this cron expression mean?" or "when will this run next?" or "how often does this run per year?" Use when reviewing a CI/CD pipeline or infrastructure config that contains a schedule field. Use when a user pastes a 5-field cron expression and asks for a sanity check. How It Works Step 1: Parse the expression Split on whitespace into 5 fields: minute, hour, day-of-month, month, day-of-week. Confirm valid ranges: Field Position Range Notes ------- ---------- ------- ------- minute 1 0–59 hour 2 0–23 day-of-month 3 1–31 month 4 1–12 names (JAN–DEC) accepted day-of-week 5 0–7 0 and 7 both = Sunday; names (SUN–SAT) accepted Step 2: Describe it in plain English State what the user thinks it does vs. what it actually does. Be explicit about OR-vs-AND semantics for day-of-month + day-of-week (see death-trap #2). Step 3: Run the trap checklist Check the five death-traps below and flag any that apply. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills sickn33/cron-doctor--6a9029