{"version":"1.1.0","schema":"https://oneagentaday.com/api/schema.json","agent":{"title":"Cron to Plain English","slug":"cron-to-plain-english","date":"2026-09-15","issue":11,"category":"automation","categoryLabel":"Automation","tags":["cron","schedules","automation"],"difficulty":"medium","runtimes":["ChatGPT","Claude","Gemini"],"excerpt":"Paste a cron line, a systemd OnCalendar, or a GitHub schedule. Get plain English, the timezone trap, and the line you meant.","problem":"A schedule has been running at the wrong hour for weeks because nobody wanted to be the person who decoded the line.","videoUrl":null,"url":"https://oneagentaday.com/agents/cron-to-plain-english","apiUrl":"https://oneagentaday.com/api/agents/cron-to-plain-english.json","promptUrl":"https://oneagentaday.com/agents/cron-to-plain-english/prompt.txt","configUrl":null,"configFilename":null,"license":"CC-BY-4.0","howItWorks":"Schedules fail at the timezone, not at the asterisk. You paste the line, the host, and the English you meant. The translator says what the line actually does, names the timezone trap, and writes a replacement only when the two disagree.\n\nIt does not pretend to know the server's clock unless you told it. GitHub cron is UTC. A systemd calendar and a crontab do not share a syntax, so it will not translate one into the other without saying it changed formats. Daylight-saving shifts are called out instead of smoothed over.\n\nPut the English sentence in a comment above the line after you fix it. The next outage will not need this chat.","steps":[{"name":"Copy the line and the timezone","text":"Paste the cron, OnCalendar, or GitHub cron, and the timezone the host uses. GitHub-hosted runners use UTC. Say so if that is the host."},{"name":"Write the intent in English","text":"Say when you meant it to run, in the timezone you care about. The translator will show you if the line disagrees."},{"name":"Paste the prompt","text":"You get the plain English reading, the next few runs, and a corrected line only if the intent and the line disagree."},{"name":"Change one schedule","text":"Update the host that is wrong. Leave a comment with the English sentence next to the line so the next person does not decode it again."}],"demo":[{"second":0,"label":"Two lines","detail":"Crontab 30 2 * * 1-5 in New York, and a GitHub cron at 18:30 UTC on weekdays."},{"second":8,"label":"The reading","detail":"The crontab is 02:30 local, Monday through Friday. That is early morning, not afternoon."},{"second":16,"label":"The other host","detail":"GitHub's 18:30 UTC is 14:30 in New York on a winter clock and 14:30 minus an hour when daylight saving applies. The agent says to name the season."},{"second":24,"label":"The fix","detail":"For 14:30 New York weekdays on the crontab: 30 14 * * 1-5. The GitHub line stays, with a UTC comment."}],"sampleInput":"Host timezone: America/New_York.\nLine: 30 2 * * 1-5\nWhere: crontab on the jobs box.\nIntent: weekdays at 2:30 in the afternoon, New York. Someone may have written 2 thinking of 14.\nAlso in the repo: a GitHub workflow with cron: \"30 18 * * 1-5\" and no timezone comment.","prompt":"You translate schedule expressions into plain English and back. You are careful about timezones.\n\nINPUTS\n- Expression: a cron line, a systemd OnCalendar, or a GitHub Actions cron.\n- Host timezone. If they say GitHub-hosted and nothing else, use UTC and say so.\n- Intent: when they meant it to run. If missing, explain the line and do not propose a replacement.\n\nRULES\n- Say the minute, hour, day, and timezone in a sentence a person can read aloud.\n- Do not claim a next-run timestamp you did not compute from the fields. You may describe the next occasions in words (\"the next weekday at 14:30 America/New_York\").\n- Daylight saving: if the zone observes it, say a wall-clock hour is not a fixed UTC hour. Do not pick a side silently.\n- GitHub cron is UTC. Remind them if they mixed it with a local zone.\n- A replacement line is allowed only when it matches the intent better than the current line. Show both.\n- Do not convert syntax (cron to systemd) unless they asked. If you do, label the new format.\n- If the expression is invalid, say which field is wrong. Do not guess a fix that changes the intent.\n\nOUTPUT\n## Reads as\nThe sentence.\n\n## Intent\nMatch or mismatch. Quote their intent.\n\n## Replacement\nThe line, or \"Keep it.\"\n\n## Trap\nThe timezone or daylight-saving note. Or \"None.\"","config":null}}