Put Claude on autopilot
npx skills add https://github.com/jshchnz/claude-code-scheduler --skill schedulerCLI를 사용하여 이 스킬을 설치하고 작업 공간에서 SKILL.md 워크플로 사용을 시작하세요.
Put Claude on autopilot. Schedule code reviews, security audits, and anything else - Claude Code runs them automatically, even while you sleep.
/plugin marketplace add jshchnz/claude-code-scheduler
/plugin install scheduler@claude-code-scheduler
Requires Claude Code v1.0.33+ · Works on macOS, Linux, Windows
Schedule a code review every weekday at 9am to check for bugs,
security issues, and missing tests
That's it. Claude creates the task, runs automatically at 9am, logs the results, and waits for you when you arrive.
Schedule something once—it runs and cleans itself up:
Automate your workflow—runs reliably even when Claude Code isn't open:
For tasks that need to make changes (edit files, run commands, make commits), Claude will ask:
You: Every Friday at 5pm, clean up unused imports and commit the changes
Claude: Does this task need to run autonomously (edit files, run commands)?
→ Yes, run fully autonomous
→ No, read-only analysis only
You: Yes
Claude: ✓ Task created with autonomous execution enabled
This adds --dangerously-skip-permissions to the scheduled command, allowing Claude to run without permission prompts.
For tasks that make changes, you can run them in isolated git worktrees. Changes are committed to a new branch and pushed for review—your main branch stays clean.
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:
What happens:
branchPrefix: "claude-task/" → branches named like claude-task/task-abc123-1234567890remoteName: "origin" → pushes to your default remoteIf push fails (no remote, auth issues), the worktree is kept at ~/.worktrees/ for manual review.
These slash commands are available for direct access, but you can also just ask Claude naturally.
| 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> |
Run a task immediately |
/scheduler:schedule-logs [id] |
View execution history |
Just tell Claude what you want:
Schedule a code review every weekday at 9am. Review commits from the last 24 hours, check for bugs, security issues, error handling gaps, and code that needs comments. Summarize with file:line references.
Every Monday at 10am, do a security audit: check for outdated dependencies with known CVEs, scan for hardcoded secrets or API keys, and flag unsafe patterns.
Every Friday at 2pm find all TODO, FIXME, HACK, and XXX comments. List by file with line numbers and identify the 3 highest priority items.
Every Thursday at 10am check for outdated dependencies. List packages with available updates, flag breaking changes, and recommend safe updates.
Every Wednesday at 3pm find dead code: unused functions, unreachable branches, commented-out code, and unused imports. List by file with line numbers.
See what your scheduled tasks have done:
/scheduler:schedule-logs
| Time | Task | Status | Duration |
|-------------------|-------------------|--------|----------|
| Jan 5 9:00 AM | Daily Code Review | OK | 45s |
| Jan 5 6:00 PM | Backup Reminder | OK | 12s |
| Jan 4 9:00 AM | Daily Code Review | OK | 38s |
Select any row to see the full output from that execution. You can also view a specific task directly:
/scheduler:schedule-logs daily-review --full
Logs are stored at ~/.claude/logs/<task-id>.log.
Tasks are stored in JSON files:
.claude/schedules.json~/.claude/schedules.jsonExample task structure:
{
"id": "daily-review",
"name": "Daily Code Review",
"enabled": true,
"trigger": {
"type": "cron",
"expression": "0 9 * * 1-5",
"timezone": "local"
},
"execution": {
"command": "Review yesterday's commits",
"workingDirectory": ".",
"timeout": 300,
"skipPermissions": true,
"worktree": {
"enabled": false,
"branchPrefix": "claude-task/",
"remoteName": "origin"
}
},
"tags": ["code-quality", "daily"]
}
| Option | Default | Description |
|---|---|---|
enabled |
false |
Run task in isolated git worktree |
branchPrefix |
"claude-task/" |
Prefix for created branches |
remoteName |
"origin" |
Git remote to push to |
basePath |
(auto) | Custom path for worktrees |
claude -p "your command" (with --dangerously-skip-permissions for autonomous tasks)~/.claude/logs/<task-id>.logTask not running?
/scheduler:schedule-status/scheduler:schedule-list/scheduler:schedule-logs <task-id>Common issues:
| Problem | Solution |
|---|---|
| Task never runs | Ensure claude CLI is in PATH |
| Directory not found | Use absolute paths |
| Permission denied | Check file permissions |
Platform debugging:
# macOS
launchctl list | grep com.claude.schedule
# Linux
crontab -l | grep claude
# Windows
schtasks /query /tn "ClaudeSchedule*"
Issues and PRs welcome! Open an issue
MIT