6.1k★by swancho
mac-reminders-agent – OpenClaw Skill
mac-reminders-agent is an OpenClaw Skills integration for coding workflows. |
Skill Snapshot
| name | mac-reminders-agent |
| description | | OpenClaw Skills integration. |
| owner | swancho |
| repository | swancho/mac-reminders-agent |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @swancho/mac-reminders-agent |
| last updated | Feb 7, 2026 |
Maintainer

name: mac-reminders-agent version: 1.1.0 author: swancho license: CC-BY-NC-4.0 description: | Integrate with macOS Reminders app to check today's/this week's tasks or add new reminders. Supports multiple languages (en, ko, ja, zh) for trigger detection and response formatting. Trigger this skill when users ask to "check today's/this week's reminders/tasks/sessions", and internally call cli.js → apple-bridge.js to summarize and organize the results.
Mac Reminders Agent
Overview
This skill integrates with the local macOS Reminders app to:
- View and organize today's/this week's reminders (work/personal/sessions)
- Add new reminders based on natural language requests
- Multi-language support: English, Korean, Japanese, Chinese
The skill uses the following files relative to its directory:
cli.js(unified entry point)reminders/apple-bridge.js(backend: AppleScript +applescriptnpm module)locales.json(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 |
|---|---|---|
en | English | "What do I have to do today?" |
ko | 한국어 | "오늘 할 일 뭐 있어?" |
ja | 日本語 | "今日のタスクは?" |
zh | 中文 | "今天有什么任务?" |
Language Detection
- Explicit: Use
--localeparameter - 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:
- List reminders (list)
- Add reminder (add)
For each case, call the Node.js CLI, receive JSON results, and format them using locale-specific templates.
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
# 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
Scope Options
today- Today onlyweek- This week (today ~ +7 days)all- All reminders
Output Format
Returns JSON array:
[
{
"title": "Task title",
"due": "2026-02-05T16:30:00" | null
}
]
Response Formatting
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 (일) [업무] 보고서 제출 ✅
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 (中文):
- "添加明天早上9点的会议提醒"
Command Invocation
# Add with locale
node skills/mac-reminders-agent/cli.js add --title "Meeting" --due "2026-02-05T09:00:00+09:00" --locale ko
Parameters
--title(required): Reminder title--due(optional): ISO 8601 format (YYYY-MM-DDTHH:mm:ss+09:00)--note(optional): Additional notes--locale(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시)."
- "'보고서 제출' 미리알림을 추가했어요 (마감일 없음)."
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.
Environment Constraints
- macOS only: Uses AppleScript to control Reminders app
- Dependency: Requires
applescriptnpm module
Summary
- Multi-language support via
locales.json(en, ko, ja, zh) - Core commands:
list --scope today|week|all [--locale XX]andadd --title ... [--due ...] [--locale XX] - Automatically detect user language or use explicit
--localeparameter - Format responses using locale-specific templates
Mac Reminders Agent
macOS Reminders app integration skill for OpenClaw/Claude agents.
Features
- 📋 List reminders (today/week/all)
- ➕ Add new reminders with due dates
- 🌍 Multi-language support (en, ko, ja, zh)
- ⏰ Cron-compatible for scheduled checks
- ☁️ iCloud Sync: Reminders sync automatically to all devices (iPhone, iPad, Mac) logged into the same Apple ID
iCloud Sync
When you add or modify reminders using this skill on your Mac, they automatically sync to all your Apple devices (iPhone, iPad, Apple Watch, other Macs) logged into the same Apple ID via iCloud.
This means:
- ✅ Add a reminder via agent → appears on your iPhone instantly
- ✅ Complete a reminder on iPhone → reflected in agent queries
- ✅ No manual sync required
Note: Ensure iCloud Reminders is enabled in System Settings → Apple ID → iCloud → Reminders
Requirements
- macOS only (uses AppleScript)
- Node.js 18+
applescriptnpm module- iCloud Reminders enabled (for cross-device sync)
Installation
1. Install to OpenClaw workspace
# Copy skill to workspace
cp -r mac-reminders-agent ~/clawd/skills/
# Install dependency
cd ~/clawd && npm install applescript
2. Or install via ClawHub (after publishing)
clawhub install mac-reminders-agent
Usage
List Reminders
# Today's reminders (English)
node skills/mac-reminders-agent/cli.js list --scope today
# This week's reminders (Korean)
node skills/mac-reminders-agent/cli.js list --scope week --locale ko
# All reminders (Japanese)
node skills/mac-reminders-agent/cli.js list --scope all --locale ja
Output:
{
"locale": "ko",
"labels": {
"list_header_incomplete": "미완료 미리알림",
"list_header_completed": "완료됨"
},
"items": [
{ "title": "회의", "due": "2026년 2월 5일 09:00:00" },
{ "title": "보고서 제출", "due": null }
]
}
Add Reminder
# Basic (English)
node skills/mac-reminders-agent/cli.js add --title "Meeting"
# With due date (Korean)
node skills/mac-reminders-agent/cli.js add \
--title "회의" \
--due "2026-02-05T09:00:00+09:00" \
--locale ko
# With note
node skills/mac-reminders-agent/cli.js add \
--title "Call John" \
--due "2026-02-05T15:00:00+09:00" \
--note "Discuss project timeline"
Output:
{
"ok": true,
"title": "회의",
"due": "2026-02-05T09:00:00+09:00",
"locale": "ko",
"message": "'회의' 미리알림을 추가했어요 (2026-02-05T09:00:00+09:00)."
}
Parameters
| Parameter | Required | Description |
|---|---|---|
--scope | No | today, week, all (default: week) |
--title | Yes (add) | Reminder title |
--due | No | ISO 8601 format: YYYY-MM-DDTHH:mm:ss+09:00 |
--note | No | Additional notes |
--locale | No | en, ko, ja, zh (default: en) |
Customization
Adding New Languages
Edit locales.json to add new languages:
{
"es": {
"name": "Español",
"triggers": {
"list": ["¿Qué tengo que hacer hoy?"],
"add": ["Añadir un recordatorio para mañana"]
},
"responses": {
"added": "Recordatorio '{title}' añadido{due_text}.",
"added_no_due": " sin fecha límite",
"added_with_due": " para {due}",
"list_header_incomplete": "Recordatorios pendientes",
"list_header_completed": "Completados",
"no_reminders": "No se encontraron recordatorios.",
"error_access": "Hubo un problema al acceder a la app Recordatorios.",
"ask_when": "¿Cuándo necesitas este recordatorio?"
}
}
}
Changing Default Reminder List
By default, reminders are added to the default list. To change this, edit reminders/apple-bridge.js:
# Find this line:
tell default list
# Change to specific list:
tell list "Work"
Timezone Configuration
Default timezone is +09:00 (KST). To change, edit reminders/apple-bridge.js:
// Find parseISO function, modify the regex:
const m = dueISO.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):\d{2}\+09:00$/);
// Change +09:00 to your timezone, e.g., +00:00 for UTC
Cron Usage Examples
OpenClaw Cron Integration
Add to your OpenClaw cron configuration (~/.openclaw/openclaw.json):
{
"cron": {
"jobs": [
{
"name": "morning-reminders",
"schedule": "0 9 * * *",
"command": "Check today's reminders and summarize priorities",
"agent": "main"
},
{
"name": "weekly-review",
"schedule": "0 18 * * 5",
"command": "Review this week's completed reminders and plan for next week",
"agent": "main"
}
]
}
}
Direct Cron (crontab)
# Edit crontab
crontab -e
# Morning reminder check (9 AM daily)
0 9 * * * cd ~/clawd && node skills/mac-reminders-agent/cli.js list --scope today --locale ko >> /tmp/reminders.log 2>&1
# Weekly summary (Friday 6 PM)
0 18 * * 5 cd ~/clawd && node skills/mac-reminders-agent/cli.js list --scope week --locale ko >> /tmp/weekly-reminders.log 2>&1
Telegram Bot Cron Example
Configure OpenClaw to send reminders via Telegram:
{
"cron": {
"jobs": [
{
"name": "telegram-morning-brief",
"schedule": "0 8 * * *",
"command": "오늘 미리알림 확인해서 텔레그램으로 요약해줘",
"agent": "main",
"channel": "telegram"
}
]
}
}
LaunchAgent (macOS Native)
Create ~/Library/LaunchAgents/com.reminders.daily.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.reminders.daily</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/node</string>
<string>/Users/YOUR_USERNAME/clawd/skills/mac-reminders-agent/cli.js</string>
<string>list</string>
<string>--scope</string>
<string>today</string>
<string>--locale</string>
<string>ko</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/tmp/reminders-daily.log</string>
</dict>
</plist>
Load with:
launchctl load ~/Library/LaunchAgents/com.reminders.daily.plist
Agent Prompts Examples
Morning Brief (Korean)
오늘 미리알림 확인해서 우선순위 정리해줘.
긴급한 것 먼저, 그다음 중요한 것 순서로.
Weekly Planning (English)
Check this week's reminders and create a daily breakdown.
Group by work vs personal, and highlight any overdue items.
Add via Natural Language
내일 오전 10시에 "팀 미팅" 미리알림 추가해줘
Troubleshooting
"applescript module not found"
cd ~/clawd && npm install applescript
"Reminders app access denied"
Grant Terminal/iTerm automation permissions:
- System Preferences → Privacy & Security → Automation
- Enable "Reminders" for Terminal
Reminders not showing
- Check if reminders are in the default list
- Verify date range with
--scope all
License
CC BY-NC 4.0 - Free to use and modify, no commercial use.
Author
swancho
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
FAQ
How do I install mac-reminders-agent?
Run openclaw add @swancho/mac-reminders-agent in your terminal. This installs mac-reminders-agent into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/swancho/mac-reminders-agent. Review commits and README documentation before installing.
