Agent skill

invites

View and manage calendar invitations - check pending invites, accept/decline meeting requests, create events

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/invites

SKILL.md

Calendar Invitations & Events

Check pending calendar invitations, respond to meeting requests, and create new events.

Quick Status

bash
~/.claude-mind/system/bin/calendar-invites list --text

Commands

List Pending Invitations

bash
# Human-readable format
~/.claude-mind/system/bin/calendar-invites list --text

# JSON format (default)
~/.claude-mind/system/bin/calendar-invites list --json

# Custom date range
~/.claude-mind/system/bin/calendar-invites list --days 7

# Specific calendar
~/.claude-mind/system/bin/calendar-invites list --calendar "Work"

Show Event Details

bash
~/.claude-mind/system/bin/calendar-invites show "EVENT_ID"

Respond to Invitations

bash
# Accept an invitation (via AppleScript)
~/.claude-mind/system/bin/calendar-invites accept "EVENT_ID"

# Decline an invitation
~/.claude-mind/system/bin/calendar-invites decline "EVENT_ID"

# Mark as tentative/maybe
~/.claude-mind/system/bin/calendar-invites maybe "EVENT_ID"

# Accept all pending invitations (via AppleScript)
~/.claude-mind/system/bin/calendar-invites accept-all

# Accept all via UI automation (more reliable)
~/.claude-mind/system/bin/calendar-invites accept-all-ui

Sync/Refresh Calendars

bash
# Force calendar sync with server
~/.claude-mind/system/bin/calendar-invites sync

Create Events

bash
# Basic event (1 hour duration)
~/.claude-mind/system/bin/calendar-invites create --title "Team Meeting" --start "2026-01-20T14:00"

# Event with duration
~/.claude-mind/system/bin/calendar-invites create --title "Lunch" --start "2026-01-20 12:00" --duration 90

# Event with specific end time
~/.claude-mind/system/bin/calendar-invites create --title "Workshop" --start "2026-01-20 09:00" --end "2026-01-20 12:00"

# All-day event
~/.claude-mind/system/bin/calendar-invites create --title "Vacation" --start "2026-01-25" --all-day

# Multi-day all-day event
~/.claude-mind/system/bin/calendar-invites create --title "Conference" --start "2026-01-25" --end "2026-01-27" --all-day

# Event with location and notes
~/.claude-mind/system/bin/calendar-invites create --title "Client Call" --start "2026-01-20 15:00" \
    --location "Zoom" --notes "Discuss Q1 planning" --calendar "Work"

Create Options:

  • --title - Event title (required)
  • --start - Start date/time (required). Formats: ISO8601, "2026-01-20 14:00", "2026-01-20"
  • --end - End date/time (optional)
  • --duration - Duration in minutes (default: 60)
  • --calendar - Calendar name (default: system default)
  • --location - Event location
  • --notes - Event notes/description
  • --url - Event URL
  • --all-day - Create an all-day event

List Available Calendars

bash
~/.claude-mind/system/bin/calendar-invites calendars

Open in Calendar.app

bash
~/.claude-mind/system/bin/calendar-invites open "EVENT_ID"

JSON Output Format

The list --json command returns:

json
{
  "invitations": [
    {
      "event_id": "ABC123-DEF456",
      "title": "Weekly Sync",
      "start": "2026-01-20T09:00:00-05:00",
      "end": "2026-01-20T10:00:00-05:00",
      "calendar": "Work",
      "organizer": {
        "name": "Jane Smith",
        "email": "jane@example.com"
      },
      "my_status": "pending",
      "location": "Zoom",
      "attendees": [...]
    }
  ],
  "count": 1
}

Workflow

  1. Check invitations: Run list --text to see what's pending
  2. Review if needed: Use show for full details on specific events
  3. Respond: Use accept, decline, or maybe
  4. Bulk accept: Use accept-all for routine meetings

Limitations

  • EventKit is read-only for responses: Apple's EventKit API does not allow setting participantStatus
  • AppleScript limitations: Direct property setting sometimes doesn't trigger server-side updates
  • UI automation is most reliable: The accept-all-ui command clicks actual buttons in Calendar.app
  • Sync delays: Calendar providers (Exchange, Google, iCloud) may have sync delays
  • Recurring events: Response may only affect the next occurrence

Response Methods (Fallback Chain)

  1. CalDAV (primary) - Proper iTIP protocol, notifies organizers, server-side
  2. AppleScript (fallback) - Local property change, may not sync
  3. UI automation (accept-all-ui) - Clicks buttons in Calendar.app
  4. Manual - Calendar.app opens for you to respond

Direct CalDAV Commands

bash
# List pending invitations via CalDAV inbox
~/.claude-mind/system/bin/calendar-caldav inbox

# Accept via CalDAV (proper protocol)
~/.claude-mind/system/bin/calendar-caldav accept "EVENT_UID"

# Accept all pending via CalDAV
~/.claude-mind/system/bin/calendar-caldav accept-all

# Decline via CalDAV
~/.claude-mind/system/bin/calendar-caldav decline "EVENT_UID"

Troubleshooting

If authorization fails:

  1. Check System Settings > Privacy & Security > Calendars
  2. Ensure Terminal has calendar access

If invitations don't appear:

  1. Run calendar-invites sync to force refresh
  2. Check that calendar is syncing in Calendar.app preferences

If responses don't work:

  1. Check CalDAV credentials: ~/.claude-mind/system/bin/calendar-caldav test
  2. Try accept-all-ui instead of accept-all (uses UI automation)
  3. The script falls back to opening Calendar.app

CalDAV setup:

  • Credentials stored in ~/.claude-mind/config/caldav-credentials.json
  • Requires app-specific password from appleid.apple.com

Expand your agent's capabilities with these related and highly-rated skills.

Didn't find tool you were looking for?

Be as detailed as possible for better results