This skill integrates with the local macOS Reminders app to:
The skill uses the following files relative to its directory:
cli.js (unified entry point)reminders/apple-bridge.js (backend: AppleScript + applescript npm module)reminders/eventkit-bridge.swift (native recurrence via Swift EventKit)reminders/meeting-parser.js (meeting notes parser for action item extraction)locales.json (language-specific triggers and responses)The skill automatically detects user language or can be explicitly set via --locale parameter.
| Code | Language | Example Trigger |
|---|---|---|
| ------ | ---------- | ----------------- |
en | English | "What do I have to do today?" |
ko | 한국어 | "오늘 할 일 뭐 있어?" |
ja | 日本語 | "今日のタスクは?" |
zh | 中文 | "今天有什么任务?" |
--locale parameteren (English)User natural language requests are handled in two cases:
For each case, call the Node.js CLI, receive JSON results, and format them using locale-specific templates.
node skills/mac-reminders-agent/cli.js lists --locale ko
Returns JSON with calendars array:
{
"calendars": [
{ "id": "cal-id-1", "name": "Reminders", "isDefault": true },
{ "id": "cal-id-2", "name": "Work", "isDefault": false }
]
}
English:
Korean (한국어):
Japanese (日本語):
Chinese (中文):
# List with default locale (en)
node skills/mac-reminders-agent/cli.js list --scope today
# List with specific locale
node skills/mac-reminders-agent/cli.js list --scope week --locale ko
# List from specific list
node skills/mac-reminders-agent/cli.js list --scope week --list "Work"
# Search by title keyword
node skills/mac-reminders-agent/cli.js list --query "meeting" --scope all
--scope (optional): today, week (default), all--list (optional): Filter by reminder list name (omit for all lists)--query (optional): Filter by title keyword (case-insensitive)--locale (optional): Response language (en, ko, ja, zh)Returns JSON with items array:
[
{
"id": "ABC-123-DEF",
"title": "Task title",
"due": "2026-02-05T16:30:00+09:00",
"list": "Work",
"priority": "high",
"completed": false
}
]
Use locales.json templates to format responses in user's language:
English:
[Incomplete Reminders]
- 2/2 (Mon) 09:00 [Work] Meeting
- 2/3 (Tue) 14:00 [Personal] Visit bank
[Completed]
- 2/1 (Sun) [Work] Submit report ✅
Korean:
[미완료 미리알림]
- 2/2 (월) 09:00 [업무] 회의
- 2/3 (화) 14:00 [개인] 은행 방문
[완료됨]
- 2/1 (일) [업무] 보고서 제출 ✅
English:
Korean (한국어):
Japanese (日本語):
Chinese (中文):
# Add with locale
node skills/mac-reminders-agent/cli.js add --title "Meeting" --due "2026-02-05T09:00:00+09:00" --locale ko
# Add with priority and specific list
node skills/mac-reminders-agent/cli.js add --title "Urgent Report" --due "2026-02-05T17:00:00+09:00" --priority high --list "Work" --locale ko
--title (required): Reminder title--due (optional): ISO 8601 format (YYYY-MM-DDTHH:mm:ss+09:00)--note (optional): Additional notes--priority (optional): high, medium, low, none (default: none)--list (optional): Target reminder list name (default: system default list)--locale (optional): Response language (en, ko, ja, zh)English:
Korean:
English:
Korean (한국어):
# Edit title
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --title "New Meeting Title" --locale ko
# Edit due date
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --due "2026-03-01T10:00:00+09:00"
# Edit priority
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --priority high
# Edit note
node skills/mac-reminders-agent/cli.js edit --id "ABC123" --note "Updated notes"
--id (required): Reminder ID (calendarItemIdentifier from list output)--title (optional): New title--due (optional): New due date in ISO 8601 format--note (optional): New note text--priority (optional): high, medium, low, none--locale (optional): Response language (en, ko, ja, zh)list first to get reminder IDsBefore editing, always run list to get the reminder's id field. The id is an EventKit calendarItemIdentifier (UUID-like string).
English:
Korean (한국어):
node skills/mac-reminders-agent/cli.js delete --id "ABC123" --locale ko
--id (required): Reminder ID (from list output)--locale (optional): Response languageEnglish:
Korean (한국어):
node skills/mac-reminders-agent/cli.js complete --id "ABC123" --locale ko
--id (required): Reminder ID (from list output)--locale (optional): Response languageUse --repeat to create reminders with native recurrence (single reminder with repeat rule, not multiple copies).
# Weekly recurring reminder
node skills/mac-reminders-agent/cli.js add --title "Weekly standup" --due "2026-02-10T09:00:00+09:00" --repeat weekly
# Bi-weekly reminder
node skills/mac-reminders-agent/cli.js add --title "Sprint review" --due "2026-02-10T14:00:00+09:00" --repeat weekly --interval 2
# Monthly reminder until end of year
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 (optional): daily, weekly, monthly, yearly--interval (optional): Repeat interval (default: 1). Example: --interval 2 = every 2 weeks--repeat-end (optional): End date in YYYY-MM-DD formatWhen user requests recurring reminders (매주, 격주, 매월, etc.), MUST use --repeat option.
Do NOT create multiple individual reminders manually.
Correct:
node cli.js add --title "주간 회의" --due "2026-02-10T09:00:00+09:00" --repeat weekly
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"
...
Extract action items from meeting notes and suggest reminders. Pure text processing - no Reminders app access required.
English:
Korean (한국어):
Japanese (日本語):
Chinese (中文):
# From inline text
node skills/mac-reminders-agent/cli.js parse --text "Q1 report due by March 20. John: prepare slides by Friday - URGENT" --locale en
# From a file
node skills/mac-reminders-agent/cli.js parse --file /path/to/meeting_notes.txt --locale ko
--text (required if no --file): Meeting notes as a string--file (required if no --text): Path to a text file containing meeting notes--locale (optional): Language for pattern matching (en, ko, ja, zh). Auto-detected if omitted.{
"ok": true,
"locale": "en",
"labels": {},
"items": [
{
"title": "Submit Q1 report",
"due": "2026-03-20T17:00:00+09:00",
"priority": "high",
"confidence": "high",
"source_line": "Q1 report due by March 20 - URGENT"
}
]
}
| 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日, 明天, 下周 | 紧急, 重要, 如果可以 |
parse to get suggested items[]add --title ... --due ... --priority ...The parse command only suggests. Claude MUST call add explicitly for each approved item.
Do NOT auto-add without user confirmation.
English:
Korean:
Japanese:
When automatic integration fails, offer alternatives in user's language.
| 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 |
# 1. Install Xcode Command Line Tools (if not already installed)
xcode-select --install
# 2. Install npm dependencies
cd $SKILL_DIR
npm install
This skill requires access to the Reminders app. On first use:
> Note: The Swift EventKit bridge (eventkit-bridge.swift) is compiled on-the-fly when needed. No manual compilation required.
locales.json (en, ko, ja, zh)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 fieldsadd --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]--repeat for recurring reminders (creates single reminder with repeat rule)parse --text "..." [--file path] [--locale XX] — extract action items and suggest reminders--locale parameter共 2 个版本