名称: mac-reminders-agent
版本: 1.2.0
作者: swancho
许可证: MIT
描述: |
与 macOS 提醒事项应用集成,实现查看、添加、编辑、删除和完成提醒的功能。
通过 Swift EventKit 支持原生重复规则(每周/每日/每月/每年)——创建单个带重复规则的提醒。
支持通过 ID(来自 EventKit 的 calendarItemIdentifier)编辑和删除提醒。
支持多种语言(英语、韩语、日语、中文)用于触发词检测和响应格式化。
当用户请求重复提醒时,必须使用 --repeat 选项(daily|weekly|monthly|yearly)。
requirements:
runtime:
- node >= 18.0.0
- npm
- macOS with Xcode Command Line Tools (包含 Swift 编译器)
permissions:
- macOS 提醒事项访问权限(首次使用时系统会提示)
install: |
cd $SKILL_DIR && npm install
此技能与本地 macOS 提醒事项 应用集成,可执行以下操作:
技能使用其目录下的以下文件:
cli.js(统一入口点)reminders/apple-bridge.js(后端:AppleScript + applescript npm 模块)reminders/eventkit-bridge.swift(通过 Swift EventKit 实现原生重复规则)locales.json(特定语言的触发词和响应模板)技能可自动检测用户语言,或通过 --locale 参数显式设置。
| 代码 | 语言 | 触发词示例 |
|---|---|---|
en |
英语 | "What do I have to do today?" |
ko |
韩语 | "오늘 할 일 뭐 있어?" |
ja |
日语 | "今日のタスクは?" |
zh |
中文 | "今天有什么任务?" |
--locale 参数en(英语)用户的自然语言请求分为两种情况处理:
针对每种情况,调用 Node.js CLI,接收 JSON 结果,并使用特定于语言环境的模板进行格式化。
英语:
- "What do I have to do today?"
- "Show me today's reminders"
- "What's on my schedule this week?"
韩语:
- "오늘 할 일 뭐 있어?"
- "오늘 미리알림 정리해줘"
- "이번 주 일정 뭐 있어?"
日语:
- "今日のタスクは?"
- "今日のリマインダーを見せて"
中文:
- "今天有什么任务?"
- "显示今天的提醒"
# 使用默认语言环境 (en) 列出
node skills/mac-reminders-agent/cli.js list --scope today
# 使用特定语言环境列出
node skills/mac-reminders-agent/cli.js list --scope week --locale ko
today - 仅限今天week - 本周(今天 ~ 未来 7 天)all - 所有提醒返回 JSON 数组:
[
{
"title": "任务标题",
"due": "2026-02-05T16:30:00" | null
}
]
使用 locales.json 中的模板,以用户语言格式化响应:
英语:
[Incomplete Reminders]
- 2/2 (Mon) 09:00 [Work] Meeting
- 2/3 (Tue) 14:00 [Personal] Visit bank
[Completed]
- 2/1 (Sun) [Work] Submit report ✅
韩语:
[미완료 미리알림]
- 2/2 (월) 09:00 [업무] 회의
- 2/3 (화) 14:00 [개인] 은행 방문
[완료됨]
- 2/1 (일) [업무] 보고서 제출 ✅
英语:
- "Add a meeting reminder for 9am tomorrow"
- "Set a reminder to submit report by Friday"
韩语:
- "내일 아침 9시에 회의 미리알림 추가해줘"
- "이번 주 금요일까지 보고서 제출 미리알림 넣어줘"
日语:
- "明日の朝9時に会議のリマインダーを追加して"
中文:
- "添加明天早上9点的会议提醒"
# 使用语言环境添加
node skills/mac-reminders-agent/cli.js add --title "Meeting" --due "2026-02-05T09:00:00+09:00" --locale ko
--title (必需):提醒标题--due (可选):ISO 8601 格式 (YYYY-MM-DDTHH:mm:ss+09:00)--note (可选):附加备注--locale (可选):响应语言 (en, ko, ja, zh)英语:
- "Added 'Meeting' reminder for 9am tomorrow."
- "Added 'Submit report' reminder without a due date."
韩语:
- "'회의' 미리알림을 추가했어요 (내일 오전 9시)."
- "'보고서 제출' 미리알림을 추가했어요 (마감일 없음)."
英语:
- "Change the meeting reminder to 10am"
- "Update the report deadline to next Monday"
韩语:
- "회의 미리알림 10시로 바꿔줘"
- "보고서 마감일 다음 주 월요일로 수정해줘"
# 编辑标题
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --title "New Meeting Title" --locale ko
# 编辑截止日期
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --due "2026-03-01T10:00:00+09:00"
# 编辑备注
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --note "Updated notes"
--id (必需):提醒 ID(来自列表输出的 calendarItemIdentifier)--title (可选):新标题--due (可选):新的截止日期,ISO 8601 格式--note (可选):新的备注文本--locale (可选):响应语言 (en, ko, ja, zh)list 命令获取提醒 ID编辑前,请务必先运行 list 命令以获取提醒的 id 字段。id 是 EventKit 的 calendarItemIdentifier(类似 UUID 的字符串)。
英语:
- "Delete the meeting reminder"
韩语:
- "회의 미리알림 삭제해줘"
node skills/mac-reminders-agent/cli.js delete --id "ABC123" --locale ko
--id (必需):提醒 ID(来自列表输出)--locale (可选):响应语言英语:
- "Mark the meeting reminder as done"
韩语:
- "회의 미리알림 완료 처리해줘"
node skills/mac-reminders-agent/cli.js complete --id "ABC123" --locale ko
--id (必需):提醒 ID(来自列表输出)--locale (可选):响应语言使用 --repeat 创建具有原生重复规则的提醒(创建单个带重复规则的提醒,而非多个副本)。
# 每周重复提醒
node skills/mac-reminders-agent/cli.js add --title "Weekly standup" --due "2026-02-10T09:00:00+09:00" --repeat weekly
# 隔周提醒
node skills/mac-reminders-agent/cli.js add --title "Sprint review" --due "2026-02-10T14:00:00+09:00" --repeat weekly --interval 2
# 每月重复提醒,直到年底
node skills/mac-reminders-agent/cli.js add --title "Monthly report" --due "2026-02-28T17:00:00+09:00" --repeat monthly --repeat-end 2026-12-31
--repeat (可选):daily, weekly, monthly, yearly--interval (可选):重复间隔(默认:1)。例如:--interval 2 = 每 2 周--repeat-end (可选):结束日期,格式为 YYYY-MM-DD当用户请求重复提醒(每周、隔周、每月等)时,必须使用 --repeat 选项。
请勿手动创建多个单独的提醒。
正确做法:
node cli.js add --title "주간 회의" --due "2026-02-10T09:00:00+09:00" --repeat weekly
错误做法(请勿这样做):
# 创建 12 个独立的提醒是错误的做法
node cli.js add --title "주간 회의 - 2/10" --due "2026-02-10T09:00:00+09:00"
node cli.js add --title "주간 회의 - 2/17" --due "2026-02-17T09:00:00+09:00"
...
英语:
- "There was a problem accessing the Reminders app."
韩语:
- "미리알림 앱에 접근하는 데 문제가 생겼어요."
日语:
- "リマインダーアプリへのアクセスに問題が発生しました。"
当自动集成失败时,以用户语言提供替代方案。
| 要求 | 详情 |
|---|---|
| 操作系统 | 仅限 macOS(已在 macOS 13+ 上测试) |
| Node.js | v18.0.0 或更高版本 |
| npm | 随 Node.js 附带 |
| Swift | 包含在 Xcode 命令行工具中 |
# 1. 安装 Xcode 命令行工具(如果尚未安装)
xcode-select --install
# 2. 安装 npm 依赖项
cd $SKILL_DIR
npm install
此技能需要访问 提醒事项 应用。首次使用时:
注意:Swift EventKit 桥接文件 (
eventkit-bridge.swift) 在需要时会即时编译。无需手动编译。
locales.json 支持多语言(en, ko, ja, zh)list --scope today|week|all [--locale XX] — 返回包含 id 字段的项目add --title ... [--due ...] [--repeat daily|weekly|monthly|yearly] [--interval N] [--repeat-end YYYY-MM-DD] [--locale XX]edit --id ID [--title ...] [--due ...] [--note ...] [--locale XX]delete --id ID [--locale XX]complete --id ID [--locale XX]--repeat 创建重复提醒(创建单个带重复规则的提醒)--locale 参数