Each event is one file: events/<scope>/<slug>-<id>.yaml. The folder name is the scope. Do not hand-edit scope to move an event — use mv.

Add

calkit add --title "Dentist" --start 2026-08-21T09:00 --end 2026-08-21T10:00 --alert -PT30M --json
calkit add --title "Team offsite" --all-day --start 2026-08-22 --end 2026-08-22 --scope business --json
Timed events: --start / --end as YYYY-MM-DDTHH:MM (seconds optional).
All-day: date-only bounds and --all-day.
FlagMeaning
--titleRequired for add
--scopeDefault personal
--statusconfirmed | tentative | cancelled
--tzIANA timezone
--location --url --notesOptional
--rrule or --repeatSee Recurrence
--alertRepeatable ISO-8601 offset, e.g. -PT10M, -P1D
--json returns the new event, including id. Keep that id for show / edit / rm.

Show / edit / delete

calkit show evt_example --json
calkit edit evt_example --location "Office" --json
calkit rm evt_example --json
edit takes the same flags as add except --scope.

Move scope

calkit mv evt_example --scope business --json
This moves the file into events/business/.