🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Apple Calendar CLI

by @sichengchen

Manage Apple Calendar events on macOS 14+ using apple-calendar-cli: list, get, create, update, and delete events with ISO 8601 date support.

Versionv1.0.1
Downloads2,260
Stars⭐ 2
TERMINAL
clawhub install apple-calendar-cli

πŸ“– About This Skill

Apple Calendar CLI β€” Agent Skill

You have access to apple-calendar-cli, a command-line tool for managing Apple Calendar events via EventKit on macOS.

Prerequisites

  • macOS 14+ required
  • Install: brew install sichengchen/tap/apple-calendar-cli
  • Calendar access permission must be granted (System Settings > Privacy & Security > Calendars)
  • Date Format

    All dates use ISO 8601 format:

  • Date only: YYYY-MM-DD (interpreted as start of day in local timezone)
  • Date and time: YYYY-MM-DDTHH:MM:SS (local timezone)
  • Full ISO 8601: YYYY-MM-DDTHH:MM:SSZ or with offset
  • Global Options

  • --json β€” Output results as structured JSON (available on all commands)
  • --version β€” Show version
  • --help / -h β€” Show help
  • Always use --json when calling from an agent for reliable parsing.

    Commands

    list-calendars

    List all available calendars.

    apple-calendar-cli list-calendars --json
    

    JSON output β€” array of objects:

    [
      {
        "identifier": "CALENDAR-ID",
        "title": "Work",
        "type": "calDAV",
        "source": "iCloud",
        "color": "#1BADF8",
        "isImmutable": false
      }
    ]
    

    Use identifier to filter events or target a specific calendar when creating events.

    list-events

    List events within a date range.

    apple-calendar-cli list-events --json
    apple-calendar-cli list-events --from 2026-02-22 --to 2026-02-28 --json
    apple-calendar-cli list-events --from 2026-02-22 --to 2026-02-28 --calendar CALENDAR-ID --json
    

    Options:

  • --from β€” Start date (default: today)
  • --to β€” End date (default: 7 days from start)
  • --calendar β€” Filter by calendar identifier
  • JSON output β€” array of event objects:

    [
      {
        "identifier": "EVENT-ID",
        "title": "Team standup",
        "startDate": "2026-02-22T10:00:00-08:00",
        "endDate": "2026-02-22T10:30:00-08:00",
        "isAllDay": false,
        "location": "Conference Room A",
        "notes": null,
        "calendarTitle": "Work",
        "calendarIdentifier": "CALENDAR-ID",
        "url": null,
        "hasRecurrenceRules": true
      }
    ]
    

    get-event

    Get full details of a single event.

    apple-calendar-cli get-event EVENT-ID --json
    

    JSON output β€” single event object (same schema as list-events items).

    create-event

    Create a new calendar event.

    apple-calendar-cli create-event \
      --title "Meeting with Alice" \
      --start "2026-02-23T14:00:00" \
      --end "2026-02-23T15:00:00" \
      --json

    apple-calendar-cli create-event \ --title "All-day conference" \ --start "2026-03-01" \ --end "2026-03-02" \ --all-day \ --calendar CALENDAR-ID \ --location "Convention Center" \ --notes "Bring laptop" \ --url "https://example.com/conf" \ --json

    Required options:

  • --title β€” Event title
  • --start β€” Start date/time
  • --end β€” End date/time (must be after start)
  • Optional options:

  • --calendar β€” Calendar identifier (default: system default calendar)
  • --notes β€” Event notes
  • --location β€” Event location
  • --all-day β€” Mark as all-day event
  • --url β€” Event URL
  • --recurrence β€” Recurrence rule: daily, weekly, monthly, yearly
  • --recurrence-end β€” End date for recurrence
  • --recurrence-count β€” Number of occurrences
  • --attendees β€” Comma-separated email addresses
  • --alert β€” Alert offset (e.g., 15m, 1h, 1d)
  • JSON output β€” the created event object with its new identifier.

    update-event

    Update an existing event (partial update β€” only specified fields change).

    apple-calendar-cli update-event EVENT-ID --title "New title" --json
    apple-calendar-cli update-event EVENT-ID \
      --start "2026-02-23T15:00:00" \
      --end "2026-02-23T16:00:00" \
      --location "Room B" \
      --json
    

    Required argument:

  • β€” Event identifier
  • Optional options:

  • --title β€” New title
  • --start β€” New start date/time
  • --end β€” New end date/time
  • --calendar β€” Move to different calendar (by identifier)
  • --notes β€” New notes
  • --location β€” New location
  • --url β€” New URL
  • JSON output β€” the updated event object.

    delete-event

    Delete a calendar event.

    apple-calendar-cli delete-event EVENT-ID --json
    

    JSON output:

    {
      "deleted": true,
      "event": { ... }
    }
    

    Common Agent Workflows

    Find and reschedule an event

    # 1. List events to find the one to reschedule
    apple-calendar-cli list-events --from 2026-02-22 --to 2026-02-28 --json

    2. Get full details

    apple-calendar-cli get-event EVENT-ID --json

    3. Update the time

    apple-calendar-cli update-event EVENT-ID \ --start "2026-02-24T14:00:00" \ --end "2026-02-24T15:00:00" \ --json

    Create an event on a specific calendar

    # 1. List calendars to find the right one
    apple-calendar-cli list-calendars --json

    2. Create the event on that calendar

    apple-calendar-cli create-event \ --title "Dentist" \ --start "2026-02-25T09:00:00" \ --end "2026-02-25T10:00:00" \ --calendar CALENDAR-ID \ --json

    Check today's schedule

    Date-only values resolve to midnight (00:00:00), so --to must be the next day to cover the full day:

    # Correct: covers 2026-02-22 00:00 to 2026-02-23 00:00
    apple-calendar-cli list-events --from 2026-02-22 --to 2026-02-23 --json
    

    Error Handling

  • Calendar access denied: User needs to grant access in System Settings > Privacy & Security > Calendars
  • Event not found: The event ID may be stale β€” list events again to get current IDs
  • Invalid date format: Use ISO 8601 (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS)
  • End before start: Ensure the end date/time is after the start date/time
  • βš™οΈ Configuration

  • macOS 14+ required
  • Install: brew install sichengchen/tap/apple-calendar-cli
  • Calendar access permission must be granted (System Settings > Privacy & Security > Calendars)