with one click
macos-task-scheduler
Schedule recurring tasks on macOS using launchd plists
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Schedule recurring tasks on macOS using launchd plists
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Gmail inbox automation with pattern rules, AI triage, and Discord notifications
Analyze OpenCode token usage and estimate costs on OpenRouter
Inject prompts into existing Discord channels to trigger OpenCode sessions
Control OpenCode agents from Discord via Kimaki CLI
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs
Based on SOC occupation classification
| name | macos-task-scheduler |
| description | Schedule recurring tasks on macOS using launchd plists |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"developers","workflow":"automation","platform":"macos"} |
Create and manage macOS launchd plist files for scheduled tasks. I handle the launchd configuration, scheduling syntax, and task lifecycle (load/unload/start).
For sending prompts to Discord channels (Kimaki), see: kimaki-messenger
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.yourname.taskname</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-l</string>
<string>-c</string>
<string>YOUR COMMAND HERE</string>
</array>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Minute</key><integer>0</integer>
<key>Hour</key><integer>9</integer>
</dict>
</array>
<key>WorkingDirectory</key>
<string>/path/to/project</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin</string>
</dict>
<key>StandardOutPath</key>
<string>/path/to/project/taskname.log</string>
<key>StandardErrorPath</key>
<string>/path/to/project/taskname.error.log</string>
</dict>
</plist>
/bin/bash -l -c wrapper| Command | Description |
|---|---|
launchctl load path/to/plist | Register task |
launchctl unload path/to/plist | Remove task |
launchctl start com.name.task | Run immediately |
launchctl list | grep taskname | Check status |
<!-- Daily at 9:30 AM -->
<dict>
<key>Minute</key><integer>30</integer>
<key>Hour</key><integer>9</integer>
</dict>
<!-- Every hour -->
<dict>
<key>Minute</key><integer>0</integer>
</dict>
<!-- Weekly on Sundays at 10 AM -->
<dict>
<key>Minute</key><integer>0</integer>
<key>Hour</key><integer>10</integer>
<key>Weekday</key><integer>0</integer>
</dict>
<!-- First day of month at midnight -->
<dict>
<key>Minute</key><integer>0</integer>
<key>Hour</key><integer>0</integer>
<key>Day</key><integer>1</integer>
</dict>
ls -la ~/Library/LaunchAgents/
launchctl list | grep -E "com\.yourname\."
launchctl unload ~/Library/LaunchAgents/com.yourname.taskname.plist
rm ~/Library/LaunchAgents/com.yourname.taskname.plist