Scheduling Assistant
You help users set up and manage scheduled Claude Code tasks. You can:
- Convert natural language to cron expressions ("every weekday at 9am" -> "0 9 * * 1-5")
- Explain cron syntax and scheduling concepts
- Set up native OS schedulers (launchd, cron, Task Scheduler)
- Troubleshoot scheduling issues
- Suggest automation patterns for common workflows
Quick Start
To create a scheduled task:
/scheduler:schedule-add
To view all scheduled tasks:
/scheduler:schedule-list
One-Time vs Recurring Tasks
The scheduler supports both one-time and recurring tasks:
One-Time Tasks
For tasks that run once at a specific time:
- "run at 3pm today"
- "tomorrow at noon"
- "next Tuesday at 2pm"
One-time tasks automatically clean up after execution.
Recurring Tasks
For tasks that repeat on a schedule:
- "every day at 9am"
- "daily at 6pm"
- "weekdays at 10am"
- Cron expressions like
0 9 * * 1-5
Detection rule: Unless "every", "daily", "weekly", or similar recurring keywords are present, the task is treated as one-time.
Git Worktree Mode (Isolated Branches)
For tasks that make changes, worktree mode runs them in isolation:
You: Every night at 2am, refactor deprecated API calls and push for review
Claude: Should this run in an isolated git worktree?
→ Yes, create branch and push changes
→ No, run in main working directory
You: Yes
Claude: ✓ Task created with worktree isolation
Branch prefix: claude-task/
Remote: origin
How it works:
- Task triggers → creates fresh worktree with new branch
- Claude runs in the worktree (isolated from main)
- Changes are committed and pushed to remote
- Worktree is cleaned up after successful push
- You review the PR at your convenience
Configuration options:
| Option | Default | Description |
|---|---|---|
worktree.enabled | false | Enable worktree isolation |
worktree.branchPrefix | "claude-task/" | Branch name prefix |
worktree.remoteName | "origin" | Remote to push to |
If push fails, the worktree is kept for manual review.
Cron Quick Reference
* * * * *
| | | | |
| | | | +-- Day of week (0-6, Sun=0)
| | | +---- Month (1-12)
| | +------ Day of month (1-31)
| +-------- Hour (0-23)
+---------- Minute (0-59)
Common patterns:
| Pattern | Description |
|---|---|
0 9 * * * | Daily at 9:00 AM |
0 9 * * 1-5 | Weekdays at 9:00 AM |
*/15 * * * * | Every 15 minutes |
0 */2 * * * | Every 2 hours |
0 9 1 * * | First of month at 9:00 AM |
0 9 * * 1 | Every Monday at 9:00 AM |
For complete syntax, see CRON_REFERENCE.md.
Platform Setup
Tasks are executed by your OS's native scheduler:
- macOS: launchd (LaunchAgents)
- Linux: crontab
- Windows: Task Scheduler
For platform-specific details, see PLATFORM_SETUP.md.
Common Use Cases
Daily Code Review
Schedule: 0 9 * * 1-5 (weekdays at 9am)
Command: /review-code --scope=yesterday
Weekly Dependency Audit
Schedule: 0 10 * * 1 (Mondays at 10am)
Command: Check for outdated dependencies and security vulnerabilities
Automated Testing
Schedule: 0 */4 * * * (every 4 hours)
Command: Run test suite and report failures
Troubleshooting
Task not running?
- Check
/scheduler:schedule-statusfor health - Verify task is enabled:
/scheduler:schedule-list - Check logs:
/scheduler:schedule-logs <task-id> - Ensure
claudeCLI is in PATH for scheduler
Common issues:
- PATH not set correctly in scheduler environment
- Working directory doesn't exist
- Command syntax errors
- Scheduler daemon not running
Helper Scripts
To validate a cron expression:
python scripts/parse-cron.py "0 9 * * 1-5"
Available Commands
| Command | Description |
|---|---|
/scheduler:schedule-add | Create a new scheduled task |
/scheduler:schedule-list | View all scheduled tasks |
/scheduler:schedule-remove <id> | Remove a scheduled task |
/scheduler:schedule-status | Check scheduler health |
/scheduler:schedule-run <id> | Manually run a task |
/scheduler:schedule-logs <id> | View execution logs |