skills/apple-calendar/calendar-event/SKILL.md
Get full details of a specific event including attendees, description, video link, location, and recurrence. Use when user asks about a specific meeting or event details.
npx skillsauth add aashari/ai-agent-skills calendar-eventInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fetch complete details for a specific event: attendees, description, video link, location, recurrence.
$ARGUMENTS:
"1234""weekly sync", "standup", "1:1 with Alex"DB="$HOME/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb"
ARGS="$ARGUMENTS"
# Try as ROWID first, then fall back to title search
if echo "$ARGS" | grep -qE '^[0-9]+$'; then
WHERE="ci.ROWID = $ARGS"
else
WHERE="ci.summary LIKE '%${ARGS}%'"
fi
sqlite3 -separator '|' "$DB" "
SELECT
ci.ROWID,
ci.summary,
COALESCE(
datetime(oc.occurrence_start_date + 978307200, 'unixepoch', 'localtime'),
datetime(oc.occurrence_date + 978307200, 'unixepoch', 'localtime')
) as start_local,
datetime(oc.occurrence_end_date + 978307200, 'unixepoch', 'localtime') as end_local,
ci.all_day,
ci.start_tz,
COALESCE(l.title, '') as location,
COALESCE(l.address, '') as address,
COALESCE(ci.conference_url, '') as conf_url,
COALESCE(ci.url, '') as url,
ci.has_attendees,
ci.has_recurrences,
ci.status,
ci.invitation_status,
c.title as calendar,
s.name as account,
ci.description
FROM CalendarItem ci
LEFT JOIN OccurrenceCache oc ON oc.event_id = ci.ROWID
LEFT JOIN Calendar c ON ci.calendar_id = c.ROWID
LEFT JOIN Store s ON c.store_id = s.ROWID
LEFT JOIN Location l ON ci.location_id = l.ROWID
WHERE $WHERE
AND ci.hidden = 0
AND ci.status != 2
AND s.type != 5
GROUP BY ci.ROWID
ORDER BY COALESCE(oc.occurrence_date, ci.start_date) DESC
LIMIT 1;
"
DB="$HOME/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb"
EVENT_ID="$EVENT_ROWID"
sqlite3 -separator '|' "$DB" "
SELECT
CASE entity_type WHEN 8 THEN 'organizer' ELSE 'attendee' END as role,
email,
CASE status
WHEN 0 THEN 'needs-action'
WHEN 1 THEN 'accepted'
WHEN 2 THEN 'declined'
WHEN 3 THEN 'tentative'
END as status,
CASE role WHEN 2 THEN 'optional' ELSE 'required' END as attendance
FROM Participant
WHERE owner_id = $EVENT_ID
ORDER BY entity_type DESC, status;
"
DB="$HOME/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb"
EVENT_ID="$EVENT_ROWID"
sqlite3 -separator '|' "$DB" "
SELECT
CASE frequency
WHEN 1 THEN 'Daily'
WHEN 2 THEN 'Weekly'
WHEN 3 THEN 'Monthly'
WHEN 4 THEN 'Yearly'
END as freq,
interval,
specifier
FROM Recurrence
WHERE owner_id = $EVENT_ID
LIMIT 1;
"
Present as a structured event card:
📅 [Title]
Date: Monday, March 3, 2026
Time: 09:00 – 10:00 (WIB)
Location: [room/address if set]
Video: [Meet/Zoom URL if set]
Calendar: [calendar] · [account]
Recurrence: Every week
Attendees (N):
Organizer: [email protected]
✓ [email protected]
? [email protected]
✗ [email protected]
○ [email protected]
Description:
[first 500 chars of description]
Extract Google Meet links from description if conference_url is empty (pattern: meet.google.com/...).
If search returns multiple events, list them with ROWIDs and ask which one.
data-ai
Show work emails only, filtered to Exchange/EWS accounts and corporate email domains. Digest with priorities. Use when user asks about work email, work inbox, or wants to separate work from personal mail. Arguments: optional date range or "today", "yesterday", "this week".
testing
Intelligent inbox triage — surface the most important emails across all accounts, prioritized by urgency and requiring attention. Use when user wants a smart overview of what needs their attention, asks "what's important in my email", or wants help deciding what to read first. Arguments: optional time window (default: last 48 hours) or account filter.
data-ai
Find flight bookings, hotel reservations, travel itineraries, and booking confirmations from email. Use when user asks about upcoming trips, travel plans, booking references, flight details, or hotel reservations. Arguments: optional destination, airline, date range, or booking service.
testing
Show who sends the most email, communication frequency analysis, and relationship mapping. Use when user asks who emails them most, top contacts, communication patterns, or wants to understand their email social graph. Arguments: optional time range (default: last 90 days), account filter, or "humans only" to exclude automated senders.