Integration 1: Calendar
This is a member-only chapter. Log in with your Signal Over Noise membership email to continue.
Log in to readModule 3 · Section 2 of 8
Integration 1: Calendar
Mechanism: AppleScript via osascript
The calendar integration uses AppleScript to query the Calendar app directly. SQLite access to the Calendar database is blocked by macOS TCC (Transparency, Consent, and Control), so AppleScript is the right approach — it goes through the app’s own API.
osascript -e '
set today to current date
set time of today to 0
set tomorrow to today + (1 * days)
tell application "Calendar"
set output to ""
repeat with c in calendars
if name of c is "Jim Christian" or name of c is "Family" then
set evts to (every event of c whose start date ≥ today and start date < tomorrow)
repeat with e in evts
set output to output & (time string of start date of e) & " | " & (summary of e) & " [" & (name of c) & "]" & linefeed
end repeat
end if
end repeat
return output
end tell'
Adapting it: The if name of c is "Jim Christian" or name of c is "Family" filter is what you’ll change. Replace those strings with your calendar names. To see all your calendar names, remove the filter entirely and let it return everything — then you’ll know what to filter to.
What can go wrong: AppleScript calendar access requires a permissions grant the first time. macOS will prompt you to allow Terminal (or whichever app runs Claude Code) to access Calendar. Grant it once and it persists.
All-day events appear without a time string. The skill should handle these gracefully — checking for them and noting “all day” rather than crashing on the missing time component.