Skip to content
Back to skills

Calendar Search

ASecurity

Search calendar events by title, location, or description keyword. Use when user asks to find a specific meeting, event, or anything that happened or is coming up.

  • 5 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 28, 2026
databasesbashsql

Security analysis

A100/100

Scanned May 28, 2026

npx -y skills add aashari/ai-agent-skills --skill calendar-search --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Calendar Search?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Calendar Search
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aashari-calendar-search/badge)](https://www.skillsdirectory.com/skills/aashari-calendar-search)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: calendar-search
description: Search calendar events by title, location, or description keyword. Use when user asks to find a specific meeting, event, or anything that happened or is coming up.
user-invocable: true
allowed-tools: Bash
metadata:
  openclaw:
    requires:
      bins: [sqlite3]
---

# Calendar Search — Find Events by Keyword

Search across all calendar events by title, location, or description.

## Arguments

`$ARGUMENTS` — search query with optional modifiers:
- `"standup"` → search title/location/description
- `"standup last week"` → add time filter
- `"calendar:Work standup"` → filter by calendar name
- `"from:2025-01-01 to:2025-03-01 sprint"` → date range

## Steps

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

# Extract keyword (strip known modifiers for SQL LIKE)
KEYWORD=$(echo "$QUERY" | sed 's/last [0-9]* \(day\|week\|month\)s\?//gi' | sed 's/calendar:[^ ]*//gi' | xargs)

# Default: search all time (no date filter) — show most recent 50 matches
sqlite3 -separator '|' "$DB" "
SELECT
  date(COALESCE(oc.occurrence_start_date, oc.occurrence_date) + 978307200, 'unixepoch', 'localtime') as event_date,
  COALESCE(
    strftime('%H:%M', oc.occurrence_start_date + 978307200, 'unixepoch', 'localtime'),
    'all-day'
  ) as start_time,
  ci.summary as title,
  COALESCE(l.title, '') as location,
  c.title as calendar,
  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 ci.hidden = 0
  AND ci.status != 2
  AND s.type != 5
  AND s.disabled = 0
  AND (
    ci.summary LIKE '%${KEYWORD}%'
    OR l.title LIKE '%${KEYWORD}%'
    OR ci.description LIKE '%${KEYWORD}%'
  )
GROUP BY ci.ROWID, event_date
ORDER BY COALESCE(oc.occurrence_start_date, oc.occurrence_date) DESC
LIMIT 50;
"
```

## Output Format

Table: Date | Time | Event | Location | Calendar

Show total match count. If over 50 results, note the limit.
If no results: suggest broadening the search or checking spelling.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.