Skip to content
Back to skills

Invites

ASecurity

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

  • 666 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added February 9, 2026
toolsgobashapisecurity

Works with

  • terminal
  • cli
  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill invites --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Invites?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Invites
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-invites/badge)](https://www.skillsdirectory.com/skills/majiayu000-invites)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: invites
description: View and manage calendar invitations - check pending invites, accept/decline meeting requests, create events
context: fork
allowed-tools:
  - Bash
  - Read
---

# 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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.