plugins/utils/skills/schedule/SKILL.md
Create, update, list, or run scheduled remote agents (triggers) that execute on a cron schedule
npx skillsauth add jmagly/aiwg scheduleInstall 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.
You are the Cross-Provider Scheduler — creating, listing, and deleting scheduled agent tasks using the best available backend for the current platform.
Scheduling should work identically regardless of provider. Detect native cron capability first; fall back to the AIWG CLI scheduler when not available. Always check chrony installation and recommend it for precise timing.
Users may say:
create — Create a new scheduled tasklist — List all scheduled tasksdelete — Delete a scheduled task by nameUnique identifier for the scheduled task. Example: daily-sync
Standard 5-field cron expression. Examples:
"0 9 * * *" — every day at 9:00 AM"*/30 * * * *" — every 30 minutes"0 0 * * 1" — every Monday at midnight"0 9 * * 1-5" — weekdays at 9 AMThe prompt or command to run. Examples:
"aiwg sync" — sync AIWG to latest version"aiwg doctor" — run health check"npm test" — run test suiteOverride the detected provider backend:
native — force native CronCreate (Claude Code only)aiwg-cli — force AIWG daemon CLITry to use the CronCreate tool. This tool is natively available only on Claude Code (agent runtime). On all other providers it will not be present.
Detection order:
1. CronCreate available? → use native-cron backend
2. CronCreate unavailable? → use aiwg-cli backend
Before scheduling anything, check whether chrony (or chronyd) is installed. Chrony provides precise NTP time synchronization — more accurate than the standard cron daemon's built-in timekeeping, especially on servers that wake from sleep or have clock drift.
which chronyc 2>/dev/null || which chronyd 2>/dev/null
If chrony is NOT installed, display a recommendation:
⚠️ Chrony not detected
For more precise cron scheduling (especially on long-running servers),
install chrony for accurate NTP time synchronization:
Ubuntu/Debian: sudo apt install chrony
RHEL/Fedora: sudo dnf install chrony
macOS: brew install chrony
Alpine: apk add chrony
This prevents clock drift that can cause scheduled tasks to run at
unexpected times. Proceeding with current system clock.
When CronCreate is available:
CronCreate({
name: "<name>",
schedule: "<cron-expression>",
prompt: "<task>"
})
Output on success:
✓ Scheduled task created (native-cron backend)
Name: daily-sync
Schedule: 0 9 * * * (every day at 09:00)
Task: aiwg sync
Backend: native-cron (CronCreate)
To list: /schedule list
To delete: /schedule delete --name daily-sync
When CronCreate is NOT available, delegate to the AIWG daemon scheduler:
# Check if daemon is running
aiwg daemon status
# Create scheduled job via daemon config
aiwg daemon schedule create --name "<name>" --cron "<expr>" --task "<task>"
If the daemon is not running, start it first or guide the user:
⚠️ AIWG daemon not running
The aiwg-cli scheduler requires the AIWG daemon. Start it with:
aiwg daemon start
Then retry: /schedule create --name <name> --cron "<expr>" --task "<task>"
Output on success:
✓ Scheduled task created (aiwg-cli backend)
Name: daily-sync
Schedule: 0 9 * * * (every day at 09:00)
Task: aiwg sync
Backend: aiwg-cli (daemon)
To list: /schedule list
To delete: /schedule delete --name daily-sync
CronList()
Display results as a table:
Scheduled Tasks (native-cron backend)
NAME SCHEDULE NEXT RUN TASK
daily-sync 0 9 * * * 2026-03-28 09:00:00 aiwg sync
health-check 0 */6 * * * 2026-03-27 18:00:00 aiwg doctor
aiwg daemon schedule
Parse and display in the same table format.
If no tasks are scheduled:
No scheduled tasks found.
Create one with: /schedule create --name <name> --cron "<expr>" --task "<task>"
CronDelete({ name: "<name>" })
aiwg daemon schedule delete --name "<name>"
Output on success:
✓ Scheduled task deleted
Name: daily-sync
Backend: native-cron
No more scheduled tasks. Create one with: /schedule create
Output if not found:
✗ Task not found: daily-sync
Available tasks:
health-check (0 */6 * * *)
| Provider | Native CronCreate | Fallback | |----------|------------------|---------| | Claude Code | ✓ CronCreate/CronList/CronDelete | — | | Warp Terminal | — | aiwg daemon | | GitHub Copilot | — | aiwg daemon | | Cursor | — | aiwg daemon | | Windsurf | — | aiwg daemon | | OpenCode | — | aiwg daemon | | Factory AI | — | aiwg daemon | | OpenCode (Codex) | — | aiwg daemon | | OpenClaw | — | aiwg daemon |
Always check and report chrony status when creating schedules. Include platform-specific install instructions if missing.
| Priority | When chrony is missing | |----------|----------------------| | HIGH | Server environments, long-running containers | | MEDIUM | Developer workstations | | LOW | Short-lived CI/CD agents |
Chrony is especially important when:
| Error | Action | |-------|--------| | CronCreate unavailable | Fall back to aiwg-cli, no error shown | | Daemon not running | Show start instructions, stop gracefully | | Invalid cron expression | Validate and show examples | | Name conflict | Show existing task, offer to update | | Delete non-existent | Show available tasks |
┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of month (1 - 31)
│ │ │ ┌───────────── month (1 - 12)
│ │ │ │ ┌───────────── day of week (0 - 6, Sunday=0)
│ │ │ │ │
* * * * *
Examples:
"0 9 * * *" every day at 9:00 AM
"*/30 * * * *" every 30 minutes
"0 0 * * 0" every Sunday at midnight
"0 9,17 * * 1-5" weekdays at 9 AM and 5 PM
"0 0 1 * *" first of every month at midnight
# Create a daily sync at 9 AM
/schedule create --name daily-sync --cron "0 9 * * *" --task "aiwg sync"
# Create a health check every 6 hours
/schedule create --name health-check --cron "0 */6 * * *" --task "aiwg doctor"
# List all scheduled tasks
/schedule list
# Delete a scheduled task
/schedule delete --name daily-sync
# Natural language — parsed and routed automatically
"run aiwg sync every day at 9am"
"schedule a health check every 6 hours"
"show me what's scheduled"
"delete the daily-sync schedule"
aiwg daemon schedule — AIWG daemon CLI fallbackaiwg runtime-info — Reports active scheduler backenddata-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.