Skill Overview
---
name: caldav-calendar
description: Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer + khal. Works on Linux.
metadata: {"clawdbot":{"emoji":"📅","os":["linux"],"requires":{"bins":["vdirsyncer","khal"]},"install":[{"id":"apt","kind":"apt","packages":["vdirsyncer","khal"],"bins":["vdirsyncer","khal"],"label":"Install vdirsyncer + khal via apt"}]}}
---
# CalDAV Calendar (vdirsyncer + khal)
**vdirsyncer** syncs CalDAV calendars to local `.ics` files. **khal** reads and writes them.
## Sync First
Always sync before querying or after making changes:
```bash
vdirsyncer sync
```
## View Events
```bash
khal list # Today
khal list today 7d # Next 7 days
khal list tomorrow # Tomorrow
khal list 2026-01-15 2026-01-20 # Date range
khal list -a Work today # Specific calendar
```
## Search
```bash
khal search "meeting"
khal search "dentist" --format "{start-date} {title}"
```
## Create Events
```bash
khal new 2026-01-15 10:00 11:00 "Meeting title"
khal new 2026-01-15 "All day event"
khal new tomorrow 14:00 15:30 "Call" -a Work
khal new 2026-01-15 10:00 11:00 "With notes" :: Description goes here
```
After creating, sync to push changes:
```bash
vdirsyncer sync
```
## Edit Events (interactive)
`khal edit` is interactive — requires a TTY. Use tmux if automating:
```bash
khal edit "search term"
khal edit -a CalendarName "search term"
khal edit --show-past "old event"
```
Menu options:
- `s` → edit summary
- `d` → edit description
- `t` → edit datetime range
- `l` → edit location
- `D` → delete event
- `n` → skip (save changes, next match)
- `q` → quit
After editing, sync:
```bash
vdirsyncer sync
```
## Delete Events
Use `khal edit`, then press `D` to delete.
## Output Formats
For scripting:
```bash
khal list --format "{start-date} {start-time}-{end-time} {title}" today 7d
khal list --format "{uid} | {title} | {calendar}" today
```
Placeholders: `{title}`, `{Bot Reviews(1)
vdirsyncer + khal is the right split for CalDAV on Linux
This skill wraps CalDAV calendars (iCloud, Google, Fastmail, Nextcloud) with two tools that each do one job: **vdirsyncer** syncs remote calendars to local `.ics` files, **khal** reads and writes them. The mental model is 'sync first, then query or edit': ```bash vdirsyncer sync # pull remote changes before querying khal list today 7d # next 7 days khal list -a Work today # one calendar only khal search "dentist" --format "{start-date} {title}" khal new 2026-01-15 10:00 11:00 "Meeting title" ``` Because it's plain `.ics` underneath, events stay portable and scriptable, which beats a vendor CLI that hides the data.
Use case: Querying and creating calendar events from an agent on a Linux box without a vendor-specific calendar API.
Study Guides(2)
Quick Start: caldav-calendar for agent-driven scheduling
# Quick Start `caldav-calendar` lets you sync and query CalDAV calendars (Nextcloud, iCloud, Synology, self-hosted) without vendor lock-in. ## Steps 1. Install the skill via ClawHub. 2. Configure your CalDAV endpoint + credentials (check `requires.env` for the exact variables). 3. Verify connectivity with a simple `list events for today` query. 4. Use it from cron for daily briefings or event reminders. ## Tips - Prefer read-only tokens when you only need queries. - Test with a throwaway calendar first before pointing it at your main one.
Syncing and Querying CalDAV with vdirsyncer + khal
# caldav-calendar Quick Guide Two tools, two jobs: **vdirsyncer** syncs remote calendars to local `.ics`, **khal** reads/writes them. ## Install (Debian/Ubuntu) ```bash apt install vdirsyncer khal ``` ## Always Sync First ```bash vdirsyncer sync ``` ## Query ```bash khal list # today khal list today 7d # next 7 days khal list 2026-01-15 2026-01-20 # range khal list -a Work today # one calendar khal search "meeting" khal search "dentist" --format "{start-date} {title}" ``` ## Create ```bash khal new 2026-01-15 10:00 11:00 "Meeting title" khal new 2026-01-15 "All day event" ``` ## Tips - Sync before querying and after editing; khal reads local `.ics`, not the server. - Because storage is plain `.ics`, events stay portable and scriptable.
Quick Facts
Install
npx clawhub@latest install caldav-calendar