From productivity-skills
This skill should be used when the user asks to "create calendar event", "add meeting", "schedule appointment", "check calendar", "list upcoming events", "search events", "update event", "delete event", or wants to manage macOS Calendar app events via EventKit CLI. Supports setting event details like title, start/end times, location, and notes. Requires macOS and Calendar.app access permissions.
npx claudepluginhub aeghnnsw/cc-toolkit --plugin productivity-skillsThis skill uses the workspace's default tool permissions.
Manage macOS Calendar events using the productivity-cli tool (EventKit-based).
Implements structured self-debugging workflow for AI agent failures: capture errors, diagnose patterns like loops or context overflow, apply contained recoveries, and generate introspection reports.
Monitors deployed URLs for regressions in HTTP status, console errors, performance metrics, content, network, and APIs after deploys, merges, or upgrades.
Provides React and Next.js patterns for component composition, compound components, state management, data fetching, performance optimization, forms, routing, and accessible UIs.
Manage macOS Calendar events using the productivity-cli tool (EventKit-based).
Run the Swift source directly (no build step required):
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift <command>
Requires: macOS 13+ with Xcode command line tools installed.
Before any create/delete operation, list calendars and ask the user which one to use:
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars list
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars list
Returns JSON:
{
"success": true,
"count": 3,
"data": [
{"name": "Work", "type": "calDAV", "color": "..."},
{"name": "Personal", "type": "calDAV", "color": "..."}
]
}
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars today
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars week
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars date 2025-01-15
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars date 2025-01-15 --calendar Work
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars range 2025-01-01 2025-01-31
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars range 2025-01-01 2025-01-31 --calendar Work
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars search "meeting"
Searches events in the next 365 days matching the term.
Basic event (1 hour duration):
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars create \
--title "Team Meeting" \
--calendar "Work" \
--start "2025-01-15 14:00"
Event with end time:
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars create \
--title "Team Meeting" \
--calendar "Work" \
--start "2025-01-15 14:00" \
--end "2025-01-15 15:30"
Event with location and notes:
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars create \
--title "Team Meeting" \
--calendar "Work" \
--start "2025-01-15 14:00" \
--end "2025-01-15 15:00" \
--location "Conference Room A" \
--notes "Weekly sync meeting"
All-day event:
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars create \
--title "Company Holiday" \
--calendar "Work" \
--start "2025-01-20" \
--allday
Daily standup:
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars create \
--title "Daily Standup" \
--calendar "Work" \
--start "2026-01-20 09:00" \
--end "2026-01-20 09:30" \
--repeat daily
Weekly team meeting on Mondays:
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars create \
--title "Team Meeting" \
--calendar "Work" \
--start "2026-01-20 14:00" \
--repeat weekly \
--repeat-days mon \
--repeat-until "2026-06-30"
Monthly review (12 occurrences):
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars create \
--title "Monthly Review" \
--calendar "Work" \
--start "2026-02-01 10:00" \
--repeat monthly \
--repeat-count 12
Bi-weekly meeting:
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars create \
--title "Bi-weekly Sync" \
--calendar "Work" \
--start "2026-01-20 15:00" \
--repeat weekly \
--repeat-interval 2
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars delete \
--title "Team Meeting" \
--date "2025-01-15"
With specific calendar:
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars delete \
--title "Team Meeting" \
--date "2025-01-15" \
--calendar "Work"
Delete recurring event and all future occurrences:
swift ${CLAUDE_PLUGIN_ROOT}/scripts/productivity-cli.swift calendars delete \
--title "Daily Standup" \
--date "2026-01-25" \
--all-future
All commands return JSON. Success responses:
{
"success": true,
"count": 2,
"data": [...]
}
Action results:
{
"success": true,
"message": "Event 'Team Meeting' created successfully"
}
Error responses:
{
"error": "Calendar 'Unknown' not found"
}
| Format | Example | Usage |
|---|---|---|
| Date only | 2025-01-15 | For date queries, all-day events |
| Date and time | 2025-01-15 14:00 | For timed events |
| Argument | Required | Description |
|---|---|---|
--title | Yes | Event title |
--calendar | Yes (create) | Calendar name |
--start | Yes (create) | Start date/time |
--end | No | End date/time (default: 1 hour after start) |
--location | No | Event location |
--notes | No | Event notes/description |
--allday | No | Make it an all-day event |
--repeat | No | Recurrence frequency: daily, weekly, monthly, yearly |
--repeat-interval | No | Every N periods (default: 1) |
--repeat-until | No | End date for recurrence (yyyy-MM-dd) |
--repeat-count | No | Number of occurrences |
--repeat-days | No | Days for weekly recurrence (e.g., mon,wed,fri) |
--all-future | No | Delete all future occurrences (delete only) |
When reading events, recurring events include additional fields:
{
"title": "Daily Standup",
"calendar": "Work",
"startDate": "2026-01-20 09:00:00",
"endDate": "2026-01-20 09:30:00",
"isAllDay": false,
"isRecurring": true,
"recurrence": {
"frequency": "daily",
"interval": 1,
"endDate": "2026-12-31",
"occurrenceCount": null,
"daysOfWeek": null
}
}