calmly
// Manage macOS Calendar events from the command line using EventKit. Use when creating, listing, or viewing calendar events on macOS without AppleScript dialogs or UI prompts. Supports all-day events, multi-day events, and timed events. Works with iCloud, local, and CalDAV calendars.
$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namecalmly
descriptionManage macOS Calendar events from the command line using EventKit. Use when creating, listing, or viewing calendar events on macOS without AppleScript dialogs or UI prompts. Supports all-day events, multi-day events, and timed events. Works with iCloud, local, and CalDAV calendars.
metadata[object Object]
calmly
A calm CLI for macOS Calendar. Manage iCloud and local calendars without dialogs, prompts, or UI interruptions.
Why calmly?
- AppleScript hangs — Calendar scripting often freezes waiting for permissions
- ICS imports pop dialogs — Can't automate without user interaction
- icalBuddy is read-only — Can't create events
calmly uses EventKit directly, so it works silently.
Installation
brew tap halbotley/tap
brew install calmly
First run prompts for Calendar access (System Settings → Privacy → Calendars). One-time only.
Commands
List calendars
calmly list
View upcoming events
calmly events Work # Next 30 days
calmly events Family 14 # Next 14 days
Create all-day event
calmly add Work "Day Off" 2025-03-15
Create multi-day event
calmly add Family "Vacation" 2025-07-01 2025-07-14
Create timed event
calmly addtimed Work "Meeting" 2025-03-15 09:00 10:30
calmly addtimed Kids "Swim Practice" 2025-02-03 07:00 08:30
Batch Event Creation
For recurring events, loop in bash:
# Morning practice every Tuesday/Thursday for 6 weeks
for d in 2025-02-04 2025-02-06 2025-02-11 2025-02-13; do
calmly addtimed Kids "🏊 AM Practice" "$d" 07:00 08:30
done
Date Verification
Before creating events, verify day/date alignment:
for d in 3 4 5 6 7; do date -j -f "%Y-%m-%d" "2025-02-0$d" "+%A %B %d"; done
Notes
- Dates use
YYYY-MM-DDformat - Times use 24-hour
HH:MMformat - Calendar names are case-insensitive
- Events sync to iCloud automatically
- No delete command yet — delete via Calendar app or iCloud web