macos-calendar

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

macOS Calendar

macOS 日历

Manage Apple Calendar events via
$SKILL_DIR/scripts/calendar.sh
. All date handling uses relative math (
current date + N * days
) to avoid locale issues (FR/EN/DE date formats).
通过
$SKILL_DIR/scripts/calendar.sh
管理Apple Calendar事件。所有日期处理采用相对计算(
current date + N * days
)以避免本地化问题(法/英/德日期格式差异)。

Quick start

快速开始

List calendars

列出日历

Always list calendars first to find the correct calendar name:
bash
"$SKILL_DIR/scripts/calendar.sh" list-calendars
请始终先查询日历列表,以找到正确的日历名称:
bash
"$SKILL_DIR/scripts/calendar.sh" list-calendars

Create an event

创建事件

bash
echo '<json>' | "$SKILL_DIR/scripts/calendar.sh" create-event
JSON fields:
FieldRequiredDefaultDescription
summary
yes-Event title
calendar
nofirst calendarCalendar name (from list-calendars)
description
no""Event notes
offset_days
no0Days from today (0=today, 1=tomorrow, 7=next week)
iso_date
no-Absolute date
YYYY-MM-DD
(overrides offset_days)
hour
no9Start hour (0-23)
minute
no0Start minute (0-59)
duration_minutes
no30Duration
alarm_minutes
no0Alert N minutes before (0=no alarm)
all_day
nofalseAll-day event
recurrence
no-iCal RRULE string. See references/recurrence.md
bash
echo '<json>' | "$SKILL_DIR/scripts/calendar.sh" create-event
JSON字段说明:
字段必填默认值描述
summary
-事件标题
calendar
首个日历日历名称(来自list-calendars返回结果)
description
""事件备注
offset_days
0距离今日的天数(0=今日,1=明日,7=下周同日)
iso_date
-绝对日期
YYYY-MM-DD
(优先级高于offset_days)
hour
9开始小时(0-23)
minute
0开始分钟(0-59)
duration_minutes
30事件持续时长
alarm_minutes
0事件前N分钟提醒(0=无提醒)
all_day
false全天事件
recurrence
-iCal RRULE字符串。参考references/recurrence.md

Interpreting natural language

自然语言解析

Map user requests to JSON fields:
User saysJSON
"tomorrow at 2pm"
offset_days: 1, hour: 14
"in 3 days"
offset_days: 3
"next Monday at 10am"Calculate offset_days from today to next Monday,
hour: 10
"February 25 at 3:30pm"
iso_date: "2026-02-25", hour: 15, minute: 30
"every weekday at 9am"
hour: 9, recurrence: "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"
"remind me 1 hour before"
alarm_minutes: 60
"all day event on March 1"
iso_date: "2026-03-01", all_day: true
For "next Monday", "next Friday" etc: compute the day offset using the current date. Use
date
command if needed:
bash
undefined
将用户请求映射到JSON字段:
用户表述对应JSON字段
“明天下午2点”
offset_days: 1, hour: 14
“3天后”
offset_days: 3
“下周一上午10点”计算今日到下周一的offset_days,
hour: 10
“2月25日下午3点30分”
iso_date: "2026-02-25", hour: 15, minute: 30
“每个工作日上午9点”
hour: 9, recurrence: "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"
“提前1小时提醒我”
alarm_minutes: 60
“3月1日的全天事件”
iso_date: "2026-03-01", all_day: true
对于“下周一”、“下周五”这类表述:使用当前日期计算天数偏移。必要时可使用
date
命令:
bash
undefined

Days until next Monday (1=Monday)

距离下周一的天数(1=Monday)

target=1; today=$(date +%u); echo $(( (target - today + 7) % 7 ))
undefined
target=1; today=$(date +%u); echo $(( (target - today + 7) % 7 ))
undefined

Example prompts

示例提示

These are real user prompts and the commands you should run:
"Remind me to call the dentist in 2 days"
bash
"$SKILL_DIR/scripts/calendar.sh" list-calendars
Then:
bash
echo '{"calendar":"Personnel","summary":"Call dentist","offset_days":2,"hour":9,"duration_minutes":15,"alarm_minutes":30}' | "$SKILL_DIR/scripts/calendar.sh" create-event
"Schedule a team sync every Tuesday at 2pm with a 10-min reminder"
bash
echo '{"calendar":"Work","summary":"Team sync","hour":14,"duration_minutes":60,"recurrence":"FREQ=WEEKLY;BYDAY=TU","alarm_minutes":10}' | "$SKILL_DIR/scripts/calendar.sh" create-event
"Block July 15 as a vacation day"
bash
echo '{"calendar":"Personnel","summary":"Vacances","iso_date":"2026-07-15","all_day":true}' | "$SKILL_DIR/scripts/calendar.sh" create-event
"I have a doctor appointment next Thursday at 3:30pm, remind me 1 hour before"
bash
undefined
以下是真实用户请求以及对应应执行的命令:
“2天后提醒我给牙医打电话”
bash
"$SKILL_DIR/scripts/calendar.sh" list-calendars
然后执行:
bash
echo '{"calendar":"Personnel","summary":"Call dentist","offset_days":2,"hour":9,"duration_minutes":15,"alarm_minutes":30}' | "$SKILL_DIR/scripts/calendar.sh" create-event
“每周二下午2点安排团队同步会,提前10分钟提醒”
bash
echo '{"calendar":"Work","summary":"Team sync","hour":14,"duration_minutes":60,"recurrence":"FREQ=WEEKLY;BYDAY=TU","alarm_minutes":10}' | "$SKILL_DIR/scripts/calendar.sh" create-event
“将7月15日标记为休息日”
bash
echo '{"calendar":"Personnel","summary":"Vacances","iso_date":"2026-07-15","all_day":true}' | "$SKILL_DIR/scripts/calendar.sh" create-event
“我下周四下午3点30分有个医生预约,提前1小时提醒我”
bash
undefined

First compute offset_days to next Thursday (4=Thursday)

首先计算到下周四的offset_days(4=Thursday)

target=4; today=$(date +%u); offset=$(( (target - today + 7) % 7 )); [ "$offset" -eq 0 ] && offset=7
Then:
```bash
echo "{\"calendar\":\"Personnel\",\"summary\":\"Doctor appointment\",\"offset_days\":$offset,\"hour\":15,\"minute\":30,\"duration_minutes\":60,\"alarm_minutes\":60}" | "$SKILL_DIR/scripts/calendar.sh" create-event
"Set up a daily standup at 9am on weekdays for the next 4 weeks"
bash
echo '{"calendar":"Work","summary":"Daily standup","hour":9,"duration_minutes":15,"recurrence":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=20"}' | "$SKILL_DIR/scripts/calendar.sh" create-event
"Add a biweekly 1-on-1 with my manager on Fridays at 11am"
bash
echo '{"calendar":"Work","summary":"1-on-1 Manager","hour":11,"duration_minutes":30,"recurrence":"FREQ=WEEKLY;INTERVAL=2;BYDAY=FR","alarm_minutes":5}' | "$SKILL_DIR/scripts/calendar.sh" create-event
target=4; today=$(date +%u); offset=$(( (target - today + 7) % 7 )); [ "$offset" -eq 0 ] && offset=7
然后执行:
```bash
echo "{\"calendar\":\"Personnel\",\"summary\":\"Doctor appointment\",\"offset_days\":$offset,\"hour\":15,\"minute\":30,\"duration_minutes\":60,\"alarm_minutes\":60}" | "$SKILL_DIR/scripts/calendar.sh" create-event
“接下来4周的工作日上午9点设置每日站会”
bash
echo '{"calendar":"Work","summary":"Daily standup","hour":9,"duration_minutes":15,"recurrence":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=20"}' | "$SKILL_DIR/scripts/calendar.sh" create-event
“每两周周五上午11点添加和经理的1对1会议”
bash
echo '{"calendar":"Work","summary":"1-on-1 Manager","hour":11,"duration_minutes":30,"recurrence":"FREQ=WEEKLY;INTERVAL=2;BYDAY=FR","alarm_minutes":5}' | "$SKILL_DIR/scripts/calendar.sh" create-event

Critical rules

重要规则

  1. Always list calendars first if the user hasn't specified one — calendars marked
    [read-only]
    cannot be used for event creation
  2. Never use hardcoded date strings in AppleScript — always use
    offset_days
    or
    iso_date
  3. Confirm the calendar name with the user if multiple personal calendars exist
  4. Never target a
    [read-only]
    calendar
    — the script will reject it with an error
  5. For recurring events, consult references/recurrence.md for RRULE syntax
  6. Pass JSON via stdin — never as a CLI argument (avoids leaking data in process list)
  7. All fields are validated by the script (type coercion, range checks, format validation) — invalid input is rejected with an error message
  8. All actions are logged to
    logs/calendar.log
    with timestamp, command, calendar, and summary
  1. 如果用户未指定日历,请始终先列出所有日历——标记为
    [read-only]
    的日历无法用于创建事件
  2. 禁止在AppleScript中使用硬编码的日期字符串——始终使用
    offset_days
    iso_date
  3. 如果存在多个个人日历,请向用户确认要使用的日历名称
  4. 禁止选择
    [read-only]
    的日历
    ——脚本会报错拒绝请求
  5. 对于重复事件,请参考references/recurrence.md查看RRULE语法
  6. 通过标准输入传递JSON——不要作为CLI参数传递(避免在进程列表中泄露数据)
  7. 脚本会校验所有字段(类型转换、范围检查、格式校验)——无效输入会被拒绝并返回错误信息
  8. 所有操作都会记录到
    logs/calendar.log
    ,包含时间戳、命令、日历名称和事件标题