Agent skill

Cron Doctor

by sickn33 in sickn33/agentic-awesome-skills

Diagnose and validate cron expressions before they ship. An agent skill from sickn33/agentic-awesome-skills.

MITAuto-check passedProductivity & Automation

Install Cron Doctor

skills CLI
$ npx skills add sickn33/agentic-awesome-skills --skill cron-doctor -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sickn33/agentic-awesome-skills cron-doctor --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sickn33/agentic-awesome-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cron-doctor .claude/skills/cron-doctor && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
cron-doctor
GitHub stars
47k
Used in
1 other repo
Token cost
~2.4k tokens
SKILL.md length
1,142 words
Files
3 (incl. scripts)
Skills in repo
1,497
Repo updated
First seen
Licence
MIT

At a glance

Diagnose and validate cron expressions before they ship. An agent skill from sickn33/agentic-awesome-skills.

  • Works in 9 steps: Parse the expression → Describe it in plain English → Run the trap checklist → …
  • Tasks that involve Scheduled and recurring tasks
  • SKILL.md covers Overview, When to Use This Skill, How It Works and The Five Cron Death-Traps, plus 7 more sections
  • Runs JavaScript scripts from its folder; calls node and npm

What it does

Cron Doctor is an agent skill from sickn33/agentic-awesome-skills. 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.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/cli.js` and `scripts/cron-engine.js`).

It sits in Productivity & Automation, covering Scheduled and recurring tasks. The repository describes itself as: AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,400+ agentic skills. Includes… The licence is MIT.

When your agent uses it

  • Tasks that involve Scheduled and recurring tasks

Example prompts

  • “/cron-doctor”

Requirements

  • Node.js
  • Docker

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Parse the expression
  2. Describe it in plain English
  3. Run the trap checklist
  4. Calculate next runs and annual fire count
  5. Impossible dates — the "never fires" bug
  6. OR-semantics — the "fires too often" bug
  7. Midnight spike — the "everything at once" bug
  8. Uneven steps — the "drift" bug
  9. Leap-year February 29 — the "annual surprise"

What it can do on your machine

Read from SKILL.md and the folder at commit b84d35a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Cron Doctor loads about 2.4k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 1,142 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~59
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from sickn33/agentic-awesome-skills at commit b84d35a, republished under its MIT licence (© sickn33). 1,142 words, ~2,371 tokens.

Download SKILL.mdSave it as .claude/skills/cron-doctor/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
cron-doctor
description
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.
category
devops
risk
safe
source
community
source_repo
takeaseatventure/devops-skills
source_type
community
date_added
2026-06-26
author
takeaseat
tags
cron, crontab, scheduling, devops, debugging, kubernetes, validation
tools
claude, cursor, codex, gemini, opencode
license
MIT

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:

FieldPositionRangeNotes
minute10–59
hour20–23
day-of-month31–31
month41–12names (JAN–DEC) accepted
day-of-week50–70 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.

Step 4: Calculate next runs and annual fire count

Compute the next 5 fire times as concrete dates so the user can verify the schedule behaves as expected. Estimate annual fire count — a schedule that fires 365×/year vs. 12×/year is a ~30× cost and load difference.

The Five Cron Death-Traps

These are the bugs that pass crontab -l validation but break in production.

1. Impossible dates — the "never fires" bug
0 0 30 2 *

Valid syntax. Never fires. February has no 30th. This schedule is a dead job that silently sits forever. The same applies to day 31 in any 30-day month: 0 0 31 4 *, 0 0 31 6 *, 0 0 31 9 *, 0 0 31 11 *.

Fix: use 0 0 28-31 * * and check for end-of-month in the script, or use L (last day) syntax if your scheduler supports it.

2. OR-semantics — the "fires too often" bug
0 0 1,15 * 1

Does NOT mean "midnight on the 1st and 15th if it's Monday." Does mean "midnight on the 1st, the 15th, OR every Monday." That's ~6 fires/month instead of ~2.

This is the single most misunderstood cron rule. When both day-of-month AND day-of-week are restricted (neither is *), cron uses OR logic, not AND.

Fix: if you need "1st and 15th only if Monday," run daily and check in the script:

bash
0 0 * * 1 [ "$(date +%d)" = "01" -o "$(date +%d)" = "15" ] && your-command
3. Midnight spike — the "everything at once" bug
0 0 * * *

Every job scheduled at 0 0 competes for resources at exactly 00:00. Database backups, log rotations, cert renewals, report generation — all fire simultaneously. This causes load spikes, connection-pool exhaustion, and cascading timeouts.

Fix: stagger jobs across the hour. Use 17 2 * * * or 43 3 * * * instead of 0 0. Jitter is your friend.

4. Uneven steps — the "drift" bug
*/7 * * * *

Does NOT mean "every 7 minutes evenly." It means "every 7 minutes starting at 0, then resets at 60." So: 0, 7, 14, 21, 28, 35, 42, 49, 56 — then 0 again (a 4-minute gap). The intervals drift: 7,7,7,7,7,7,7,7,4.

Fix: 60 is not divisible by 7. Use step values that divide 60 evenly: */5, */10, */15, */20, */30. If you truly need every-7-minutes, use a loop with sleep 420.

5. Leap-year February 29 — the "annual surprise"
0 0 29 2 *

Fires only on leap years — February 29, 2024 / 2028 / 2032… If someone writes this expecting "end of February," they'll be confused for 3 out of every 4 years.

Fix: use 0 0 28 2 * and handle the 29th case in the script if needed.

Show full SKILL.md (439 more words)Show less

Using the validation script

This skill ships a zero-dependency engine at scripts/cron-engine.js (Node.js, no npm install needed). You can use it programmatically or from the CLI:

javascript
// Programmatic — Node.js, zero dependencies
const { describe, validate, nextRuns, formatNextRuns } = require('./scripts/cron-engine.js');

// Parse + describe -> returns { text, error, parsed }
const d = describe('0 0 30 2 *');
console.log(d.text);   // "At 00:00, on day-of-month 30 in in FEB"

// Deep validation -> catches the traps
const result = validate('0 0 30 2 *');
console.log(result.valid);              // true (syntax is valid)
console.log(result.observations);       // includes the "never fires" insight
console.log(result.suggestions);        // e.g. "Midnight is a common spike..."

// Next 5 fire times -> returns Date[]
const runs = nextRuns('0 9 * * 1-5', new Date(), 5);
console.log(formatNextRuns(runs, new Date())); // [{ date, relative, formatted }, ...]
bash
# CLI (via the bundled wrapper)
node scripts/cli.js describe "*/5 * * * *"
node scripts/cli.js validate "0 0 30 2 *"
node scripts/cli.js next "0 9 * * 1-5" 5

Common cron presets

ExpressionDescriptionUse case
*/5 * * * *Every 5 minutesHealth checks, polling
0 * * * *Every hourHourly aggregation
0 */2 * * *Every 2 hoursSemi-frequent sync
0 9 * * 1-59am Mon–FriBusiness-hours task
0 2 * * *2am dailyOff-peak batch (avoid midnight)
0 0 * * 0Midnight SundayWeekly maintenance
0 0 1 * *Midnight 1st of monthMonthly report
0 0 1 1 *Midnight Jan 1stAnnual task

Best Practices

  • ✅ Always provide the plain-English description AND run the trap checklist.
  • ✅ Stagger midnight jobs to avoid the spike.
  • ✅ Prefer step values that divide 60 evenly (*/5, */15, */30).
  • ✅ Add a comment above every crontab line explaining intent.
  • ✅ Set an explicit timezone (CRON_TZ) on schedulers that support it.
  • ❌ Don't trust crontab -l validation — it only checks syntax, not semantics.
  • ❌ Don't restrict both day-of-month and day-of-week without confirming OR-logic.
  • ❌ Don't schedule everything at 0 0.

Common Pitfalls

  • Problem: "My cron job isn't running." Solution: Check for an impossible date (trap #1) and confirm the daemon is running (service cron status / systemctl status crond). Verify the file ends with a newline and has correct ownership.

  • Problem: "My job runs far more often than expected." Solution: You hit OR-semantics (trap #2). If both day-of-month and day-of-week are set, cron ORs them. Move one to * or guard in-script.

  • Problem: "Intervals are uneven — sometimes 7 min, sometimes 4." Solution: Step value doesn't divide 60 evenly (trap #4). Use a divisor of 60.

  • Problem: "My job works locally but not in the cluster." Solution: Timezone mismatch. Kubernetes CronJob and GitHub Actions default to UTC. Confirm timeZone / TZ is set as intended.

Limitations

  • This skill targets standard 5-field cron as implemented by Vixie cron, systemd timers, Kubernetes CronJob, GitHub Actions schedule, and most libraries. It does not validate Quartz 6/7-field expressions with seconds/years, nor non-standard @reboot / L / # extensions without a note.
  • Estimated annual fire counts assume a non-leap reference year; February 29 schedules (trap #5) are flagged explicitly.
  • This skill does not replace environment-specific validation, testing, or expert review. Stop and ask for clarification if required inputs, permissions, or safety boundaries are missing.
  • docker-expert — when the cron job runs inside a container and the issue is the container/entrypoint rather than the schedule.
  • kubernetes-deployment — when validating a CronJob manifest's spec.schedule field alongside the broader resource config.

Security & Safety Notes

This skill is read-only and risk: safe. The validation script performs no file writes, network calls, or mutations — it only parses and computes. It is safe to run against any cron expression without preconditions.

© sickn33, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts) in skills/cron-doctor of sickn33/agentic-awesome-skills.

  • SKILL.md
  • scripts/cli.js
  • scripts/cron-engine.js

Open the folder on GitHubat commit b84d35a

Used in 1 other repository

We found 5 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in sickn33/agentic-awesome-skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Cron Doctor next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Cron Doctor compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cron Doctor this skillsickn33/agentic-awesome-skills47k1 repos~2.4kAutomated safety check: PassMIT
ScheduleTinyAGI/tinyagi3.6k—~1.4kAutomated safety check: PassMIT
Send User MessageTinyAGI/tinyagi3.6k—~829Automated safety check: PassMIT
Cron Opsczl9707/build-your-own-openclaw1.9k—~593Automated safety check: PassMIT
X Bookmarkssharbelxyz/x-bookmarks289—~2kAutomated safety check: NotesNone
Wp Wpcli And OpsAutomattic/agent-skills2112 repos~988Automated safety check: PassNone

Similar skills

  • Schedule

    TinyAGI/tinyagi

    Create, list, and delete scheduled tasks (recurring or one-time) that send messages to agents.

    3.6k GitHub stars~1.4k tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Send User Message

    TinyAGI/tinyagi

    Send a proactive message to a paired user via their channel (Discord, Telegram, or WhatsApp).

    3.6k GitHub stars~829 tokensUpdated 6 mo ago
    Productivity & AutomationAuto-check passed
  • Cron Ops

    czl9707/build-your-own-openclaw

    Create, list, and delete scheduled cron jobs. An agent skill from czl9707/build-your-own-openclaw.

    1.9k GitHub stars~593 tokensUpdated 3 mo ago
    Productivity & AutomationAuto-check passed
  • X Bookmarks

    sharbelxyz/x-bookmarks

    Fetch, summarize, and manage X/Twitter bookmarks via bird CLI or X API v2.

    289 GitHub stars~2k tokensUpdated 7 mo ago
    Productivity & AutomationAuto-check: notes
  • Wp Wpcli And Ops

    Automattic/agent-skills

    A skill your agent uses when working with WP-CLI (wp) for WordPress operations: safe search-replace, db export/import, plugin/theme/user/content management, cron, cache flushing, multisite, and…

    211 GitHub starsUsed in 2 repos~988 tokens
    Productivity & AutomationAuto-check passed
  • Ohdear

    ohdearapp/ohdear-cli

    Manage Oh Dear website monitoring using the ohdear CLI. An agent skill from ohdearapp/ohdear-cli.

    141 GitHub stars~1.1k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed

More from sickn33/agentic-awesome-skills

All 1,497 skills in this repo
  • Liuguang Banlan UI

    sickn33/agentic-awesome-skills

    Implements an interface in one of two named color modes, iridescent white or colorful black, from a parameterized starter that reports measured color intensity.

    47k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • User Thoughts Memory

    sickn33/agentic-awesome-skills

    Saves a user's project decisions, rules and preferences into a project-local mdbase so later sessions and other agents can recover the intent.

    47k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Using LWC Memory and Graphs

    sickn33/agentic-awesome-skills

    Keeps project decisions, research and verified results available across coding-agent sessions through LWC memory, a document Wiki graph and a CodeGraph code index.

    47k GitHub starsUsed in 1 repo~2k tokens
    Auto-check passed
  • Find Complementary Founders

    sickn33/agentic-awesome-skills

    Guides an agent through assessing its own owner for cofounder fit, publishing an approved profile, and ranking complementary profiles other agents published for their owners.

    47k GitHub starsUsed in 1 repo~4.8k tokens
    Auto-check passed
  • Whatsapp Cloud API

    sickn33/agentic-awesome-skills

    Integracao com WhatsApp Business Cloud API (Meta). An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 2 repos~4.5k tokens
    Auto-check passed
  • Cline Pilot

    sickn33/agentic-awesome-skills

    Acts as a proxy for the Cline CLI, dispatching coding tasks one at a time, monitoring runs by hard evidence, relaying decisions to you and learning per-project preferences.

    47k GitHub starsUsed in 1 repo~4.6k tokens
    Auto-check passed

Questions about Cron Doctor

What does Cron Doctor do?

Diagnose and validate cron expressions before they ship. An agent skill from sickn33/agentic-awesome-skills. Cron Doctor is an agent skill from sickn33/agentic-awesome-skills. Diagnose and validate cron expressions before they ship.

When should I use Cron Doctor?

Cron Doctor fits situations like: tasks that involve Scheduled and recurring tasks.

How do I install Cron Doctor in Claude Code?

Run `npx skills add sickn33/agentic-awesome-skills --skill cron-doctor -a claude-code`. Or copy the skill folder (skills/cron-doctor in sickn33/agentic-awesome-skills) into .claude/skills/cron-doctor in your project. Claude Code loads it when a task matches its description.

How do I install Cron Doctor in Codex?

Run `npx skills add sickn33/agentic-awesome-skills --skill cron-doctor -a codex`. Or copy the skill folder (skills/cron-doctor in sickn33/agentic-awesome-skills) into .agents/skills/cron-doctor in your project. Codex loads it when a task matches its description.

Can I use Cron Doctor in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sickn33/agentic-awesome-skills --skill cron-doctor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cron-doctor, .gemini/skills/cron-doctor, .github/skills/cron-doctor and .opencode/skills/cron-doctor in your project.

What does Cron Doctor need to run?

Going by SKILL.md and its folder, Cron Doctor needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node and npm). Our summary lists: Node.js; Docker.

Does Cron Doctor access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Cron Doctor safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Cron Doctor use?

Cron Doctor is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cron Doctor use?

About 2.4k tokens (SKILL.md is roughly 9.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Cron Doctor?

Skills that share tags, products or a category with Cron Doctor: Schedule (TinyAGI/tinyagi, 3.6k stars), Send User Message (TinyAGI/tinyagi, 3.6k stars), Cron Ops (czl9707/build-your-own-openclaw, 1.9k stars) and X Bookmarks (sharbelxyz/x-bookmarks, 289 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cron Doctor?

sickn33 (a GitHub user) maintains it in sickn33/agentic-awesome-skills, which has 47,405 GitHub stars. The repository holds 1,497 skills in this directory. The repository was last updated on October 9, 2026.

Source: sickn33/agentic-awesome-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.