Initial backup 2026-02-17
This commit is contained in:
7
skills/accli/.clawhub/origin.json
Normal file
7
skills/accli/.clawhub/origin.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 1,
|
||||
"registry": "https://clawhub.ai",
|
||||
"slug": "accli",
|
||||
"installedVersion": "1.0.0",
|
||||
"installedAt": 1770184131517
|
||||
}
|
||||
209
skills/accli/SKILL.md
Normal file
209
skills/accli/SKILL.md
Normal file
@@ -0,0 +1,209 @@
|
||||
---
|
||||
name: accli
|
||||
description: 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.
|
||||
---
|
||||
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user