Apple Calendar CLI
by @joargp
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.
clawhub install accliπ About This Skill
name: accli description: 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.
Apple Calendar CLI (accli)
Installation
npm install -g @joargp/accli
Requirements: macOS only (uses JavaScript for Automation)
Overview
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.
Quick Reference
DateTime Formats
Global Options
Commands
List Calendars
accli calendars [--json]
Lists all available calendars with names and persistent IDs. Run this first to discover available calendars and their IDs.
List Events
accli events [options]
Options:
- Case-insensitive filter on summary/location/description
Examples:
# Events from Work calendar for this week
accli events Work --jsonEvents in January
accli events Work --from 2025-01-01 --to 2025-01-31 --jsonSearch for specific events
accli events Work --query "standup" --max 10 --json
Get Single Event
accli event [--json]
Retrieves details for a specific event by its ID.
Create Event
accli create --summary --start --end [options]
Required Options:
Optional:
Examples:
# Create a timed meeting
accli create Work --summary "Team Standup" --start 2025-01-15T09:00 --end 2025-01-15T09:30 --jsonCreate an all-day event
accli create Personal --summary "Vacation" --start 2025-07-01 --end 2025-07-05 --all-day --jsonCreate 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
Update Event
accli update [options]
Options (all optional - only provide what to change):
Example:
accli update Work event-id-123 --summary "Updated Meeting Title" --start 2025-01-15T15:00 --end 2025-01-15T16:00 --json
Delete Event
accli delete [--json]
Permanently deletes an event. Confirm with user before executing.
Check Free/Busy
accli freebusy --calendar --from --to [options]
Options:
Shows busy time slots, excluding cancelled, declined, and transparent events.
Examples:
# Check availability across calendars
accli freebusy --calendar Work --calendar Personal --from 2025-01-15 --to 2025-01-16 --jsonCheck specific hours
accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json
Configuration
# Set default calendar (interactive)
accli config set-defaultSet default by name
accli config set-default --calendar WorkShow current config
accli config showClear default
accli config clear
When a default calendar is set, commands automatically use it if no calendar is specified.
Workflow Guidelines
Before Creating Events
1. List calendars to get available calendar names/IDs 2. Check free/busy to find available time slots 3. Confirm event details with user before creatingBest Practices
Common Patterns
Find a free slot and schedule:
# 1. Check availability
accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json2. 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:
accli events Work --from $(date +%Y-%m-%d) --to $(date -v+1d +%Y-%m-%d) --json
βοΈ Configuration
# Set default calendar (interactive)
accli config set-defaultSet default by name
accli config set-default --calendar WorkShow current config
accli config showClear default
accli config clear
When a default calendar is set, commands automatically use it if no calendar is specified.
π Tips & Best Practices
Common Patterns
Find a free slot and schedule:
# 1. Check availability
accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json2. 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:
accli events Work --from $(date +%Y-%m-%d) --to $(date -v+1d +%Y-%m-%d) --json