Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill should be used when interacting with Apple Calendar on macOS. Use it for listing calendars, viewing events, creating/updating/deleting calendar events, and checking availability/free-busy times. Triggers on requests like "check my calendar", "schedule a meeting", "what's on my schedule", "am I free tomorrow", or any calendar-related operations.
.claude/skills/sundial-org-accli/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -48% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -13% | 0% |
bashnpm install -g @joargp/accli
Requirements: macOS only (uses JavaScript for Automation)
The accli tool provides command-line access to macOS Apple Calendar. It enables listing calendars, querying events, creating/updating/deleting events, and checking availability across calendars.
accli calendars [--json]Lists all available calendars with names and persistent IDs. Run this first to discover available calendars and their IDs.
accli events <calendarName> [options]Options:
Examples:
bash# Events from Work calendar for this week accli events Work --json # Events in January accli events Work --from 2025-01-01 --to 2025-01-31 --json # Search for specific events accli events Work --query "standup" --max 10 --json
accli event <calendarName> <eventId> [--json]Retrieves details for a specific event by its ID.
accli create <calendarName> --summary <s> --start <datetime> --end <datetime> [options]Required Options:
Optional:
Examples:
bash# Create a timed meeting accli create Work --summary "Team Standup" --start 2025-01-15T09:00 --end 2025-01-15T09:30 --json # Create an all-day event accli create Personal --summary "Vacation" --start 2025-07-01 --end 2025-07-05 --all-day --json # Create with location and description accli create Work --summary "Client Meeting" --start 2025-01-15T14:00 --end 2025-01-15T15:00 \ --location "Conference Room A" --description "Q1 planning discussion" --json
accli update <calendarName> <eventId> [options]Options (all optional - only provide what to change):
Example:
bashaccli update Work event-id-123 --summary "Updated Meeting Title" --start 2025-01-15T15:00 --end 2025-01-15T16:00 --json
accli delete <calendarName> <eventId> [--json]Permanently deletes an event. Confirm with user before executing.
accli freebusy --calendar <name> --from <datetime> --to <datetime> [options]Options:
Shows busy time slots, excluding cancelled, declined, and transparent events.
Examples:
bash# Check availability across calendars accli freebusy --calendar Work --calendar Personal --from 2025-01-15 --to 2025-01-16 --json # Check specific hours accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json
bash# Set default calendar (interactive) accli config set-default # Set default by name accli config set-default --calendar Work # Show current config accli config show # Clear default accli config clear
When a default calendar is set, commands automatically use it if no calendar is specified.
Find a free slot and schedule:
bash# 1. Check availability accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json # 2. Create event in available slot accli create Work --summary "Meeting" --start 2025-01-15T14:00 --end 2025-01-15T15:00 --json
View today's schedule:
bashaccli events Work --from $(date +%Y-%m-%d) --to $(date -v+1d +%Y-%m-%d) --json
Other measured skills in the registry, with their headline benchmark lift.