# Apple Calendar

> Use when the user asks to list Apple Calendar calendars or events, create/update/delete events, search appointments, or manage recurrence in Calendar.app on macOS. Inputs - calendar name when needed, event UID for read/update/delete, event title, start/end times, location/description/recurrence details for writes. Do not use when the user needs Google/Outlook calendar APIs, cross-platform sync, or general scheduling advice; use a service-specific calendar integration instead. Produces Calendar.app script commands and parsed event/calendar results. Escalate if calendar permissions are missing, the target calendar is read-only, dates are ambiguous, or deleting a recurring event could remove an entire series.

- Skill: `naoray/apple-calendar` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add naoray/apple-calendar`
- Raw SKILL.md: https://api.skillmd.com/api/skills/naoray/apple-calendar/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: Naoray (https://skillmd.com/u/naoray)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/naoray/apple-calendar

---


# Apple Calendar

**Evidence tier**: P
**Basis**: Practitioner workflow for macOS Calendar.app automation through AppleScript-backed shell commands.
**Source IDs**: skill apple-calendar scripts/cal-list.sh, scripts/cal-events.sh, scripts/cal-create.sh; WriterBuilder calendar-agent pattern
**Reviewed**: 2026-05-12

Interact with Calendar.app via AppleScript. Run scripts from: `cd {baseDir}`

## Commands

| Command | Usage |
|---------|-------|
| List calendars | `scripts/cal-list.sh` |
| List events | `scripts/cal-events.sh [days_ahead] [calendar_name]` |
| Read event | `scripts/cal-read.sh <event-uid> [calendar_name]` |
| Create event | `scripts/cal-create.sh <calendar> <summary> <start> <end> [location] [description] [allday] [recurrence]` |
| Update event | `scripts/cal-update.sh <event-uid> [--summary X] [--start X] [--end X] [--location X] [--description X]` |
| Delete event | `scripts/cal-delete.sh <event-uid> [calendar_name]` |
| Search events | `scripts/cal-search.sh <query> [days_ahead] [calendar_name]` |

## Date Format

- Timed: `YYYY-MM-DD HH:MM`
- All-day: `YYYY-MM-DD`

## Recurrence

| Pattern | RRULE |
|---------|-------|
| Daily 10x | `FREQ=DAILY;COUNT=10` |
| Weekly M/W/F | `FREQ=WEEKLY;BYDAY=MO,WE,FR` |
| Monthly 15th | `FREQ=MONTHLY;BYMONTHDAY=15` |

## Output

- Events/search: `UID | Summary | Start | End | AllDay | Location | Calendar`
- Read: Full details with description, URL, recurrence

## Notes

- Read-only calendars (Birthdays, Holidays) can't be modified
- Calendar names are case-sensitive
- Deleting recurring events removes entire series

