ClawSkills logoClawSkills

Apple Calendar CLI

与 macOS 上的 Apple Calendar 交互时,应使用此技能。用于列出日历、查看事件、创建/更新/删除日历事

介绍

# Apple Calendar CLI (accli)

## 安装

```bash npm install -g @joargp/accli ```

**要求:** 仅限 macOS(使用 JavaScript for Automation)

## 概述

accli 工具提供对 macOS Apple 日历的命令行访问。它支持列出日历、查询事件、创建/更新/删除事件,以及检查跨日历的空闲状态。

## 快速参考

### 日期时间格式 - 定时事件:YYYY-MM-DDTHH:mm 或 YYYY-MM-DDTHH:mm:ss - 全天事件:YYYY-MM-DD

### 全局选项 - --json - 以 JSON 格式输出(推荐用于解析) - --help - 显示任何命令的帮助信息

## 命令

### 列出日历

``` accli calendars [--json] ```

列出所有可用日历及其名称和持久化 ID。首先运行此命令以发现可用日历及其 ID。

### 列出事件

``` accli events <calendarName> [options] ```

选项: - --calendar-id <id> - 持久化日历 ID(推荐使用,而非名称) - --from <datetime> - 范围的开始时间(默认:现在) - --to <datetime> - 范围的结束时间(默认:from + 7 天) - --max <n> - 返回的最大事件数(默认:50) - --query <q> - 对摘要/位置/描述进行不区分大小写的过滤 - --json - 输出 JSON

示例:

```bash # Events from Work calendar for this week accli events Work --json

# Events in January accli events Work --from 2025-01-01 --to 2025-01-31 --json

# Search for specific events accli events Work --query "standup" --max 10 --json ```

### 获取单个事件

``` accli event <calendarName> <eventId> [--json] ```

根据 ID 检索特定事件的详细信息。

### 创建事件

``` accli create <calendarName> --summary <s> --start <datetime> --end <datetime> [options] ```

必需选项: - --summary <s> - 事件标题 - --start <datetime> - 开始时间 - --end <datetime> - 结束时间

可选: - --location <l> - 事件地点 - --description <d> - 事件描述 - --all-day - 创建全天事件 - --json - 输出 JSON

示例:

```bash # Create a timed meeting accli create Work --summary "Team Standup" --start 2025-01-15T09:00 --end 2025-01-15T09:30 --json

# Create an all-day event accli create Personal --summary "Vacation" --start 2025-07-01 --end 2025-07-05 --all-day --json

# Create with location and description accli create Work --summary "Client Meeting" --start 2025-01-15T14:00 --end 2025-01-15T15:00 \ --location "Conference Room A" --description "Q1 planning discussion" --json ```

### 更新事件

``` accli update <calendarName> <eventId> [options] ```

选项(均为可选 - 仅提供需要更改的内容): - --summary <s> - 新标题 - --start <datetime> - 新开始时间 - --end <datetime> - 新结束时间 - --location <l> - 新地点 - --description <d> - 新描述 - --all-day - 转换为全天事件 - --no-all-day - 转换为定时事件 - --json - 输出 JSON

示例:

```bash accli update Work event-id-123 --summary "Updated Meeting Title" --start 2025-01-15T15:00 --end 2025-01-15T16:00 --json ```

### 删除事件

``` accli delete <calendarName> <eventId> [--json] ```

永久删除事件。执行前需与用户确认。

### 检查忙/闲状态

``` accli freebusy --calendar <name> --from <datetime> --to <datetime> [options] ```

选项: - --calendar <name> - 日历名称(可重复以指定多个日历) - --calendar-id <id> - 持久化日历 ID(可重复) - --from <datetime> - 范围的开始时间(必需) - --to <datetime> - 范围的结束时间(必需) - --json - 输出 JSON

显示忙碌时间段,不包括已取消、已拒绝和透明的事件。

示例:

```bash # Check availability across calendars accli freebusy --calendar Work --calendar Personal --from 2025-01-15 --to 2025-01-16 --json

# Check specific hours accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json ```

### 配置

```bash # Set default calendar (interactive) accli config set-default

# Set default by name accli config set-default --calendar Work

# Show current config accli config show

# Clear default accli config clear ```

当设置了默认日历时,如果未指定日历,命令将自动使用它。

## 工作流指南

### 创建事件之前 1. 列出日历以获取可用的日历名称/ID 2. 检查忙/闲状态以查找可用时间段 3. 创建前与用户确认事件详细信息

### 最佳实践 - 始终使用 --json 标志进行程序化解析 - 为确保可靠性,优先使用 --calendar-id 而非日历名称 - 查询事件时,使用合理的日期范围 - 执行删除操作前与用户确认 - 始终使用 ISO 8601 日期时间格式

### 常用模式

查找空闲时段并安排日程:

```bash # 1. Check availability accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json

# 2. Create event in available slot accli create Work --summary "Meeting" --start 2025-01-15T14:00 --end 2025-01-15T15:00 --json ```

查看今天的日程:

```bash accli events Work --from $(date +%Y-%m-%d) --to $(date -v+1d +%Y-%m-%d) --json ```

更多产品