Mac Reminders Agent
Overview
This skill integrates with the local macOS Reminders app to:
- - View and organize today's/this week's reminders (with unique IDs)
- Multiple lists: View all reminder lists, filter/add to specific lists
- Priority: Set and view priority levels (high/medium/low)
- Search: Find reminders by title keyword
- Add new reminders based on natural language requests
- Edit reminders: Modify title, due date, notes, priority by ID
- Delete reminders: Remove reminders by ID
- Complete reminders: Mark reminders as done by ID
- Native recurrence: Weekly, daily, monthly, yearly repeating reminders
- Parse meeting notes: Extract action items from text and suggest reminders
- Multi-language support: English, Korean, Japanese, Chinese
The skill uses the following files relative to its directory:
- -
cli.js (unified entry point) - INLINECODE1 (backend: AppleScript +
applescript npm module) - INLINECODE3 (native recurrence via Swift EventKit)
- INLINECODE4 (meeting notes parser for action item extraction)
- INLINECODE5 (language-specific triggers and responses)
Language Support
The skill automatically detects user language or can be explicitly set via --locale parameter.
Supported Languages
| Code | Language | Example Trigger |
|---|
| INLINECODE7 | English | "What do I have to do today?" |
| INLINECODE8 |
한국어 | "오늘 할 일 뭐 있어?" |
|
ja | 日本語 | "今日のタスクは?" |
|
zh | 中文 | "今天有什么任务?" |
Language Detection
- 1. Explicit: Use
--locale parameter - Automatic: Detect from user's message language
- Default: Falls back to
en (English)
How It Works
User natural language requests are handled in two cases:
- 1. List reminders (list)
- Add reminder (add)
For each case, call the Node.js CLI, receive JSON results, and format them using locale-specific templates.
0) View Reminder Lists
Command Invocation
CODEBLOCK0
Output Format
Returns JSON with calendars array:
CODEBLOCK1
1) List Reminders
Trigger Examples (by language)
English:
- - "What do I have to do today?"
- "Show me today's reminders"
- "What's on my schedule this week?"
Korean (한국어):
- - "오늘 할 일 뭐 있어?"
- "오늘 미리알림 정리해줘"
- "이번 주 일정 뭐 있어?"
Japanese (日本語):
- - "今日のタスクは?"
- "今日のリマインダーを見せて"
Chinese (中文):
Command Invocation
CODEBLOCK2
Parameters
- -
--scope (optional): today, week (default), INLINECODE16 - INLINECODE17 (optional): Filter by reminder list name (omit for all lists)
- INLINECODE18 (optional): Filter by title keyword (case-insensitive)
- INLINECODE19 (optional): Response language (en, ko, ja, zh)
Output Format
Returns JSON with items array:
CODEBLOCK3
Response Formatting
Use locales.json templates to format responses in user's language:
English:
CODEBLOCK4
Korean:
[미완료 미리알림]
- 2/2 (월) 09:00 [업무] 회의
- 2/3 (화) 14:00 [개인] 은행 방문
[완료됨]
- 2/1 (일) [업무] 보고서 제출 ✅
2) Add Reminder
Trigger Examples (by language)
English:
- - "Add a meeting reminder for 9am tomorrow"
- "Set a reminder to submit report by Friday"
Korean (한국어):
- - "내일 아침 9시에 회의 미리알림 추가해줘"
- "이번 주 금요일까지 보고서 제출 미리알림 넣어줘"
Japanese (日本語):
- - "明日の朝9時に会議のリマインダーを追加して"
Chinese (中文):
Command Invocation
CODEBLOCK6
Parameters
- -
--title (required): Reminder title - INLINECODE22 (optional): ISO 8601 format (
YYYY-MM-DDTHH:mm:ss+09:00) - INLINECODE24 (optional): Additional notes
- INLINECODE25 (optional):
high, medium, low, none (default: none) - INLINECODE30 (optional): Target reminder list name (default: system default list)
- INLINECODE31 (optional): Response language (en, ko, ja, zh)
Response Examples
English:
- - "Added 'Meeting' reminder for 9am tomorrow."
- "Added 'Submit report' reminder without a due date."
Korean:
- - "'회의' 미리알림을 추가했어요 (내일 오전 9시)."
- "'보고서 제출' 미리알림을 추가했어요 (마감일 없음)."
3) Edit Reminder
Trigger Examples (by language)
English:
- - "Change the meeting reminder to 10am"
- "Update the report deadline to next Monday"
Korean (한국어):
- - "회의 미리알림 10시로 바꿔줘"
- "보고서 마감일 다음 주 월요일로 수정해줘"
Command Invocation
CODEBLOCK7
Parameters
- -
--id (required): Reminder ID (calendarItemIdentifier from list output) - INLINECODE33 (optional): New title
- INLINECODE34 (optional): New due date in ISO 8601 format
- INLINECODE35 (optional): New note text
- INLINECODE36 (optional):
high, medium, low, INLINECODE40 - INLINECODE41 (optional): Response language (en, ko, ja, zh)
IMPORTANT: Use list first to get reminder IDs
Before editing, always run list to get the reminder's id field. The id is an EventKit calendarItemIdentifier (UUID-like string).
4) Delete Reminder
Trigger Examples (by language)
English:
- - "Delete the meeting reminder"
Korean (한국어):
Command Invocation
CODEBLOCK8
Parameters
- -
--id (required): Reminder ID (from list output) - INLINECODE48 (optional): Response language
5) Complete Reminder
Trigger Examples (by language)
English:
- - "Mark the meeting reminder as done"
Korean (한국어):
Command Invocation
CODEBLOCK9
Parameters
- -
--id (required): Reminder ID (from list output) - INLINECODE50 (optional): Response language
6) Recurring Reminders (Native Recurrence)
Use --repeat to create reminders with native recurrence (single reminder with repeat rule, not multiple copies).
Command Invocation
CODEBLOCK10
Parameters
- -
--repeat (optional): daily, weekly, monthly, INLINECODE56 - INLINECODE57 (optional): Repeat interval (default: 1). Example:
--interval 2 = every 2 weeks - INLINECODE59 (optional): End date in
YYYY-MM-DD format
IMPORTANT: Always use --repeat for recurring schedules
When user requests recurring reminders (매주, 격주, 매월, etc.), MUST use --repeat option.
Do NOT create multiple individual reminders manually.
Correct:
CODEBLOCK11
Wrong (DO NOT DO THIS):
# Creating 12 separate reminders is WRONG
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"
...
7) Parse Meeting Notes
Extract action items from meeting notes and suggest reminders. Pure text processing - no Reminders app access required.
Trigger Examples (by language)
English:
- - "Parse my meeting notes"
- "Extract action items from this text"
Korean (한국어):
- - "회의록에서 할 일 추출해줘"
- "미팅 내용에서 할 일 뽑아줘"
Japanese (日本語):
Chinese (中文):
Command Invocation
CODEBLOCK13
Parameters
- -
--text (required if no --file): Meeting notes as a string - INLINECODE62 (required if no --text): Path to a text file containing meeting notes
- INLINECODE63 (optional): Language for pattern matching (en, ko, ja, zh). Auto-detected if omitted.
Output Format
CODEBLOCK14
Detected Patterns
| Language | Action Keywords | Date Patterns | Priority Signals |
|---|
| English | TODO:, action item:, by [date], deadline:, need to | by March 20, tomorrow, next Friday | urgent, important, nice to have |
| Korean |
~까지, ~해야, ~할 것, 담당:, 기한: | 3월 15일, 내일, 다음 주 | 긴급, 중요, 나중에 |
| Japanese | ~まで, ~する必要, 担当:, 期限: | 3月15日, 明日, 来週 | 緊急, 重要, できれば |
| Chinese | ~之前, ~需要, 负责:, 截止: | 3月15日, 明天, 下周 | 紧急, 重要, 如果可以 |
IMPORTANT: Recommended Claude Workflow
- 1. Call
parse to get suggested INLINECODE65 - Present each item to the user with title, due date, and priority
- Ask user which items to add (all / specific ones / none)
- For each approved item, call INLINECODE66
The parse command only suggests. Claude MUST call add explicitly for each approved item.
Do NOT auto-add without user confirmation.
Error Handling
Locale-aware Error Messages
English:
- - "There was a problem accessing the Reminders app."
Korean:
- - "미리알림 앱에 접근하는 데 문제가 생겼어요."
Japanese:
- - "リマインダーアプリへのアクセスに問題が発生しました。"
Fallback Suggestions
When automatic integration fails, offer alternatives in user's language.
Requirements & Installation
System Requirements
| Requirement | Details |
|---|
| OS | macOS only (tested on macOS 13+) |
| Node.js |
v18.0.0 or higher |
|
npm | Included with Node.js |
|
Swift | Included with Xcode Command Line Tools |
Installation
CODEBLOCK15
macOS Permissions
This skill requires access to the Reminders app. On first use:
- 1. macOS will display a permission dialog asking to allow access to Reminders
- Click "OK" or "Allow" to grant access
- If denied, go to System Settings > Privacy & Security > Reminders and enable access for Terminal/your IDE
Note: The Swift EventKit bridge (eventkit-bridge.swift) is compiled on-the-fly when needed. No manual compilation required.
Summary
- - Multi-language support via
locales.json (en, ko, ja, zh) - Core commands:
-
lists [--locale XX] — view all reminder lists (calendars)
-
list --scope today|week|all [--list "NAME"] [--query "KEYWORD"] [--locale XX] — returns items with
id,
list,
priority fields
-
add --title ... [--due ...] [--priority high|medium|low|none] [--list "NAME"] [--repeat daily|weekly|monthly|yearly] [--interval N] [--repeat-end YYYY-MM-DD] [--locale XX]
-
edit --id ID [--title ...] [--due ...] [--note ...] [--priority ...] [--locale XX]
-
delete --id ID [--locale XX]
-
complete --id ID [--locale XX]
- - Multiple lists: Target specific reminder lists or search across all
- Priority: Set priority levels on reminders (high/medium/low)
- Search: Filter reminders by title keyword
- Native recurrence: Use
--repeat for recurring reminders (creates single reminder with repeat rule) - Parse meeting notes:
parse --text "..." [--file path] [--locale XX] — extract action items and suggest reminders - Automatically detect user language or use explicit
--locale parameter - Format responses using locale-specific templates
Mac Reminders Agent
概述
此技能与本地 macOS 提醒事项 应用集成,可实现以下功能:
- - 查看并整理今日/本周的提醒事项(含唯一ID)
- 多列表:查看所有提醒列表,筛选/添加到特定列表
- 优先级:设置和查看优先级级别(高/中/低)
- 搜索:按标题关键词查找提醒事项
- 根据自然语言请求添加新提醒事项
- 编辑提醒事项:按ID修改标题、截止日期、备注、优先级
- 删除提醒事项:按ID删除提醒事项
- 完成提醒事项:按ID将提醒事项标记为已完成
- 原生重复:每周、每天、每月、每年重复提醒
- 解析会议记录:从文本中提取行动项并建议提醒事项
- 多语言支持:英语、韩语、日语、中文
该技能使用其目录下的以下文件:
- - cli.js(统一入口点)
- reminders/apple-bridge.js(后端:AppleScript + applescript npm模块)
- reminders/eventkit-bridge.swift(通过Swift EventKit实现原生重复)
- reminders/meeting-parser.js(用于提取行动项的会议记录解析器)
- locales.json(特定语言的触发词和响应)
语言支持
该技能会自动检测用户语言,也可以通过 --locale 参数显式设置。
支持的语言
| 代码 | 语言 | 示例触发词 |
|---|
| en | 英语 | What do I have to do today? |
| ko |
한국어 | 오늘 할 일 뭐 있어? |
| ja | 日本語 | 今日のタスクは? |
| zh | 中文 | 今天有什么任务? |
语言检测
- 1. 显式设置:使用 --locale 参数
- 自动检测:从用户消息的语言中检测
- 默认值:回退为 en(英语)
工作原理
用户的自然语言请求分两种情况处理:
- 1. 列出提醒事项(list)
- 添加提醒事项(add)
对于每种情况,调用Node.js CLI,接收JSON结果,并使用特定于语言环境的模板进行格式化。
0) 查看提醒列表
命令调用
bash
node skills/mac-reminders-agent/cli.js lists --locale ko
输出格式
返回包含日历数组的JSON:
json
{
calendars: [
{ id: cal-id-1, name: 提醒事项, isDefault: true },
{ id: cal-id-2, name: 工作, isDefault: false }
]
}
1) 列出提醒事项
触发词示例(按语言)
英语:
- - What do I have to do today?
- Show me todays reminders
- Whats on my schedule this week?
韩语(한국어):
- - 오늘 할 일 뭐 있어?
- 오늘 미리알림 정리해줘
- 이번 주 일정 뭐 있어?
日语(日本語):
中文(中文):
命令调用
bash
使用默认语言环境列出(en)
node skills/mac-reminders-agent/cli.js list --scope today
使用特定语言环境列出
node skills/mac-reminders-agent/cli.js list --scope week --locale ko
从特定列表列出
node skills/mac-reminders-agent/cli.js list --scope week --list 工作
按标题关键词搜索
node skills/mac-reminders-agent/cli.js list --query 会议 --scope all
参数
- - --scope(可选):today、week(默认)、all
- --list(可选):按提醒列表名称筛选(省略则显示所有列表)
- --query(可选):按标题关键词筛选(不区分大小写)
- --locale(可选):响应语言(en、ko、ja、zh)
输出格式
返回包含事项数组的JSON:
json
[
{
id: ABC-123-DEF,
title: 任务标题,
due: 2026-02-05T16:30:00+09:00,
list: 工作,
priority: high,
completed: false
}
]
响应格式化
使用 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) 添加提醒事项
触发词示例(按语言)
英语:
- - Add a meeting reminder for 9am tomorrow
- Set a reminder to submit report by Friday
韩语(한국어):
- - 내일 아침 9시에 회의 미리알림 추가해줘
- 이번 주 금요일까지 보고서 제출 미리알림 넣어줘
日语(日本語):
中文(中文):
命令调用
bash
使用语言环境添加
node skills/mac-reminders-agent/cli.js add --title 会议 --due 2026-02-05T09:00:00+09:00 --locale ko
添加时指定优先级和特定列表
node skills/mac-reminders-agent/cli.js add --title 紧急报告 --due 2026-02-05T17:00:00+09:00 --priority high --list 工作 --locale ko
参数
- - --title(必需):提醒事项标题
- --due(可选):ISO 8601格式(YYYY-MM-DDTHH:mm:ss+09:00)
- --note(可选):附加备注
- --priority(可选):high、medium、low、none(默认:none)
- --list(可选):目标提醒列表名称(默认:系统默认列表)
- --locale(可选):响应语言(en、ko、ja、zh)
响应示例
英语:
- - Added Meeting reminder for 9am tomorrow.
- Added Submit report reminder without a due date.
韩语:
- - 회의 미리알림을 추가했어요 (내일 오전 9시).
- 보고서 제출 미리알림을 추가했어요 (마감일 없음).
3) 编辑提醒事项
触发词示例(按语言)
英语:
- - Change the meeting reminder to 10am
- Update the report deadline to next Monday
韩语(한국어):
- - 회의 미리알림 10시로 바꿔줘
- 보고서 마감일 다음 주 월요일로 수정해줘
命令调用
bash
编辑标题
node skills/mac-reminders-agent/cli.js edit --id ABC123 --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 --priority high
编辑备注
node skills/mac-reminders-agent/cli.js edit --id ABC123 --note 已更新备注
参数
- - --id(必需):提醒事项ID(来自列表输出的calendarItemIdentifier)
- --title(可选):新标题
- --due(可选):ISO 8601格式的新截止日期
- --note(可选):新备注文本
- --priority(可选):