macos-calendar-assistant

Manage macOS Calendar with OpenClaw in IM-first workflows (Telegram/Discord/Feishu/iMessage/Slack), including screenshot-to-schedule extraction, idempotent create/update, move/extend/reschedule, reminders, conflict checks, daily review sync, and duplicate cleanup. Use when users ask to add/edit/move/postpone events, parse schedule screenshots/chat messages, adjust weekly plans into daily execution, or keep calendar and review notes in sync.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "macos-calendar-assistant" with this command: npx skills add bryant24hao/macos-calendar-assistant

macos-calendar-assistant

Use bundled scripts for reliable Calendar.app operations.

Workflow

  1. Extract title, start/end, timezone, calendar, location, notes, alarm.
  2. Check conflicts before writing:
    • scripts/list_events.swift <start_iso> <end_iso>
  3. Prefer idempotent writes:
    • scripts/upsert_event.py (create/update/skip)
  4. Apply alarm if requested:
    • scripts/set_alarm.py --uid <event_uid> --alarm-minutes <n>
  5. For hygiene, run duplicate scan:
    • scripts/calendar_clean.py --start <iso> --end <iso>

Calendar routing defaults

  • Workout / Run / Training → Training
  • Work / Meeting / Client → Work
  • Product / Development / Building → Product
  • Personal / Social / Travel → Life
  • If unspecified: prefer writable iCloud/CalDAV calendars over local calendars.

Note: Calendar names vary by user setup. Map the intent to the closest local calendar name before writing.

Commands

List calendars

swift scripts/list_calendars.swift

List events in range

swift scripts/list_events.swift "2026-03-06T00:00:00+08:00" "2026-03-06T23:59:59+08:00"

Output includes uid for follow-up alarm/edit operations.

Idempotent create/update (recommended)

python3 scripts/upsert_event.py \
  --title "Team sync" \
  --start "2026-03-06T19:00:00+08:00" \
  --end "2026-03-06T20:00:00+08:00" \
  --calendar "Work" \
  --notes "Agenda" \
  --location "Online" \
  --alarm-minutes 15

Result is one of: CREATED, UPDATED, SKIPPED. Use --dry-run for preview.

Legacy direct add (always creates)

python3 scripts/add_event.py --title "..." --start "..." --end "..."

Set alarm by UID

python3 scripts/set_alarm.py --uid "EVENT_UID" --alarm-minutes 15

Move event (legacy utility)

swift scripts/move_event.swift "Team sync" "Work" "2026-03-07T10:00:00+08:00" 60 --search-days 7
# optional precise match:
# --original-start "2026-03-06T10:00:00+08:00"

Prefer upsert_event.py for most rescheduling flows; use move_event.swift for direct title-based move when needed.

Duplicate scan / cleanup

python3 scripts/calendar_clean.py --start "2026-03-01T00:00:00+08:00" --end "2026-03-08T23:59:59+08:00"
python3 scripts/calendar_clean.py --start "..." --end "..." --apply --confirm yes --snapshot-out ./delete-plan.json

Upcoming events (within 2 hours)

python3 scripts/within_2h.py

Environment + tests

python3 scripts/env_check.py
python3 scripts/regression_test.py
scripts/smoke_test.sh

Daily auto-check notifier

scripts/install.sh     # run env check + install cron from config.json
scripts/uninstall.sh   # remove cron

Extraction & scheduling heuristics (from real usage)

  1. Speaker ownership from chat screenshots

    • Treat the user's message bubble as primary intent.
    • Treat counterpart bubbles as constraints (availability/travel window), not direct auto-create tasks.
  2. Conflict policy

    • If user explicitly says "override" (for example, "replace this slot"), allow replacing an existing slot and reschedule the displaced event.
    • If not explicit, warn and ask for a choice before overwriting.
  3. Time-window intent parsing

    • Phrases like "4–6 PM for the other person" should first be interpreted as an availability window.
    • Convert to a formal event only after user confirmation.
  4. Reschedule priority

    • Prefer moving flexible events (workouts/optional blocks) before strategic P0 work blocks.
    • Do not auto-move P0 items unless user explicitly requests.
  5. Confirmation prompt template

    • Use: "I identified X as your intent and Y as counterpart constraints. I will apply Z. Confirm?"
    • Keep it short; avoid over-confirming when intent is explicit.

Constraints

  • macOS only (EventKit + Calendar permission required)
  • Default timezone comes from config.json.timezone (fallback Asia/Shanghai) when user does not specify
  • Use --apply only after reviewing dry-run output

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

MS Forms Auto

Automate Microsoft Forms daily submissions with M365 MFA support and dual-calendar integration to auto-fill training, content dev, and learning hours.

Registry SourceRecently Updated
1230Profile unavailable
Coding

Clawsy

Clawsy is a native macOS companion app that gives your OpenClaw agent eyes and hands on the user's Mac — screenshots, clipboard, camera, files, location, and...

Registry SourceRecently Updated
7930Profile unavailable
Coding

Google Calendar (via gcalcli)

Google Calendar via gcalcli: today-only agenda by default, bounded meaning-first lookup via agenda scans, and fast create/delete with verification--optimized for low tool calls and minimal output.

Registry SourceRecently Updated
14.9K10Profile unavailable
Coding

Google Calendar (via gogcli)

Access and manage Google Calendar events with gogcli for cross-calendar agendas, keyword search, and filtered outputs avoiding unwanted calendars like holidays.

Registry SourceRecently Updated
5.4K5Profile unavailable