skills/cron-mgr/SKILL.md
Manage scheduled tasks via system crontab / node-cron
npx skillsauth add jaminitachi/superclaw cron-mgrInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
<Use_When>
<Do_Not_Use_When>
<Why_This_Exists> Scheduling is fundamental to automation but cron expressions are notoriously hard to write correctly. Users think in natural language ("every weekday at 8am") but cron requires cryptic syntax ("0 8 * * 1-5"). Cron Manager bridges this gap by parsing natural language into validated cron expressions and managing them through system crontab. Without it, every scheduling task requires manual cron syntax lookup. </Why_This_Exists>
<Execution_Policy>
crontab -l to list, crontab -e to edit)
</Execution_Policy>| Natural Language | Cron Expression | Meaning |
|-----------------|----------------|---------|
| "every minute" | * * * * * | Every minute |
| "every 5 minutes" | */5 * * * * | Every 5th minute |
| "every hour" | 0 * * * * | Top of every hour |
| "every 2 hours" | 0 */2 * * * | Every 2nd hour |
| "daily at 8am" | 0 8 * * * | 8:00 AM every day |
| "daily at 8:30am" | 30 8 * * * | 8:30 AM every day |
| "weekdays at 9am" | 0 9 * * 1-5 | 9:00 AM Mon-Fri |
| "every Monday" | 0 0 * * 1 | Midnight every Monday |
| "every Monday at 10am" | 0 10 * * 1 | 10:00 AM Monday |
| "twice a day" | 0 8,20 * * * | 8:00 AM and 8:00 PM |
| "every 1st of month" | 0 0 1 * * | Midnight, 1st of month |
| "every Sunday at 6pm" | 0 18 * * 0 | 6:00 PM Sunday |
| "every 15 minutes during work hours" | */15 9-17 * * 1-5 | Every 15m, 9-5 weekdays |
Generate cron expression: Build the 5-field cron expression:
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sun=0)
│ │ │ │ │
* * * * *
Special characters:
* -- any value, -- value list separator (1,3,5)- -- range (1-5)/ -- step values (*/5 = every 5th)Validate expression: Verify the expression is syntactically correct:
Check for duplicates: List existing cron jobs via crontab -l and check if a job with a very similar schedule already exists. Warn the user if so.
Register via system crontab: Add the validated job to system crontab:
# Edit crontab
crontab -l > /tmp/crontab.txt
echo "0 8 * * 1-5 /path/to/command # job-name" >> /tmp/crontab.txt
crontab /tmp/crontab.txt
Verify registration: Call crontab -l after adding to confirm the job appears in the crontab. If it does not appear, report the error.
Report to user: Show the user:
<Tool_Usage>
Bash -- Manage system crontab via crontab -l, crontab -e, crontab <file>. Calculate next run times, validate expressions.Read -- Read pipeline definitions that reference cron schedules.Grep -- Search for cron references across configuration files.
</Tool_Usage>Why good: Clean natural language parsing, full validation cycle, clear confirmation. </Good>
<Good> User says "show me all my scheduled jobs": 1. Call `crontab -l` 2. Parse output and format as table: | Name | Schedule | Expression | |------|----------|------------| | heartbeat-30m | Every 30 min | */30 * * * * | | morning-brief | Weekdays 8am | 0 8 * * 1-5 | | deploy-monitor | Every 5 min | */5 * * * * | 3. Show next scheduled run for eachWhy good: Clear, tabular output with all relevant information. </Good>
<Bad> User says "run this at 8am" and the agent registers `0 8 * * *` without asking if they mean daily or just once.Why bad: "at 8am" is ambiguous -- could mean once or daily. Should clarify with user before registering a recurring job. </Bad>
<Bad> Agent registers a cron job but does not verify it appears in `crontab -l` afterward.Why bad: Silent failure. The job might not have been added due to a syntax error. Always verify. </Bad> </Examples>
<Escalation_And_Stop_Conditions>
<Final_Checklist>
crontab -l| Field | Allowed Values | Special Characters | |-------|---------------|-------------------| | Minute | 0-59 | * , - / | | Hour | 0-23 | * , - / | | Day of Month | 1-31 | * , - / | | Month | 1-12 | * , - / | | Day of Week | 0-6 (Sun=0) | * , - / |
| Expression | Meaning |
|-----------|---------|
| 0 0 */2 * * | Every other day at midnight |
| 0 9-17 * * 1-5 | Every hour 9am-5pm weekdays |
| 0 0 1,15 * * | 1st and 15th of each month |
| 30 4 * * 0 | 4:30 AM every Sunday |
| 0 */4 * * * | Every 4 hours |
| 0 8 * * 1-5 | Weekdays at 8 AM |
| */10 * * * * | Every 10 minutes |
| 0 0 * * 6,0 | Midnight on weekends |
System crontab provides standard scheduling with:
# job-name comments to identify jobsTZ environment variable in crontab for specific timezonesWhen the user specifies a timezone:
timezone parameter to sc_cron_addCommon timezone shortcuts: | Shortcut | IANA Zone | |----------|-----------| | KST | Asia/Seoul | | EST | America/New_York | | PST | America/Los_Angeles | | UTC | UTC | | JST | Asia/Tokyo | | CET | Europe/Berlin |
Set up logging and monitoring for cron jobs:
# Add logging to crontab entries
*/30 * * * * /path/to/script.sh >> /var/log/cron-heartbeat.log 2>&1
This captures stdout and stderr for debugging failed jobs.
To modify a job, edit the crontab:
crontab -e # Opens editor to modify cron entries
Or programmatically:
crontab -l | sed '/old-job/d' | crontab - # Remove old job
crontab -l > /tmp/crontab.txt
echo "0 9 * * 1-5 /path/to/cmd # old-job" >> /tmp/crontab.txt
crontab /tmp/crontab.txt
| Issue | Resolution |
|-------|-----------|
| Job not running | Check crontab -l for status. Verify cron daemon is running. |
| Wrong time execution | Check timezone configuration. Default is system local. |
| Job runs but no effect | Verify the command path is absolute and executable. |
| Duplicate job error | Remove duplicate via crontab -e or programmatically. |
| Expression parse error | Verify 5 fields present, values in range. Use the reference table above. |
| Crontab not updating | Check permissions. May need sudo for system-wide crontab. |
</Advanced>
development
Developer productivity workflows - PR review, CI monitoring, deploy tracking, code metrics
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------