Caldav Calendar

Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer + khal. Works on Linux.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
181 · 21.1k · 192 current installs · 195 all-time installs
byAsleep@Asleep123
Highlighted
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the instructions: the SKILL.md tells the agent to use vdirsyncer and khal to sync and query CalDAV calendars. The referenced binaries, config paths (~/.config/vdirsyncer/, ~/.config/khal/), and data paths (~/.local/share/vdirsyncer/, ~/.local/share/khal/) are consistent with that purpose.
Instruction Scope
Instructions are focused on calendar sync/query workflows and explicitly tell the agent to run vdirsyncer/khal commands and to read/write configuration and local calendar files. This is necessary for functionality, but the skill does instruct access to sensitive local files (credential file example, config and cache removal). There is no instruction to read unrelated system files or to transmit data to unexpected external endpoints.
Install Mechanism
The skill is instruction-only (no install spec) which keeps risk low. The SKILL.md metadata includes an apt install suggestion for vdirsyncer and khal; this is a benign, expected package suggestion. There is no remote download or archive-extraction behavior.
Credentials
The skill declares no required environment variables or credentials, which is consistent. However, the examples instruct storing/reading calendar passwords from a local file (password.fetch = ['command', 'cat', '~/.config/vdirsyncer/icloud_password']). That is appropriate for the task but is sensitive: it may expose credentials if the file is world-readable or if command invocation leaks arguments to process listings. Consider using secure storage (keyring, OS secret store, or appropriately permissioned files) instead of plaintext files.
Persistence & Privilege
The skill does not request always:true and does not modify other skills or global settings. It expects to read/write only its own config and data under the user's home (~/.config, ~/.local/share), which is standard for a calendar client.
Assessment
This skill appears to do exactly what it says: automate vdirsyncer and khal to sync/query CalDAV calendars. Before installing/using it, ensure you trust the agent to run shell commands and access files in your home directory. Pay attention to how you store calendar credentials — the example uses a local file read via `cat`, which can expose secrets if file permissions or process listings are not secure. Prefer OS keyring or properly permissioned files for passwords, and install vdirsyncer/khal from your distro's package manager (or their official sources) rather than an untrusted binary. If you need OAuth-based Google access, be prepared to follow the provider's OAuth setup steps (not fully covered in this guide).

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

Current versionv1.0.1
Download zip
latestvk97fq1c2r7nmqhm39y10jh8gxx7yq0h5

License

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

Runtime requirements

📅 Clawdis
OSLinux
Binsvdirsyncer, khal

SKILL.md

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:

vdirsyncer sync

View Events

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

khal search "meeting"
khal search "dentist" --format "{start-date} {title}"

Create Events

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:

vdirsyncer sync

Edit Events (interactive)

khal edit is interactive — requires a TTY. Use tmux if automating:

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:

vdirsyncer sync

Delete Events

Use khal edit, then press D to delete.

Output Formats

For scripting:

khal list --format "{start-date} {start-time}-{end-time} {title}" today 7d
khal list --format "{uid} | {title} | {calendar}" today

Placeholders: {title}, {description}, {start}, {end}, {start-date}, {start-time}, {end-date}, {end-time}, {location}, {calendar}, {uid}

Caching

khal caches events in ~/.local/share/khal/khal.db. If data looks stale after syncing:

rm ~/.local/share/khal/khal.db

Initial Setup

1. Configure vdirsyncer (~/.config/vdirsyncer/config)

Example for iCloud:

[general]
status_path = "~/.local/share/vdirsyncer/status/"

[pair icloud_calendar]
a = "icloud_remote"
b = "icloud_local"
collections = ["from a", "from b"]
conflict_resolution = "a wins"

[storage icloud_remote]
type = "caldav"
url = "https://caldav.icloud.com/"
username = "your@icloud.com"
password.fetch = ["command", "cat", "~/.config/vdirsyncer/icloud_password"]

[storage icloud_local]
type = "filesystem"
path = "~/.local/share/vdirsyncer/calendars/"
fileext = ".ics"

Provider URLs:

  • iCloud: https://caldav.icloud.com/
  • Google: Use google_calendar storage type
  • Fastmail: https://caldav.fastmail.com/dav/calendars/user/EMAIL/
  • Nextcloud: https://YOUR.CLOUD/remote.php/dav/calendars/USERNAME/

2. Configure khal (~/.config/khal/config)

[calendars]
[[my_calendars]]
path = ~/.local/share/vdirsyncer/calendars/*
type = discover

[default]
default_calendar = Home
highlight_event_days = True

[locale]
timeformat = %H:%M
dateformat = %Y-%m-%d

3. Discover and sync

vdirsyncer discover   # First time only
vdirsyncer sync

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…