Skill: niracler/nini-schedule-manager (version 1.0.1)

--- name: schedule-manager metadata: {"openclaw":{"emoji":"📅","requires":{"bins":["osascript","reminders-cli"]}}} description: (macOS only) 通过 osascript 和 reminders-cli 管理 Apple Calendar 和 Reminders，遵循 GTD 方法论。Triggers on "schedule", "calendar", "reminders", "GTD", "todo". 触发场景：用户说「安排会议」「创建提醒」「查看日程」「规划下周」「添加待办」「今天要做什么」「周回顾」「记一下」「别忘了」时触发。 --- # Schedule Manager 通过 osascript (Calendar) 和 reminders-cli (Reminders) 管理日程，遵循 GTD 方法论。 ## 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. ### 权限配置 首次运行需要授权，进入系统设置 → 隐私与安全性： 1. **日历** - 勾选 Terminal / iTerm / 你使用的终端应用 2. **提醒事项** - 同上 ⚠️ 修改权限后需重启终端应用 ## 核心原则（GTD 风格） | 工具 | 用途 | 示例 | |------|------|------| | Calendar | 固定时间承诺 | 会议、约会、截止日期 | | Reminders | 待办事项（无固定时间） | 购物清单、任务、想法 | **决策流程：** ```text 有具体时间？ → Calendar 事件 无具体时间？ → Reminders 待办 需要提醒？ → 两者都可设置提醒 ``` ## 模式选择 | 用户意图 | 模式 | 操作 | |----------|------|------| | 「安排会议」「创建事件」 | Calendar | 创建带时间的事件 | | 「添加待办」「创建提醒」「记一下」 | Reminders | 创建任务 | | 「查看日程」「今天有什么」 | 查询 | 查询 Calendar + Reminders | | 「规划下周」「周回顾」 | 规划 | 综合工作流 | ## Calendar 操作 ### 查看日历列表 ```bash osascript -e 'tell application "Calendar" to get name of calendars' ``` ### 查看今日/本周事件 ```bash osascript <<'EOF' set today to current date set time of today to 0 set tomorrow to today + (1 * days) tell application "Calendar" repeat with cal in calendars set evts to (every event of cal whose start date ≥ today and start date < tomorrow) if (count of evts) > 0 then repeat with e in evts log (summary of e) & " | " & (start date of e) end repeat end if end repeat end tell EOF ``` 详见 [osascript-calendar.md](references/osascript-calendar.md)。 ### 创建事件 ```bash osascript -e ' tell application "Calendar" tell calendar "个人" set startDate to (current date) + (1 * days) set hours of startDate to 14 set minutes of startDate to 0 set endDate to startDate + (1 * hours) make new event with properties {summary:"会议标题", start date:startDate, end date:endDate} end tell end tell' ``` **可用属性：** `summary`, `start date`, `end date`, `description`, `location`, `allday event` 详见 [osascript-calendar.md](references/osascript-calendar.md)。 ### 删除事件 ```bash osascript -e ' tell application "Calendar" tell calendar "个人" delete (every event whose summary is "要删除的事件名") end tell end tell' ``` ## Reminders 操作 > **注意**：osascript 访问 Reminders 非常慢（已知问题），推荐使用 `reminders-cli`。 > > 详见 [reminders-cli-guide.md](references/reminders-cli-guide.md)。 ### 查看提醒列表 ```bash reminders show-lists ``` ### 查看待办事项 ```bash # 查看所有未完成提醒 reminders show-all # 查看指定列表 reminders show "工作" # 按截止日期筛选 reminders show-all --due-date today ``` ### 创建提醒 ```bash # 基础创建 reminders add "收件箱" "任务名称" # 带截止日期 reminders add "工作" "完成报告" --due-date "tomorrow 5pm" # 带优先级 (low/medium/high) reminders add "工作" "紧急任务" --priority high ``` ### 完成提醒 ```bash # 按索引完成（索引通过 show 命令查看） reminders complete "收件箱" 0 ``` ### 其他操作 ```bash # 取消完成 reminders uncomplete "收件箱" 0 # 编辑提醒 reminders edit "收件箱" 0 "新的任务名称" # 删除提醒 reminders delete "收件箱" 0 ``` ### osascript 备选（仅用于复杂操作） osascript 适合需要批量操作或复杂查询的场景，但速度很慢。详见 [osascript-reminders.md](references/osascript-reminders.md)。 ## 常见工作流 ### 场景 1: 快速收集（GTD Capture） 用户说「记一下」「待会做」「别忘了」→ 创建 Reminder 到收件箱 ```bash reminders add "提醒" "<任务名>" ``` ### 场景 2: 安排会议 用户说「安排明天下午 2 点的会议」→ 创建 Calendar 事件（使用 osascript） ### 场景 3: 每日规划 1. 查看今日 Calendar 事件（osascript） 2. 查看 Reminders 待办（`reminders show-all`） 3. 为重要任务安排 Time Block（Calendar 事件） ### 场景 4: 周回顾（GTD Weekly Review） 1. 查看本周完成的提醒 2. 查看下周 Calendar 事件（osascript） 3. 整理 Reminders 列表（`reminders show-all`） 详见 [gtd-methodology.md](references/gtd-methodology.md)。 ### 场景 5: 跨项目周规划（需要 Schedule YAML） 当 `~/code/*/planning/schedules/*.yaml` 存在时，「规划下周」工作流增加项目排期上下文： 1. 扫描 `~/code/*/planning/schedules/*.yaml`，解析每个文件的 `project`、`timeline`、`capacity` 2. 查看下周 Calendar 已有事件（osascript） 3. 查看 Reminders 待办（`reminders show-all`） 4. 从 schedule YAML 中提取下周相关 module（按 `weeks` 字段匹配） 5. 按 `capacity.days_per_week` 估算各项目时间分配 6. 合并展示：Calendar 事件 + Reminders 待办 + 各项目模块任务 7. 标注产能冲突（总分配 > 可用工作日） 8. 建议 Calendar time block（展示建议，用户确认后创建） **无 Schedule YAML 时**：跳过步骤 4-7，退化为标准的场景 4 周回顾流程。 ## 常见错误 | 错误 | 原因 | 解决 | |------|------|------| | `AppleEvent timed out` | 权限未授予 | 在系统设置中授权 | | `Can't get list` | 列表不存在 | 先用 `reminders show-lists` 查看可用列表 | | `Invalid date` | 日期格式错误 | 使用 `current date` 作为基准 | | `reminders: command not found` | 未安装 | `brew install keith/formulae/reminders-cli` | | osascript Reminders 卡顿 | 已知性能问题 | 改用 `reminders-cli` |


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)