macOS Calendar

Create, list, and manage macOS Calendar events via AppleScript. Use when the user asks to add a reminder, schedule an event, create a calendar entry, set a d...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
3 · 3.5k · 51 current installs · 54 all-time installs
byLuca@lucaperret
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the implementation. Required binaries (osascript, python3) are appropriate for AppleScript-driven Calendar automation and JSON parsing. No unrelated credentials, binaries, or config paths are requested.
Instruction Scope
Runtime instructions and the script stay within the stated purpose (listing calendars, creating events via AppleScript). There are no network endpoints or unexpected data exfiltration. One privacy note: the script writes an append-only log (logs/calendar.log) containing timestamp, command, calendar, and summary — this can store sensitive event titles/descriptions locally and should be considered before installing.
Install Mechanism
No install spec (instruction-only with an included shell script). This is low-risk because nothing is fetched from remote URLs or installed system-wide by the skill itself.
Credentials
The skill requests no credentials or special environment variables. It uses SKILL_DIR (if present) to place logs; otherwise logs are written relative to the script location. No unrelated secrets or config paths are accessed.
Persistence & Privilege
always:false and no system-wide configuration changes. The script will open Calendar.app if not running and writes a local log; it does not modify other skills or request persistent elevated privileges.
Assessment
This skill appears to do exactly what it claims — manipulate your local Apple Calendar via osascript — and it does not contact external services or request credentials. Things to consider before installing: (1) Calendar access: macOS will prompt you to allow Calendar access to the runner; only grant if you trust the skill. (2) Local logs: the skill appends event metadata (title, calendar, timestamp) to logs/calendar.log under SKILL_DIR or the script parent path — if event titles/descriptions are sensitive, either relocate/secure or remove logging. (3) Data handling: the script passes user fields safely to AppleScript (argv) to avoid injection; however there is a small implementation quirk in the Python coercion of all_day (string values like "false" could be treated truthy) — prefer sending boolean JSON true/false. (4) Verify binaries: ensure osascript and python3 are the expected system binaries. If you want extra assurance, inspect the script yourself (it's included) and run it in a sandboxed/non-production account first.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.2.0
Download zip
latestvk976hmkjzyn0742revv249hxfx81bzfa

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

📅 Clawdis
OSmacOS
Binsosascript, python3

SKILL.md

macOS Calendar

Manage Apple Calendar events via $SKILL_DIR/scripts/calendar.sh. All date handling uses relative math (current date + N * days) to avoid locale issues (FR/EN/DE date formats).

Quick start

List calendars

Always list calendars first to find the correct calendar name:

"$SKILL_DIR/scripts/calendar.sh" list-calendars

Create an event

echo '<json>' | "$SKILL_DIR/scripts/calendar.sh" create-event

JSON fields:

FieldRequiredDefaultDescription
summaryyes-Event title
calendarnofirst calendarCalendar name (from list-calendars)
descriptionno""Event notes
offset_daysno0Days from today (0=today, 1=tomorrow, 7=next week)
iso_dateno-Absolute date YYYY-MM-DD (overrides offset_days)
hourno9Start hour (0-23)
minuteno0Start minute (0-59)
duration_minutesno30Duration
alarm_minutesno0Alert N minutes before (0=no alarm)
all_daynofalseAll-day event
recurrenceno-iCal RRULE string. See references/recurrence.md

Interpreting natural language

Map user requests to JSON fields:

User saysJSON
"tomorrow at 2pm"offset_days: 1, hour: 14
"in 3 days"offset_days: 3
"next Monday at 10am"Calculate offset_days from today to next Monday, hour: 10
"February 25 at 3:30pm"iso_date: "2026-02-25", hour: 15, minute: 30
"every weekday at 9am"hour: 9, recurrence: "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR"
"remind me 1 hour before"alarm_minutes: 60
"all day event on March 1"iso_date: "2026-03-01", all_day: true

For "next Monday", "next Friday" etc: compute the day offset using the current date. Use date command if needed:

# Days until next Monday (1=Monday)
target=1; today=$(date +%u); echo $(( (target - today + 7) % 7 ))

Example prompts

These are real user prompts and the commands you should run:

"Remind me to call the dentist in 2 days"

"$SKILL_DIR/scripts/calendar.sh" list-calendars

Then:

echo '{"calendar":"Personnel","summary":"Call dentist","offset_days":2,"hour":9,"duration_minutes":15,"alarm_minutes":30}' | "$SKILL_DIR/scripts/calendar.sh" create-event

"Schedule a team sync every Tuesday at 2pm with a 10-min reminder"

echo '{"calendar":"Work","summary":"Team sync","hour":14,"duration_minutes":60,"recurrence":"FREQ=WEEKLY;BYDAY=TU","alarm_minutes":10}' | "$SKILL_DIR/scripts/calendar.sh" create-event

"Block July 15 as a vacation day"

echo '{"calendar":"Personnel","summary":"Vacances","iso_date":"2026-07-15","all_day":true}' | "$SKILL_DIR/scripts/calendar.sh" create-event

"I have a doctor appointment next Thursday at 3:30pm, remind me 1 hour before"

# First compute offset_days to next Thursday (4=Thursday)
target=4; today=$(date +%u); offset=$(( (target - today + 7) % 7 )); [ "$offset" -eq 0 ] && offset=7

Then:

echo "{\"calendar\":\"Personnel\",\"summary\":\"Doctor appointment\",\"offset_days\":$offset,\"hour\":15,\"minute\":30,\"duration_minutes\":60,\"alarm_minutes\":60}" | "$SKILL_DIR/scripts/calendar.sh" create-event

"Set up a daily standup at 9am on weekdays for the next 4 weeks"

echo '{"calendar":"Work","summary":"Daily standup","hour":9,"duration_minutes":15,"recurrence":"FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;COUNT=20"}' | "$SKILL_DIR/scripts/calendar.sh" create-event

"Add a biweekly 1-on-1 with my manager on Fridays at 11am"

echo '{"calendar":"Work","summary":"1-on-1 Manager","hour":11,"duration_minutes":30,"recurrence":"FREQ=WEEKLY;INTERVAL=2;BYDAY=FR","alarm_minutes":5}' | "$SKILL_DIR/scripts/calendar.sh" create-event

Critical rules

  1. Always list calendars first if the user hasn't specified one — calendars marked [read-only] cannot be used for event creation
  2. Never use hardcoded date strings in AppleScript — always use offset_days or iso_date
  3. Confirm the calendar name with the user if multiple personal calendars exist
  4. Never target a [read-only] calendar — the script will reject it with an error
  5. For recurring events, consult references/recurrence.md for RRULE syntax
  6. Pass JSON via stdin — never as a CLI argument (avoids leaking data in process list)
  7. All fields are validated by the script (type coercion, range checks, format validation) — invalid input is rejected with an error message
  8. All actions are logged to logs/calendar.log with timestamp, command, calendar, and summary

Files

3 total
Select a file
Select a file to preview.

Comments

Loading comments…