Install
openclaw skills install opys-calendarA local markdown-backed calendar with CLI and optional two-way Google Calendar sync.
openclaw skills install opys-calendarUse this skill to query/update the local markdown-backed calendar safely and sync it with Google Calendar.
calendar.md## Event Records (fenced event YAML blocks)## Event Checklistid: local identifierexternalId: stable cross-system identifier used for dedupegoogleEventIds: per-calendar Google event mappingupdatedAt: event-level timestamp for conflict resolutionDo not remove externalId from existing records.
Use CLI from repo root:
npm run cli -- <command>
npm run cli -- summary.npm run cli -- export.npm run cli -- add --title "..." --start "<ISO>" --end "<ISO>" --category <id> [--shift-to-next|--allow-overlap]npm run cli -- update --id <event_id> [fields...]
If changing --start or --end, include --shift-to-next or --allow-overlap in non-interactive runs.npm run cli -- check --id <event_id> or --undonenpm run cli -- delete --id <event_id>npm run cli -- category-add --id <id> --label "Label" --color "#9ca3af" --description "..."npm run cli -- category-remove --id <id> --reassign <id>Conflict handling:
add and time-changing update detect overlaps with existing events.--shift-to-next to auto-resolve to the next open window.--allow-overlap to keep the requested overlapping time.Agent snapshot output:
./agent-snapshot.mdCALENDAR_AGENT_SNAPSHOT.CALENDAR_AGENT_DAYS.Sync state file:
.calendar-google-sync-state.jsonnpm run cli -- export --out backup-calendar.mdnpm run cli -- import --in backup-calendar.mdid, label, and color fields valid.This skill uses the following environment variables (defined in .env):
Google Calendar Sync (Optional)
GOOGLE_CLIENT_ID: Google OAuth Client IDGOOGLE_CLIENT_SECRET: Google OAuth Client SecretGOOGLE_REDIRECT_URI: Should be http://localhost:<PORT>/api/google/auth/callbackAgent Configuration (Optional)
CALENDAR_AGENT_SNAPSHOT: Custom absolute or relative path to write the Markdown snapshot. Defaults to ./agent-snapshot.md.CALENDAR_AGENT_DAYS: Number of historical days to include in the snapshot (defaults to 14).PORT: API server port (defaults to 8787).APP_BASE_URL: Base URL for the frontend UI.