Manage schedules via osascript (Calendar) and reminders-cli (Reminders), following the GTD methodology.
Prerequisites
| Tool | Type | Required | Install |
|---|---|---|---|
| macOS | system | Yes | This skill requires macOS |
| osascript | cli | Yes | Built-in on macOS |
| reminders-cli | cli | Yes | brew install keith/formulae/reminders-cli |
| Schedule YAML | data | No | ~/code/*/planning/schedules/*.yaml — for cross-project weekly planning |
Do NOT proactively verify these tools on skill load. If a command fails due to a missing tool, directly guide the user through installation and configuration step by step.
Permission configuration
The first run requires authorization. Go to System Settings → Privacy & Security:
- Calendar - Check Terminal / iTerm / the terminal app you use
- Reminders - Same as above
⚠️ After changing permissions, you need to restart the terminal app
Core principles (GTD style)
| Tool | Purpose | Example |
|---|---|---|
| Calendar | Fixed-time commitments | Meetings, appointments, deadlines |
| Reminders | To-dos (no fixed time) | Shopping lists, tasks, ideas |
Decision process:
有具体时间? → Calendar 事件
无具体时间? → Reminders 待办
需要提醒? → 两者都可设置提醒
Mode selection
| User intent | Mode | Action |
|---|---|---|
| "Schedule a meeting", "Create an event" | Calendar | Create an event with a time |
| "Add a to-do", "Create a reminder", "Note this down" | Reminders | Create a task |
| "View schedule", "What's on today" | Query | Query Calendar + Reminders |
| "Plan next week", "Weekly review" | Planning | Comprehensive workflow |
Calendar operations
Manage Calendar events via osascript (view, create, delete).
See osascript-calendar.md for the complete command templates.
Reminders operations
Recommended to use reminders-cli(accessing Reminders via osascript is very slow).
Common commands quick reference:
reminders show-lists # 查看列表
reminders show-all --due-date today # 今日待办
reminders add "列表" "任务" # 创建
reminders complete "列表" 0 # 完成
See reminders-cli-guide.md for the complete command reference. For osascript alternatives, see osascript-reminders.md。
Common workflows
Scenario 1: Quick capture (GTD Capture)
User says "Note this down", "Do it later", "Don't forget" → Create a Reminder in the inbox
reminders add "提醒" "<任务名>"
Scenario 2: Schedule a meeting
User says "Schedule a meeting at 2 PM tomorrow" → Create a Calendar event (using osascript)
Scenario 3: Daily planning
- View today's Calendar events (osascript)
- View Reminders to-dos (
reminders show-all) - Schedule Time Blocks for important tasks (Calendar events)
Scenario 4: Weekly review (GTD Weekly Review)
- View reminders completed this week
- View next week's Calendar events (osascript)
- Organize Reminders lists (
reminders show-all)
See gtd-methodology.md。
Scenario 5: Cross-project weekly planning (requires Schedule YAML)
When ~/code/*/planning/schedules/*.yaml exists, the "Plan next week" workflow adds project scheduling context:
- Scan
~/code/*/planning/schedules/*.yaml, parse each file'sproject、timeline、capacity - View existing next week's Calendar events (osascript)
- View Reminders to-dos (
reminders show-all) - Extract next week's relevant modules from the schedule YAML (matching by the
weeksfield) - By
capacity.days_per_weekestimate each project's time allocation - Display combined: Calendar events + Reminders to-dos + each project's module tasks
- Flag capacity conflicts (total allocation > available workdays)
- Suggest Calendar time blocks (display suggestions, create after user confirmation)
Without Schedule YAML: Skip steps 4-7, degrading to the standard scenario 4-week review process.
Common Errors
| Error | Cause | Solution |
|---|---|---|
AppleEvent timed out |
Permission not granted | Grant authorization in system settings |
Can't get list |
List does not exist | First use reminders show-lists to view available lists |
Invalid date |
Incorrect date format | Use current date as the baseline |
reminders: command not found |
Not installed | brew install keith/formulae/reminders-cli |
| osascript Reminders is laggy | Known performance issue | Switch to reminders-cli |