accli

This skill should be used when interacting with Apple Calendar on macOS. Use it for listing calendars, viewing events, creating/updating/deleting calendar events, and checking availability/free-busy times. Triggers on requests like "check my calendar", "schedule a meeting", "what's on my schedule", "am I free tomorrow", or any calendar-related operations.

533 stars

Best use case

accli is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

This skill should be used when interacting with Apple Calendar on macOS. Use it for listing calendars, viewing events, creating/updating/deleting calendar events, and checking availability/free-busy times. Triggers on requests like "check my calendar", "schedule a meeting", "what's on my schedule", "am I free tomorrow", or any calendar-related operations.

Teams using accli should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/accli/SKILL.md --create-dirs "https://raw.githubusercontent.com/sundial-org/awesome-openclaw-skills/main/skills/accli/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/accli/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How accli Compares

Feature / AgentaccliStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

This skill should be used when interacting with Apple Calendar on macOS. Use it for listing calendars, viewing events, creating/updating/deleting calendar events, and checking availability/free-busy times. Triggers on requests like "check my calendar", "schedule a meeting", "what's on my schedule", "am I free tomorrow", or any calendar-related operations.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Apple Calendar CLI (accli)

## Installation

```bash
npm install -g @joargp/accli
```

**Requirements:** macOS only (uses JavaScript for Automation)

## Overview

The accli tool provides command-line access to macOS Apple Calendar. It enables listing calendars, querying events, creating/updating/deleting events, and checking availability across calendars.

## Quick Reference

### DateTime Formats
- Timed events: YYYY-MM-DDTHH:mm or YYYY-MM-DDTHH:mm:ss
- All-day events: YYYY-MM-DD

### Global Options
- --json - Output as JSON (recommended for parsing)
- --help - Show help for any command

## Commands

### List Calendars

```
accli calendars [--json]
```

Lists all available calendars with names and persistent IDs. Run this first to discover available calendars and their IDs.

### List Events

```
accli events <calendarName> [options]
```

Options:
- --calendar-id <id> - Persistent calendar ID (recommended over name)
- --from <datetime> - Start of range (default: now)
- --to <datetime> - End of range (default: from + 7 days)
- --max <n> - Maximum events to return (default: 50)
- --query <q> - Case-insensitive filter on summary/location/description
- --json - Output JSON

Examples:

```bash
# Events from Work calendar for this week
accli events Work --json

# Events in January
accli events Work --from 2025-01-01 --to 2025-01-31 --json

# Search for specific events
accli events Work --query "standup" --max 10 --json
```

### Get Single Event

```
accli event <calendarName> <eventId> [--json]
```

Retrieves details for a specific event by its ID.

### Create Event

```
accli create <calendarName> --summary <s> --start <datetime> --end <datetime> [options]
```

Required Options:
- --summary <s> - Event title
- --start <datetime> - Start time
- --end <datetime> - End time

Optional:
- --location <l> - Event location
- --description <d> - Event description
- --all-day - Create an all-day event
- --json - Output JSON

Examples:

```bash
# Create a timed meeting
accli create Work --summary "Team Standup" --start 2025-01-15T09:00 --end 2025-01-15T09:30 --json

# Create an all-day event
accli create Personal --summary "Vacation" --start 2025-07-01 --end 2025-07-05 --all-day --json

# Create with location and description
accli create Work --summary "Client Meeting" --start 2025-01-15T14:00 --end 2025-01-15T15:00 \
  --location "Conference Room A" --description "Q1 planning discussion" --json
```

### Update Event

```
accli update <calendarName> <eventId> [options]
```

Options (all optional - only provide what to change):
- --summary <s> - New title
- --start <datetime> - New start time
- --end <datetime> - New end time
- --location <l> - New location
- --description <d> - New description
- --all-day - Convert to all-day event
- --no-all-day - Convert to timed event
- --json - Output JSON

Example:

```bash
accli update Work event-id-123 --summary "Updated Meeting Title" --start 2025-01-15T15:00 --end 2025-01-15T16:00 --json
```

### Delete Event

```
accli delete <calendarName> <eventId> [--json]
```

Permanently deletes an event. Confirm with user before executing.

### Check Free/Busy

```
accli freebusy --calendar <name> --from <datetime> --to <datetime> [options]
```

Options:
- --calendar <name> - Calendar name (can repeat for multiple calendars)
- --calendar-id <id> - Persistent calendar ID (can repeat)
- --from <datetime> - Start of range (required)
- --to <datetime> - End of range (required)
- --json - Output JSON

Shows busy time slots, excluding cancelled, declined, and transparent events.

Examples:

```bash
# Check availability across calendars
accli freebusy --calendar Work --calendar Personal --from 2025-01-15 --to 2025-01-16 --json

# Check specific hours
accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json
```

### Configuration

```bash
# Set default calendar (interactive)
accli config set-default

# Set default by name
accli config set-default --calendar Work

# Show current config
accli config show

# Clear default
accli config clear
```

When a default calendar is set, commands automatically use it if no calendar is specified.

## Workflow Guidelines

### Before Creating Events
1. List calendars to get available calendar names/IDs
2. Check free/busy to find available time slots
3. Confirm event details with user before creating

### Best Practices
- Always use --json flag for programmatic parsing
- Prefer --calendar-id over calendar names for reliability
- When querying events, start with reasonable date ranges
- Confirm with user before delete operations
- Use ISO 8601 datetime format consistently

### Common Patterns

Find a free slot and schedule:

```bash
# 1. Check availability
accli freebusy --calendar Work --from 2025-01-15T09:00 --to 2025-01-15T18:00 --json

# 2. Create event in available slot
accli create Work --summary "Meeting" --start 2025-01-15T14:00 --end 2025-01-15T15:00 --json
```

View today's schedule:

```bash
accli events Work --from $(date +%Y-%m-%d) --to $(date -v+1d +%Y-%m-%d) --json
```

Related Skills

portfolio-watcher

533
from sundial-org/awesome-openclaw-skills

Monitor stock/crypto holdings, get price alerts, track portfolio performance

portainer

533
from sundial-org/awesome-openclaw-skills

Control Docker containers and stacks via Portainer API. List containers, start/stop/restart, view logs, and redeploy stacks from git.

portable-tools

533
from sundial-org/awesome-openclaw-skills

Build cross-device tools without hardcoding paths or account names

polymarket

533
from sundial-org/awesome-openclaw-skills

Trade prediction markets on Polymarket. Analyze odds, place bets, track positions, automate alerts, and maximize returns from event outcomes. Covers sports, politics, entertainment, and more.

polymarket-traiding-bot

533
from sundial-org/awesome-openclaw-skills

No description provided.

polymarket-analysis

533
from sundial-org/awesome-openclaw-skills

Analyze Polymarket prediction markets for trading edges. Pair Cost arbitrage, whale tracking, sentiment analysis, momentum signals, user profile tracking. No execution.

polymarket-agent

533
from sundial-org/awesome-openclaw-skills

Autonomous prediction market agent - analyzes markets, researches news, and identifies trading opportunities

polymarket-5

533
from sundial-org/awesome-openclaw-skills

Query Polymarket prediction markets. Use for questions about prediction markets, betting odds, market prices, event probabilities, or when user asks about Polymarket data.

polymarket-4

533
from sundial-org/awesome-openclaw-skills

Query Polymarket prediction markets. Use for questions about prediction markets, betting odds, market prices, event probabilities, or when user asks about Polymarket data.

polymarket-3

533
from sundial-org/awesome-openclaw-skills

Query Polymarket prediction market odds and events via CLI. Search for markets, get current prices, list events by category. Supports sports betting (NFL, NBA, soccer/EPL, Champions League), politics, crypto, elections, geopolitics. Real money markets = more accurate than polls. No API key required. Use when asked about odds, probabilities, predictions, or "what are the chances of X".

polymarket-2

533
from sundial-org/awesome-openclaw-skills

Query Polymarket prediction markets - check odds, trending markets, search events, track prices.

pollinations

533
from sundial-org/awesome-openclaw-skills

Pollinations.ai API for AI generation - text, images, videos, audio, and analysis. Use when user requests AI-powered generation (text completion, images, videos, audio, vision/analysis, transcription) or mentions Pollinations. Supports 25+ models (OpenAI, Claude, Gemini, Flux, Veo, etc.) with OpenAI-compatible chat endpoint and specialized generation endpoints.