schedulelisted
Install: claude install-skill LandonSchropp/agent-toolkit
# Schedule
## Where things live
- Plist: `Library/LaunchAgents/com.landonschropp.<name>.plist` in the `~/.dotfiles` repo, rcup-linked to `~/Library/LaunchAgents`
- Logs: `~/Library/Logs/com.landonschropp.<name>/{stdout,stderr}.log`, set via `StandardOutPath`/`StandardErrorPath`
## Plist template
```xml
<?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.landonschropp.NAME</string>
<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string>
<string>-lc</string>
<string>COMMAND</string>
</array>
<key>StandardOutPath</key>
<string>/Users/landon/Library/Logs/com.landonschropp.NAME/stdout.log</string>
<key>StandardErrorPath</key>
<string>/Users/landon/Library/Logs/com.landonschropp.NAME/stderr.log</string>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>7</integer>
</dict>
</array>
</dict>
</plist>
```
**REQUIRED:** `ProgramArguments` MUST run the command through `/bin/zsh -lc "COMMAND"`, never bare. launchd jobs skip the login shell, so `PATH` is missing `~/.local/bin` and everything rcup manages. `-lc` sources the login profile, putting commands like `sync-repositories` on `PATH`.
## Multiple trigger times
`StartCalendarInterval` is an array of dicts, not a single time. Each dict is one full trigger spec