ekctl
1
总安装量
1
周安装量
#44010
全站排名
安装命令
npx skills add https://github.com/mcoquet/mac-calendar-ekctl --skill ekctl
Agent 安装分布
mcpjam
1
openhands
1
junie
1
windsurf
1
zencoder
1
crush
1
Skill 文档
ekctl
CLI tool for managing macOS Calendar events and Reminders using EventKit.
Installation
brew tap schappim/ekctl
brew install ekctl
Requires macOS 13.0 (Ventura) or later. Grant Calendar and Reminders permissions when prompted.
Quick Reference
# List all calendars and reminder lists
ekctl list calendars
# List events (requires --from and --to in ISO8601)
ekctl list events --calendar <ID|alias> --from 2026-02-01T00:00:00Z --to 2026-02-07T23:59:59Z
# List reminders
ekctl list reminders --list <ID|alias>
ekctl list reminders --list <ID|alias> --completed false
# Add event
ekctl add event --calendar <ID|alias> --title "Meeting" --start 2026-02-03T09:00:00Z --end 2026-02-03T10:00:00Z
ekctl add event --calendar <ID|alias> --title "Vacation" --start 2026-02-10T00:00:00Z --end 2026-02-12T00:00:00Z --all-day
# Add reminder
ekctl add reminder --list <ID|alias> --title "Call mom"
ekctl add reminder --list <ID|alias> --title "Pay bills" --due 2026-02-05T17:00:00Z --priority 1
# Complete a reminder
ekctl complete reminder <reminder-id>
# Delete
ekctl delete event <event-id>
ekctl delete reminder <reminder-id>
# Aliases (use names instead of UUIDs)
ekctl alias set work "CALENDAR-UUID-HERE"
ekctl alias list
ekctl alias remove work
Workflow
- First run: List calendars to get IDs:
ekctl list calendars - Set aliases for frequently used calendars:
ekctl alias set work <id> - Use aliases in commands:
ekctl list events --calendar work --from ... --to ...
ISO8601 Date Format
All dates use ISO8601 format: YYYY-MM-DDTHH:MM:SSZ
Examples:
2026-02-03T09:00:00Z– 9 AM UTC on Feb 3, 20262026-02-03T00:00:00Z– Midnight UTC on Feb 3, 2026
Priority Values (Reminders)
0– None1– High5– Medium9– Low
Output
All commands return JSON with "status": "success" or "status": "error".
Time Management Best Practices
Follow these rules when helping users manage their calendar:
Finding Available Slots
- Check ALL calendars when looking for free timeâlist calendars first, then query events from each one for the relevant time range
- Look at the full week when suggesting times, not just the requested day
- Avoid fragmented gapsâdon’t suggest a 30-min slot between two meetings; prefer contiguous free blocks
- Respect working hoursâdefault to 9 AM – 6 PM unless the user specifies otherwise
- Protect lunchâavoid scheduling over 12 PM – 1 PM unless explicitly requested
Scheduling Events
- Add buffer timeâleave 10-15 minutes between meetings for context switching
- Default to shorter durationsâsuggest 30 minutes for meetings unless the user specifies longer
- Group meetings togetherâwhen suggesting times, prefer slots adjacent to existing meetings to preserve larger focus blocks
- Morning for focus, afternoon for meetingsâwhen the user has flexibility, suggest meetings in the afternoon to protect morning deep work time
Reminders
- Set appropriate lead times based on task type:
- Video/phone calls: 5 minutes before
- In-person meetings: 15-30 minutes before (account for travel)
- Deadlines/tasks: 1 day before
- Include travel time for in-person meetingsâask about location and add buffer accordingly
Weekly Review
When asked about schedule or availability:
- Summarize the week’s commitments
- Highlight unusually busy days
- Note large free blocks available for deep work