AgentStack
SKILL verified MIT Self-run

Calendar Today

skill-aashari-ai-agent-skills-calendar-today · by aashari

Show all of today's events in time order. Use when user asks what's on their schedule today, what meetings they have, or what's happening today.

No reviews yet
0 installs
11 views
0.0% view→install

Install

$ agentstack add skill-aashari-ai-agent-skills-calendar-today

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Calendar Today? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Calendar Today — Today's Schedule

Show all events scheduled for today, all-day events first, then timed events in chronological order.

Steps

DB="$HOME/Library/Group Containers/group.com.apple.calendar/Calendar.sqlitedb"

# CoreData epoch: seconds since 2001-01-01
# Today's window: midnight to midnight local time
TODAY_START=$(python3 -c "
from datetime import datetime, date
import calendar, time
d = date.today()
epoch_2001 = 978307200
start = int(datetime(d.year, d.month, d.day, 0, 0, 0).timestamp()) - epoch_2001
end   = int(datetime(d.year, d.month, d.day, 23, 59, 59).timestamp()) - epoch_2001
print(start, end)
")
NOW_CD=$(echo $TODAY_START | cut -d' ' -f1)
END_CD=$(echo $TODAY_START | cut -d' ' -f2)

sqlite3 "$DB" "
SELECT
  ci.all_day,
  COALESCE(
    strftime('%H:%M', oc.occurrence_start_date + 978307200, 'unixepoch', 'localtime'),
    strftime('%H:%M', oc.occurrence_date + 978307200, 'unixepoch', 'localtime')
  ) as start_time,
  COALESCE(
    strftime('%H:%M', oc.occurrence_end_date + 978307200, 'unixepoch', 'localtime'),
    ''
  ) as end_time,
  ci.summary as title,
  COALESCE(l.title, '') as location,
  COALESCE(ci.conference_url, '') as conf_url,
  c.title as calendar,
  ci.invitation_status,
  ci.ROWID as id
FROM OccurrenceCache oc
JOIN CalendarItem ci 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 oc.occurrence_date >= $NOW_CD
  AND oc.occurrence_date <= $END_CD
  AND ci.hidden = 0
  AND ci.status != 2
  AND s.type != 5
  AND s.disabled = 0
GROUP BY ci.ROWID
ORDER BY ci.all_day DESC, oc.occurrence_date, COALESCE(oc.occurrence_start_date, oc.occurrence_date);
"

Output Format

Present as two sections:

All-Day List all-day events by name and calendar (no time needed).

Timed Events Table with columns: Time (HH:MM–HH:MM), Event, Location, Calendar. Flag pending invites (invitation_status = 3) with "(pending)" note. If conf_url is set, note "📍 Meet/Zoom link" or just say "has video link."

Show total event count at the bottom. If no events: "Nothing on the calendar today."

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.