{"id":"4be351eb-ec7c-49a5-9467-95dbde20930c","entityType":"agent","slug":"clawhub-gzlicanyi-caldav-sync","name":"caldav-sync","canonicalUrl":"https://www.xpersona.co/agent/clawhub-gzlicanyi-caldav-sync","canonicalPath":"/agent/clawhub-gzlicanyi-caldav-sync","generatedAt":"2026-10-11T17:43:26.355Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:24:13.718Z","emptyReason":null},"description":"Calendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17en8axd9552m9fpmxvhkq9xd83gnb1:caldav-sync","sourceUrl":"https://clawhub.ai/gzlicanyi/caldav-sync","homepage":"https://clawhub.ai/gzlicanyi/skills/caldav-sync","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/gzlicanyi/caldav-sync","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/gzlicanyi/skills/caldav-sync","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"caldav-sync technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:24:13.718Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:24:13.718Z","emptyReason":null},"stars":null,"forks":null,"downloads":1050,"packageName":null,"latestVersion":"1.0.3","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:24:13.705Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T14:24:13.718Z","lastCrawledAt":"2026-10-11T14:24:13.705Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T14:24:13.705Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.3","createdAt":"2026-05-22T14:27:51.449Z","changelog":"Incremental sync and caching support added. - Added incremental synchronization for events and todos to improve sync speed and efficiency. - Introduced caching for sync state per account and calendar at `~/.config/mail-skills/caldav-cache/`. - New `--force-refresh` option to bypass cache and force a full sync. - Write operations now automatically invalidate the cache to ensure up-to-date data. - Added scripts/cache.js and scripts/sync.js to implement caching and sync logic.","fileCount":12,"zipByteSize":21323},{"version":"1.0.2","createdAt":"2026-05-18T14:26:36.632Z","changelog":"- Updated environment variable requirements in skill metadata (from CALDAV_SERVER_URL, CALDAV_USERNAME, CALDAV_PASSWORD to PROVIDER, USERNAME, PASSWORD) - Adjusted primaryEnv from CALDAV_SERVER_URL to PROVIDER in metadata - No changes to code or functionality; documentation and metadata update only","fileCount":9,"zipByteSize":15449},{"version":"1.0.1","createdAt":"2026-05-18T14:07:57.719Z","changelog":"- Added direct install instructions for the related imap-smtp-email skill. - No functional or behavioral changes to the skill itself. - Documentation improvements for easier discovery and installation of related tools.","fileCount":9,"zipByteSize":15453},{"version":"1.0.0","createdAt":"2026-05-18T13:42:23.198Z","changelog":"Initial release of caldav-sync. - Calendar and todo management using the CalDAV protocol. - Supports querying, creating, editing, and deleting events and todos. - Free/busy queries and multi-account support. - Compatible with Google Calendar, iCloud, Nextcloud, Fastmail, NetEase, and other standard CalDAV servers. - Configuration via environment variables or shared config file. - Command-line interface for all major CalDAV operations.","fileCount":9,"zipByteSize":15417}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17en8axd9552m9fpmxvhkq9xd83gnb1:caldav-sync","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17en8axd9552m9fpmxvhkq9xd83gnb1:caldav-sync` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/gzlicanyi/caldav-sync before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T17:43:26.354Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-gzlicanyi-caldav-sync/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:24:13.718Z","emptyReason":null},"readme":"Skill: caldav-sync\n\nOwner: gzlicanyi\n\nSummary: Calendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support.\n\nTags: latest:1.0.3\n\nVersion history:\n\nv1.0.3 | 2026-05-22T14:27:51.449Z | user\n\nIncremental sync and caching support added.\n\n- Added incremental synchronization for events and todos to improve sync speed and efficiency.\n- Introduced caching for sync state per account and calendar at `~/.config/mail-skills/caldav-cache/`.\n- New `--force-refresh` option to bypass cache and force a full sync.\n- Write operations now automatically invalidate the cache to ensure up-to-date data.\n- Added scripts/cache.js and scripts/sync.js to implement caching and sync logic.\n\nv1.0.2 | 2026-05-18T14:26:36.632Z | user\n\n- Updated environment variable requirements in skill metadata (from CALDAV_SERVER_URL, CALDAV_USERNAME, CALDAV_PASSWORD to PROVIDER, USERNAME, PASSWORD)\n- Adjusted primaryEnv from CALDAV_SERVER_URL to PROVIDER in metadata\n- No changes to code or functionality; documentation and metadata update only\n\nv1.0.1 | 2026-05-18T14:07:57.719Z | user\n\n- Added direct install instructions for the related imap-smtp-email skill.\n- No functional or behavioral changes to the skill itself.\n- Documentation improvements for easier discovery and installation of related tools.\n\nv1.0.0 | 2026-05-18T13:42:23.198Z | user\n\nInitial release of caldav-sync.\n\n- Calendar and todo management using the CalDAV protocol.\n- Supports querying, creating, editing, and deleting events and todos.\n- Free/busy queries and multi-account support.\n- Compatible with Google Calendar, iCloud, Nextcloud, Fastmail, NetEase, and other standard CalDAV servers.\n- Configuration via environment variables or shared config file.\n- Command-line interface for all major CalDAV operations.\n\nArchive index:\n\nArchive v1.0.3: 12 files, 21323 bytes\n\nFiles: package-lock.json (3222b), package.json (649b), scripts/cache.js (3104b), scripts/caldav.js (24195b), scripts/config.js (6465b), scripts/ical.js (4630b), scripts/providers.js (3997b), scripts/sync.js (11164b), setup.sh (6683b), skill-card.md (2115b), SKILL.md (6445b), _meta.json (130b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: caldav-sync\ndescription: Calendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support.\nmetadata:\n  openclaw:\n    emoji: \"📅\"\n    requires:\n      bins:\n        - node\n        - npm\n      env:\n        - PROVIDER\n        - USERNAME\n        - PASSWORD\n    primaryEnv: PROVIDER\n---\n\n# CalDAV Sync Tool\n\nManage calendar events and todos via CalDAV protocol. Supports Google Calendar, iCloud, Nextcloud, Fastmail, NetEase (163/126/yeah.net), and any standard CalDAV server.\n\n## Configuration\n\nRun the setup script to install dependencies and configure your CalDAV account:\n\n```bash\nbash setup.sh\n```\n\nIf running commands manually without setup.sh, install dependencies first:\n\n```bash\nnpm install --production\n```\n\nConfiguration is stored at `~/.config/mail-skills/.env` (shared with imap-smtp-email skill). If no shared config is found, the skill falls back to a `.env` file in the skill directory.\n\n### Config file format\n\n```bash\n# Default account\nPROVIDER=163\nUSERNAME=your@163.com\nPASSWORD=your_password\nCALDAV_DEFAULT_CALENDAR=\n```\n\nThe `PROVIDER` preset auto-fills the CalDAV server URL. For custom servers:\n\n```bash\nPROVIDER=custom\nUSERNAME=your@email.com\nPASSWORD=your_password\nCALDAV_SERVER_URL=https://your-caldav-server.com/\n```\n\n## Multi-Account\n\nYou can configure additional accounts in the same config file. Each account uses a name prefix (uppercase) on all variables.\n\n```bash\n# Work account (WORK_ prefix)\nWORK_PROVIDER=gmail\nWORK_USERNAME=me@company.com\nWORK_PASSWORD=app_password\nWORK_CALDAV_DEFAULT_CALENDAR=work\n```\n\nAdd `--account <name>` before the command:\n\n```bash\nnode scripts/caldav.js --account work list-calendars\nnode scripts/caldav.js --account work list-events --start 2026-01-01 --end 2026-12-31\n```\n\n## Supported Providers\n\n| Provider | Server URL | Auth |\n|----------|-----------|------|\n| Google Calendar | `https://calendar.google.com/calendar/dav/` | App Password |\n| iCloud | `https://caldav.icloud.com/` | App-Specific Password |\n| Nextcloud | `https://<host>/remote.php/dav/calendars/<user>/` | Username/Password |\n| Fastmail | `https://caldav.fastmail.com/dav/` | Username/Password |\n| NetEase (163/126/yeah.net) | `https://caldav.163.com/` | Authorization Code |\n| NetEase Enterprise (North) | `https://caldav.qiye.163.com/` | Username/Password |\n| NetEase Enterprise (East) | `https://caldavhz.qiye.163.com/` | Username/Password |\n\n## Commands\n\n### list-calendars\n\nList all available calendars.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-calendars\n```\n\n### list-events\n\nQuery events in a time range.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-events --start <date> --end <date> [--calendar <id>] [--force-refresh]\n```\n\n### get-event\n\nGet a specific event by UID.\n\n```bash\nnode scripts/caldav.js [--account <name>] get-event --uid <uid> [--calendar <id>]\n```\n\n### create-event\n\nCreate a new calendar event.\n\n```bash\nnode scripts/caldav.js [--account <name>] create-event --summary <text> --start <datetime> --end <datetime> \\\n  [--description <text>] [--location <text>] [--calendar <id>]\n```\n\n### update-event\n\nUpdate an existing event.\n\n```bash\nnode scripts/caldav.js [--account <name>] update-event --uid <uid> [--summary <text>] [--start <datetime>] \\\n  [--end <datetime>] [--description <text>] [--location <text>] [--calendar <id>]\n```\n\n### delete-event\n\nDelete an event.\n\n```bash\nnode scripts/caldav.js [--account <name>] delete-event --uid <uid> [--calendar <id>]\n```\n\n### list-todos\n\nList all todos/tasks.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-todos [--status <all|pending|completed>] [--calendar <id>] [--force-refresh]\n```\n\n### create-todo\n\nCreate a new todo/task.\n\n```bash\nnode scripts/caldav.js [--account <name>] create-todo --summary <text> [--due <date>] \\\n  [--description <text>] [--priority <1-9>] [--calendar <id>]\n```\n\n### update-todo\n\nUpdate an existing todo.\n\n```bash\nnode scripts/caldav.js [--account <name>] update-todo --uid <uid> [--summary <text>] [--due <date>] \\\n  [--status <pending|completed>] [--calendar <id>]\n```\n\n### delete-todo\n\nDelete a todo.\n\n```bash\nnode scripts/caldav.js [--account <name>] delete-todo --uid <uid> [--calendar <id>]\n```\n\n### freebusy\n\nQuery free/busy information for a time range.\n\n```bash\nnode scripts/caldav.js [--account <name>] freebusy --start <datetime> --end <datetime> [--calendar <id>]\n```\n\n### list-accounts\n\nList all configured CalDAV accounts.\n\n```bash\nnode scripts/caldav.js list-accounts\n```\n\n### Incremental Sync\n\n`list-events` and `list-todos` automatically use incremental sync when available:\n\n1. **sync-token** — only fetches changed resources (preferred)\n2. **ctag + etag** — compares calendar tag and resource tags to fetch only changes\n3. **full** — fetches all resources (fallback)\n\nSync state is cached at `~/.config/mail-skills/caldav-cache/` per account and calendar. Write operations (create/update/delete) automatically invalidate the cache.\n\nUse `--force-refresh` to bypass the cache and force a full sync:\n\n```bash\nnode scripts/caldav.js list-events --start 2026-01-01 --end 2026-12-31 --force-refresh\nnode scripts/caldav.js list-todos --force-refresh\n```\n\n## Security Notes\n\n- Configuration is stored at `~/.config/mail-skills/.env` with `600` permissions (owner read/write only)\n- For Google: regular password is rejected -- generate an App Password at https://myaccount.google.com/apppasswords\n- For NetEase: use authorization code (授权码), not account password\n\n## Troubleshooting\n\n**Connection failed:**\n- Verify server URL is correct and accessible\n- Check username and password\n\n**Authentication failed:**\n- For Google: use App Password, not regular password\n- For NetEase: use authorization code, not account password\n- For iCloud: use App-Specific Password\n\n**No calendars found:**\n- Verify CalDAV service is enabled in your account settings\n- Check the server URL includes the correct path\n\n## Related Skills\n\n- **[imap-smtp-email](https://clawhub.ai/gzlicanyi/imap-smtp-email)** - Read, search, manage, and send emails via IMAP/SMTP. Supports Gmail, Outlook, NetEase (163/126/188), and any standard IMAP/SMTP server. Install with:\n  ```bash\n  npx skills add https://github.com/gzlicanyi/mail-skills -s imap-smtp-email\n  ```\n\n## Feedback\n\nIssues and pull requests are welcome at [github.com/gzlicanyi/mail-skills](https://github.com/gzlicanyi/mail-skills).\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn70j4ejnwqjpykvwwvgymmdcd8055qp\",\n  \"slug\": \"caldav-sync\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1779460071449\n}\n\nFile v1.0.3:skill-card.md\n\n## Description:\n\nCalendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[gzlicanyi](https://clawhub.ai/user/gzlicanyi)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to manage CalDAV calendars and task lists across supported providers, including querying availability, listing calendars, and creating, updating, or deleting events and todos.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles reusable calendar credentials and cached private calendar or task data.\n\nMitigation: Install only for trusted CalDAV servers, prefer provider presets or HTTPS-only custom endpoints, use app-specific passwords where available, and remove cached data and plaintext credentials when no longer needed.\n\nRisk: The skill can create, modify, and delete remote calendar events and todos.\n\nMitigation: Review requested write operations before execution and use the narrowest suitable account or calendar scope.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/gzlicanyi/skills/caldav-sync)\n- [Publisher profile](https://clawhub.ai/user/gzlicanyi)\n- [Google App Passwords](https://myaccount.google.com/apppasswords)\n- [Related imap-smtp-email skill](https://clawhub.ai/gzlicanyi/imap-smtp-email)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration]\n\n**Output Format:** [Markdown with JSON command output and inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May read and write remote calendar/task data and local CalDAV configuration or cache files.]\n\n## Skill Version(s):\n\n1.0.3 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.3:package-lock.json\n\n{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"caldav-sync-skill\",\n      \"version\": \"1.0.0\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"dotenv\": \"^16.6.1\",\n        \"ical.js\": \"^1.5.0\",\n        \"tsdav\": \"^2.1.8\"\n      }\n    },\n    \"node_modules/base-64\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz\",\n      \"integrity\": \"sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/dotenv\": {\n      \"version\": \"16.6.1\",\n      \"resolved\": \"https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz\",\n      \"integrity\": \"sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==\",\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://dotenvx.com\"\n      }\n    },\n    \"node_modules/ical.js\": {\n      \"version\": \"1.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/ical.js/-/ical.js-1.5.0.tgz\",\n      \"integrity\": \"sha512-7ZxMkogUkkaCx810yp0ZGKvq1ZpRgJeornPttpoxe6nYZ3NLesZe1wWMXDdwTkj/b5NtXT+Y16Aakph/ao98ZQ==\",\n      \"license\": \"MPL-2.0\"\n    },\n    \"node_modules/ms\": {\n      \"version\": \"2.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n      \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/sax\": {\n      \"version\": \"1.6.0\",\n      \"resolved\": \"https://registry.npmjs.org/sax/-/sax-1.6.0.tgz\",\n      \"integrity\": \"sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==\",\n      \"license\": \"BlueOak-1.0.0\",\n      \"engines\": {\n        \"node\": \">=11.0.0\"\n      }\n    },\n    \"node_modules/tsdav\": {\n      \"version\": \"2.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/tsdav/-/tsdav-2.2.2.tgz\",\n      \"integrity\": \"sha512-/uC/RItcdYVxUj8b2gT4CorAkUmDFUuzhgS4XVT+OVzGRE80hH5ldubcWH13dHa2T9rNaXu6UIEWHlQ1UL7H1Q==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"base-64\": \"1.0.0\",\n        \"debug\": \"4.4.3\",\n        \"xml-js\": \"1.6.11\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/xml-js\": {\n      \"version\": \"1.6.11\",\n      \"resolved\": \"https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz\",\n      \"integrity\": \"sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"sax\": \"^1.2.4\"\n      },\n      \"bin\": {\n        \"xml-js\": \"bin/cli.js\"\n      }\n    }\n  }\n}\n\nFile v1.0.3:package.json\n\n{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CalDAV calendar and todo management tool. Supports events and tasks via CalDAV protocol with multi-account support.\",\n  \"main\": \"scripts/caldav.js\",\n  \"scripts\": {\n    \"list-calendars\": \"node scripts/caldav.js list-calendars\",\n    \"list-events\": \"node scripts/caldav.js list-events\",\n    \"list-todos\": \"node scripts/caldav.js list-todos\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^16.6.1\",\n    \"ical.js\": \"^1.5.0\",\n    \"tsdav\": \"^2.1.8\"\n  },\n  \"keywords\": [\n    \"caldav\",\n    \"calendar\",\n    \"todo\",\n    \"icalendar\",\n    \"skill\"\n  ],\n  \"author\": \"NetEase\",\n  \"license\": \"MIT\"\n}\n\nArchive v1.0.2: 9 files, 15449 bytes\n\nFiles: package-lock.json (3222b), package.json (649b), scripts/caldav.js (21308b), scripts/config.js (6416b), scripts/ical.js (4630b), scripts/providers.js (3997b), setup.sh (6683b), SKILL.md (5723b), _meta.json (130b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: caldav-sync\ndescription: Calendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support.\nmetadata:\n  openclaw:\n    emoji: \"📅\"\n    requires:\n      bins:\n        - node\n        - npm\n      env:\n        - PROVIDER\n        - USERNAME\n        - PASSWORD\n    primaryEnv: PROVIDER\n---\n\n# CalDAV Sync Tool\n\nManage calendar events and todos via CalDAV protocol. Supports Google Calendar, iCloud, Nextcloud, Fastmail, NetEase (163/126/yeah.net), and any standard CalDAV server.\n\n## Configuration\n\nRun the setup script to install dependencies and configure your CalDAV account:\n\n```bash\nbash setup.sh\n```\n\nIf running commands manually without setup.sh, install dependencies first:\n\n```bash\nnpm install --production\n```\n\nConfiguration is stored at `~/.config/mail-skills/.env` (shared with imap-smtp-email skill). If no shared config is found, the skill falls back to a `.env` file in the skill directory.\n\n### Config file format\n\n```bash\n# Default account\nPROVIDER=163\nUSERNAME=your@163.com\nPASSWORD=your_password\nCALDAV_DEFAULT_CALENDAR=\n```\n\nThe `PROVIDER` preset auto-fills the CalDAV server URL. For custom servers:\n\n```bash\nPROVIDER=custom\nUSERNAME=your@email.com\nPASSWORD=your_password\nCALDAV_SERVER_URL=https://your-caldav-server.com/\n```\n\n## Multi-Account\n\nYou can configure additional accounts in the same config file. Each account uses a name prefix (uppercase) on all variables.\n\n```bash\n# Work account (WORK_ prefix)\nWORK_PROVIDER=gmail\nWORK_USERNAME=me@company.com\nWORK_PASSWORD=app_password\nWORK_CALDAV_DEFAULT_CALENDAR=work\n```\n\nAdd `--account <name>` before the command:\n\n```bash\nnode scripts/caldav.js --account work list-calendars\nnode scripts/caldav.js --account work list-events --start 2026-01-01 --end 2026-12-31\n```\n\n## Supported Providers\n\n| Provider | Server URL | Auth |\n|----------|-----------|------|\n| Google Calendar | `https://calendar.google.com/calendar/dav/` | App Password |\n| iCloud | `https://caldav.icloud.com/` | App-Specific Password |\n| Nextcloud | `https://<host>/remote.php/dav/calendars/<user>/` | Username/Password |\n| Fastmail | `https://caldav.fastmail.com/dav/` | Username/Password |\n| NetEase (163/126/yeah.net) | `https://caldav.163.com/` | Authorization Code |\n| NetEase Enterprise (North) | `https://caldav.qiye.163.com/` | Username/Password |\n| NetEase Enterprise (East) | `https://caldavhz.qiye.163.com/` | Username/Password |\n\n## Commands\n\n### list-calendars\n\nList all available calendars.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-calendars\n```\n\n### list-events\n\nQuery events in a time range.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-events --start <date> --end <date> [--calendar <id>]\n```\n\n### get-event\n\nGet a specific event by UID.\n\n```bash\nnode scripts/caldav.js [--account <name>] get-event --uid <uid> [--calendar <id>]\n```\n\n### create-event\n\nCreate a new calendar event.\n\n```bash\nnode scripts/caldav.js [--account <name>] create-event --summary <text> --start <datetime> --end <datetime> \\\n  [--description <text>] [--location <text>] [--calendar <id>]\n```\n\n### update-event\n\nUpdate an existing event.\n\n```bash\nnode scripts/caldav.js [--account <name>] update-event --uid <uid> [--summary <text>] [--start <datetime>] \\\n  [--end <datetime>] [--description <text>] [--location <text>] [--calendar <id>]\n```\n\n### delete-event\n\nDelete an event.\n\n```bash\nnode scripts/caldav.js [--account <name>] delete-event --uid <uid> [--calendar <id>]\n```\n\n### list-todos\n\nList all todos/tasks.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-todos [--status <all|pending|completed>] [--calendar <id>]\n```\n\n### create-todo\n\nCreate a new todo/task.\n\n```bash\nnode scripts/caldav.js [--account <name>] create-todo --summary <text> [--due <date>] \\\n  [--description <text>] [--priority <1-9>] [--calendar <id>]\n```\n\n### update-todo\n\nUpdate an existing todo.\n\n```bash\nnode scripts/caldav.js [--account <name>] update-todo --uid <uid> [--summary <text>] [--due <date>] \\\n  [--status <pending|completed>] [--calendar <id>]\n```\n\n### delete-todo\n\nDelete a todo.\n\n```bash\nnode scripts/caldav.js [--account <name>] delete-todo --uid <uid> [--calendar <id>]\n```\n\n### freebusy\n\nQuery free/busy information for a time range.\n\n```bash\nnode scripts/caldav.js [--account <name>] freebusy --start <datetime> --end <datetime> [--calendar <id>]\n```\n\n### list-accounts\n\nList all configured CalDAV accounts.\n\n```bash\nnode scripts/caldav.js list-accounts\n```\n\n## Security Notes\n\n- Configuration is stored at `~/.config/mail-skills/.env` with `600` permissions (owner read/write only)\n- For Google: regular password is rejected -- generate an App Password at https://myaccount.google.com/apppasswords\n- For NetEase: use authorization code (授权码), not account password\n\n## Troubleshooting\n\n**Connection failed:**\n- Verify server URL is correct and accessible\n- Check username and password\n\n**Authentication failed:**\n- For Google: use App Password, not regular password\n- For NetEase: use authorization code, not account password\n- For iCloud: use App-Specific Password\n\n**No calendars found:**\n- Verify CalDAV service is enabled in your account settings\n- Check the server URL includes the correct path\n\n## Related Skills\n\n- **[imap-smtp-email](https://clawhub.ai/gzlicanyi/imap-smtp-email)** - Read, search, manage, and send emails via IMAP/SMTP. Supports Gmail, Outlook, NetEase (163/126/188), and any standard IMAP/SMTP server. Install with:\n  ```bash\n  npx skills add https://github.com/gzlicanyi/mail-skills -s imap-smtp-email\n  ```\n\n## Feedback\n\nIssues and pull requests are welcome at [github.com/gzlicanyi/mail-skills](https://github.com/gzlicanyi/mail-skills).\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn70j4ejnwqjpykvwwvgymmdcd8055qp\",\n  \"slug\": \"caldav-sync\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1779114396632\n}\n\nFile v1.0.2:package-lock.json\n\n{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"caldav-sync-skill\",\n      \"version\": \"1.0.0\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"dotenv\": \"^16.6.1\",\n        \"ical.js\": \"^1.5.0\",\n        \"tsdav\": \"^2.1.8\"\n      }\n    },\n    \"node_modules/base-64\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz\",\n      \"integrity\": \"sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/dotenv\": {\n      \"version\": \"16.6.1\",\n      \"resolved\": \"https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz\",\n      \"integrity\": \"sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==\",\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://dotenvx.com\"\n      }\n    },\n    \"node_modules/ical.js\": {\n      \"version\": \"1.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/ical.js/-/ical.js-1.5.0.tgz\",\n      \"integrity\": \"sha512-7ZxMkogUkkaCx810yp0ZGKvq1ZpRgJeornPttpoxe6nYZ3NLesZe1wWMXDdwTkj/b5NtXT+Y16Aakph/ao98ZQ==\",\n      \"license\": \"MPL-2.0\"\n    },\n    \"node_modules/ms\": {\n      \"version\": \"2.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n      \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/sax\": {\n      \"version\": \"1.6.0\",\n      \"resolved\": \"https://registry.npmjs.org/sax/-/sax-1.6.0.tgz\",\n      \"integrity\": \"sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==\",\n      \"license\": \"BlueOak-1.0.0\",\n      \"engines\": {\n        \"node\": \">=11.0.0\"\n      }\n    },\n    \"node_modules/tsdav\": {\n      \"version\": \"2.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/tsdav/-/tsdav-2.2.2.tgz\",\n      \"integrity\": \"sha512-/uC/RItcdYVxUj8b2gT4CorAkUmDFUuzhgS4XVT+OVzGRE80hH5ldubcWH13dHa2T9rNaXu6UIEWHlQ1UL7H1Q==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"base-64\": \"1.0.0\",\n        \"debug\": \"4.4.3\",\n        \"xml-js\": \"1.6.11\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/xml-js\": {\n      \"version\": \"1.6.11\",\n      \"resolved\": \"https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz\",\n      \"integrity\": \"sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"sax\": \"^1.2.4\"\n      },\n      \"bin\": {\n        \"xml-js\": \"bin/cli.js\"\n      }\n    }\n  }\n}\n\nFile v1.0.2:package.json\n\n{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CalDAV calendar and todo management tool. Supports events and tasks via CalDAV protocol with multi-account support.\",\n  \"main\": \"scripts/caldav.js\",\n  \"scripts\": {\n    \"list-calendars\": \"node scripts/caldav.js list-calendars\",\n    \"list-events\": \"node scripts/caldav.js list-events\",\n    \"list-todos\": \"node scripts/caldav.js list-todos\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^16.6.1\",\n    \"ical.js\": \"^1.5.0\",\n    \"tsdav\": \"^2.1.8\"\n  },\n  \"keywords\": [\n    \"caldav\",\n    \"calendar\",\n    \"todo\",\n    \"icalendar\",\n    \"skill\"\n  ],\n  \"author\": \"NetEase\",\n  \"license\": \"MIT\"\n}\n\nArchive v1.0.1: 9 files, 15453 bytes\n\nFiles: package-lock.json (3222b), package.json (649b), scripts/caldav.js (21308b), scripts/config.js (6416b), scripts/ical.js (4630b), scripts/providers.js (3997b), setup.sh (6683b), SKILL.md (5755b), _meta.json (130b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: caldav-sync\ndescription: Calendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support.\nmetadata:\n  openclaw:\n    emoji: \"📅\"\n    requires:\n      bins:\n        - node\n        - npm\n      env:\n        - CALDAV_SERVER_URL\n        - CALDAV_USERNAME\n        - CALDAV_PASSWORD\n    primaryEnv: CALDAV_SERVER_URL\n---\n\n# CalDAV Sync Tool\n\nManage calendar events and todos via CalDAV protocol. Supports Google Calendar, iCloud, Nextcloud, Fastmail, NetEase (163/126/yeah.net), and any standard CalDAV server.\n\n## Configuration\n\nRun the setup script to install dependencies and configure your CalDAV account:\n\n```bash\nbash setup.sh\n```\n\nIf running commands manually without setup.sh, install dependencies first:\n\n```bash\nnpm install --production\n```\n\nConfiguration is stored at `~/.config/mail-skills/.env` (shared with imap-smtp-email skill). If no shared config is found, the skill falls back to a `.env` file in the skill directory.\n\n### Config file format\n\n```bash\n# Default account\nPROVIDER=163\nUSERNAME=your@163.com\nPASSWORD=your_password\nCALDAV_DEFAULT_CALENDAR=\n```\n\nThe `PROVIDER` preset auto-fills the CalDAV server URL. For custom servers:\n\n```bash\nPROVIDER=custom\nUSERNAME=your@email.com\nPASSWORD=your_password\nCALDAV_SERVER_URL=https://your-caldav-server.com/\n```\n\n## Multi-Account\n\nYou can configure additional accounts in the same config file. Each account uses a name prefix (uppercase) on all variables.\n\n```bash\n# Work account (WORK_ prefix)\nWORK_PROVIDER=gmail\nWORK_USERNAME=me@company.com\nWORK_PASSWORD=app_password\nWORK_CALDAV_DEFAULT_CALENDAR=work\n```\n\nAdd `--account <name>` before the command:\n\n```bash\nnode scripts/caldav.js --account work list-calendars\nnode scripts/caldav.js --account work list-events --start 2026-01-01 --end 2026-12-31\n```\n\n## Supported Providers\n\n| Provider | Server URL | Auth |\n|----------|-----------|------|\n| Google Calendar | `https://calendar.google.com/calendar/dav/` | App Password |\n| iCloud | `https://caldav.icloud.com/` | App-Specific Password |\n| Nextcloud | `https://<host>/remote.php/dav/calendars/<user>/` | Username/Password |\n| Fastmail | `https://caldav.fastmail.com/dav/` | Username/Password |\n| NetEase (163/126/yeah.net) | `https://caldav.163.com/` | Authorization Code |\n| NetEase Enterprise (North) | `https://caldav.qiye.163.com/` | Username/Password |\n| NetEase Enterprise (East) | `https://caldavhz.qiye.163.com/` | Username/Password |\n\n## Commands\n\n### list-calendars\n\nList all available calendars.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-calendars\n```\n\n### list-events\n\nQuery events in a time range.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-events --start <date> --end <date> [--calendar <id>]\n```\n\n### get-event\n\nGet a specific event by UID.\n\n```bash\nnode scripts/caldav.js [--account <name>] get-event --uid <uid> [--calendar <id>]\n```\n\n### create-event\n\nCreate a new calendar event.\n\n```bash\nnode scripts/caldav.js [--account <name>] create-event --summary <text> --start <datetime> --end <datetime> \\\n  [--description <text>] [--location <text>] [--calendar <id>]\n```\n\n### update-event\n\nUpdate an existing event.\n\n```bash\nnode scripts/caldav.js [--account <name>] update-event --uid <uid> [--summary <text>] [--start <datetime>] \\\n  [--end <datetime>] [--description <text>] [--location <text>] [--calendar <id>]\n```\n\n### delete-event\n\nDelete an event.\n\n```bash\nnode scripts/caldav.js [--account <name>] delete-event --uid <uid> [--calendar <id>]\n```\n\n### list-todos\n\nList all todos/tasks.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-todos [--status <all|pending|completed>] [--calendar <id>]\n```\n\n### create-todo\n\nCreate a new todo/task.\n\n```bash\nnode scripts/caldav.js [--account <name>] create-todo --summary <text> [--due <date>] \\\n  [--description <text>] [--priority <1-9>] [--calendar <id>]\n```\n\n### update-todo\n\nUpdate an existing todo.\n\n```bash\nnode scripts/caldav.js [--account <name>] update-todo --uid <uid> [--summary <text>] [--due <date>] \\\n  [--status <pending|completed>] [--calendar <id>]\n```\n\n### delete-todo\n\nDelete a todo.\n\n```bash\nnode scripts/caldav.js [--account <name>] delete-todo --uid <uid> [--calendar <id>]\n```\n\n### freebusy\n\nQuery free/busy information for a time range.\n\n```bash\nnode scripts/caldav.js [--account <name>] freebusy --start <datetime> --end <datetime> [--calendar <id>]\n```\n\n### list-accounts\n\nList all configured CalDAV accounts.\n\n```bash\nnode scripts/caldav.js list-accounts\n```\n\n## Security Notes\n\n- Configuration is stored at `~/.config/mail-skills/.env` with `600` permissions (owner read/write only)\n- For Google: regular password is rejected -- generate an App Password at https://myaccount.google.com/apppasswords\n- For NetEase: use authorization code (授权码), not account password\n\n## Troubleshooting\n\n**Connection failed:**\n- Verify server URL is correct and accessible\n- Check username and password\n\n**Authentication failed:**\n- For Google: use App Password, not regular password\n- For NetEase: use authorization code, not account password\n- For iCloud: use App-Specific Password\n\n**No calendars found:**\n- Verify CalDAV service is enabled in your account settings\n- Check the server URL includes the correct path\n\n## Related Skills\n\n- **[imap-smtp-email](https://clawhub.ai/gzlicanyi/imap-smtp-email)** - Read, search, manage, and send emails via IMAP/SMTP. Supports Gmail, Outlook, NetEase (163/126/188), and any standard IMAP/SMTP server. Install with:\n  ```bash\n  npx skills add https://github.com/gzlicanyi/mail-skills -s imap-smtp-email\n  ```\n\n## Feedback\n\nIssues and pull requests are welcome at [github.com/gzlicanyi/mail-skills](https://github.com/gzlicanyi/mail-skills).\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn70j4ejnwqjpykvwwvgymmdcd8055qp\",\n  \"slug\": \"caldav-sync\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1779113277719\n}\n\nFile v1.0.1:package-lock.json\n\n{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"caldav-sync-skill\",\n      \"version\": \"1.0.0\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"dotenv\": \"^16.6.1\",\n        \"ical.js\": \"^1.5.0\",\n        \"tsdav\": \"^2.1.8\"\n      }\n    },\n    \"node_modules/base-64\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz\",\n      \"integrity\": \"sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/dotenv\": {\n      \"version\": \"16.6.1\",\n      \"resolved\": \"https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz\",\n      \"integrity\": \"sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==\",\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://dotenvx.com\"\n      }\n    },\n    \"node_modules/ical.js\": {\n      \"version\": \"1.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/ical.js/-/ical.js-1.5.0.tgz\",\n      \"integrity\": \"sha512-7ZxMkogUkkaCx810yp0ZGKvq1ZpRgJeornPttpoxe6nYZ3NLesZe1wWMXDdwTkj/b5NtXT+Y16Aakph/ao98ZQ==\",\n      \"license\": \"MPL-2.0\"\n    },\n    \"node_modules/ms\": {\n      \"version\": \"2.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n      \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/sax\": {\n      \"version\": \"1.6.0\",\n      \"resolved\": \"https://registry.npmjs.org/sax/-/sax-1.6.0.tgz\",\n      \"integrity\": \"sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==\",\n      \"license\": \"BlueOak-1.0.0\",\n      \"engines\": {\n        \"node\": \">=11.0.0\"\n      }\n    },\n    \"node_modules/tsdav\": {\n      \"version\": \"2.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/tsdav/-/tsdav-2.2.2.tgz\",\n      \"integrity\": \"sha512-/uC/RItcdYVxUj8b2gT4CorAkUmDFUuzhgS4XVT+OVzGRE80hH5ldubcWH13dHa2T9rNaXu6UIEWHlQ1UL7H1Q==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"base-64\": \"1.0.0\",\n        \"debug\": \"4.4.3\",\n        \"xml-js\": \"1.6.11\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/xml-js\": {\n      \"version\": \"1.6.11\",\n      \"resolved\": \"https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz\",\n      \"integrity\": \"sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"sax\": \"^1.2.4\"\n      },\n      \"bin\": {\n        \"xml-js\": \"bin/cli.js\"\n      }\n    }\n  }\n}\n\nFile v1.0.1:package.json\n\n{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CalDAV calendar and todo management tool. Supports events and tasks via CalDAV protocol with multi-account support.\",\n  \"main\": \"scripts/caldav.js\",\n  \"scripts\": {\n    \"list-calendars\": \"node scripts/caldav.js list-calendars\",\n    \"list-events\": \"node scripts/caldav.js list-events\",\n    \"list-todos\": \"node scripts/caldav.js list-todos\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^16.6.1\",\n    \"ical.js\": \"^1.5.0\",\n    \"tsdav\": \"^2.1.8\"\n  },\n  \"keywords\": [\n    \"caldav\",\n    \"calendar\",\n    \"todo\",\n    \"icalendar\",\n    \"skill\"\n  ],\n  \"author\": \"NetEase\",\n  \"license\": \"MIT\"\n}\n\nArchive v1.0.0: 9 files, 15417 bytes\n\nFiles: package-lock.json (3222b), package.json (649b), scripts/caldav.js (21308b), scripts/config.js (6416b), scripts/ical.js (4630b), scripts/providers.js (3997b), setup.sh (6683b), SKILL.md (5648b), _meta.json (130b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: caldav-sync\ndescription: Calendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support.\nmetadata:\n  openclaw:\n    emoji: \"📅\"\n    requires:\n      bins:\n        - node\n        - npm\n      env:\n        - CALDAV_SERVER_URL\n        - CALDAV_USERNAME\n        - CALDAV_PASSWORD\n    primaryEnv: CALDAV_SERVER_URL\n---\n\n# CalDAV Sync Tool\n\nManage calendar events and todos via CalDAV protocol. Supports Google Calendar, iCloud, Nextcloud, Fastmail, NetEase (163/126/yeah.net), and any standard CalDAV server.\n\n## Configuration\n\nRun the setup script to install dependencies and configure your CalDAV account:\n\n```bash\nbash setup.sh\n```\n\nIf running commands manually without setup.sh, install dependencies first:\n\n```bash\nnpm install --production\n```\n\nConfiguration is stored at `~/.config/mail-skills/.env` (shared with imap-smtp-email skill). If no shared config is found, the skill falls back to a `.env` file in the skill directory.\n\n### Config file format\n\n```bash\n# Default account\nPROVIDER=163\nUSERNAME=your@163.com\nPASSWORD=your_password\nCALDAV_DEFAULT_CALENDAR=\n```\n\nThe `PROVIDER` preset auto-fills the CalDAV server URL. For custom servers:\n\n```bash\nPROVIDER=custom\nUSERNAME=your@email.com\nPASSWORD=your_password\nCALDAV_SERVER_URL=https://your-caldav-server.com/\n```\n\n## Multi-Account\n\nYou can configure additional accounts in the same config file. Each account uses a name prefix (uppercase) on all variables.\n\n```bash\n# Work account (WORK_ prefix)\nWORK_PROVIDER=gmail\nWORK_USERNAME=me@company.com\nWORK_PASSWORD=app_password\nWORK_CALDAV_DEFAULT_CALENDAR=work\n```\n\nAdd `--account <name>` before the command:\n\n```bash\nnode scripts/caldav.js --account work list-calendars\nnode scripts/caldav.js --account work list-events --start 2026-01-01 --end 2026-12-31\n```\n\n## Supported Providers\n\n| Provider | Server URL | Auth |\n|----------|-----------|------|\n| Google Calendar | `https://calendar.google.com/calendar/dav/` | App Password |\n| iCloud | `https://caldav.icloud.com/` | App-Specific Password |\n| Nextcloud | `https://<host>/remote.php/dav/calendars/<user>/` | Username/Password |\n| Fastmail | `https://caldav.fastmail.com/dav/` | Username/Password |\n| NetEase (163/126/yeah.net) | `https://caldav.163.com/` | Authorization Code |\n| NetEase Enterprise (North) | `https://caldav.qiye.163.com/` | Username/Password |\n| NetEase Enterprise (East) | `https://caldavhz.qiye.163.com/` | Username/Password |\n\n## Commands\n\n### list-calendars\n\nList all available calendars.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-calendars\n```\n\n### list-events\n\nQuery events in a time range.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-events --start <date> --end <date> [--calendar <id>]\n```\n\n### get-event\n\nGet a specific event by UID.\n\n```bash\nnode scripts/caldav.js [--account <name>] get-event --uid <uid> [--calendar <id>]\n```\n\n### create-event\n\nCreate a new calendar event.\n\n```bash\nnode scripts/caldav.js [--account <name>] create-event --summary <text> --start <datetime> --end <datetime> \\\n  [--description <text>] [--location <text>] [--calendar <id>]\n```\n\n### update-event\n\nUpdate an existing event.\n\n```bash\nnode scripts/caldav.js [--account <name>] update-event --uid <uid> [--summary <text>] [--start <datetime>] \\\n  [--end <datetime>] [--description <text>] [--location <text>] [--calendar <id>]\n```\n\n### delete-event\n\nDelete an event.\n\n```bash\nnode scripts/caldav.js [--account <name>] delete-event --uid <uid> [--calendar <id>]\n```\n\n### list-todos\n\nList all todos/tasks.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-todos [--status <all|pending|completed>] [--calendar <id>]\n```\n\n### create-todo\n\nCreate a new todo/task.\n\n```bash\nnode scripts/caldav.js [--account <name>] create-todo --summary <text> [--due <date>] \\\n  [--description <text>] [--priority <1-9>] [--calendar <id>]\n```\n\n### update-todo\n\nUpdate an existing todo.\n\n```bash\nnode scripts/caldav.js [--account <name>] update-todo --uid <uid> [--summary <text>] [--due <date>] \\\n  [--status <pending|completed>] [--calendar <id>]\n```\n\n### delete-todo\n\nDelete a todo.\n\n```bash\nnode scripts/caldav.js [--account <name>] delete-todo --uid <uid> [--calendar <id>]\n```\n\n### freebusy\n\nQuery free/busy information for a time range.\n\n```bash\nnode scripts/caldav.js [--account <name>] freebusy --start <datetime> --end <datetime> [--calendar <id>]\n```\n\n### list-accounts\n\nList all configured CalDAV accounts.\n\n```bash\nnode scripts/caldav.js list-accounts\n```\n\n## Security Notes\n\n- Configuration is stored at `~/.config/mail-skills/.env` with `600` permissions (owner read/write only)\n- For Google: regular password is rejected -- generate an App Password at https://myaccount.google.com/apppasswords\n- For NetEase: use authorization code (授权码), not account password\n\n## Troubleshooting\n\n**Connection failed:**\n- Verify server URL is correct and accessible\n- Check username and password\n\n**Authentication failed:**\n- For Google: use App Password, not regular password\n- For NetEase: use authorization code, not account password\n- For iCloud: use App-Specific Password\n\n**No calendars found:**\n- Verify CalDAV service is enabled in your account settings\n- Check the server URL includes the correct path\n\n## Related Skills\n\n- **[imap-smtp-email](https://clawhub.ai/gzlicanyi/imap-smtp-email)** - Read, search, manage, and send emails via IMAP/SMTP. Supports Gmail, Outlook, NetEase (163/126/188), and any standard IMAP/SMTP server.\n\n## Feedback\n\nIssues and pull requests are welcome at [github.com/gzlicanyi/mail-skills](https://github.com/gzlicanyi/mail-skills).\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn70j4ejnwqjpykvwwvgymmdcd8055qp\",\n  \"slug\": \"caldav-sync\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779111743198\n}\n\nFile v1.0.0:package-lock.json\n\n{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"caldav-sync-skill\",\n      \"version\": \"1.0.0\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"dotenv\": \"^16.6.1\",\n        \"ical.js\": \"^1.5.0\",\n        \"tsdav\": \"^2.1.8\"\n      }\n    },\n    \"node_modules/base-64\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz\",\n      \"integrity\": \"sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/dotenv\": {\n      \"version\": \"16.6.1\",\n      \"resolved\": \"https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz\",\n      \"integrity\": \"sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==\",\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://dotenvx.com\"\n      }\n    },\n    \"node_modules/ical.js\": {\n      \"version\": \"1.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/ical.js/-/ical.js-1.5.0.tgz\",\n      \"integrity\": \"sha512-7ZxMkogUkkaCx810yp0ZGKvq1ZpRgJeornPttpoxe6nYZ3NLesZe1wWMXDdwTkj/b5NtXT+Y16Aakph/ao98ZQ==\",\n      \"license\": \"MPL-2.0\"\n    },\n    \"node_modules/ms\": {\n      \"version\": \"2.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n      \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/sax\": {\n      \"version\": \"1.6.0\",\n      \"resolved\": \"https://registry.npmjs.org/sax/-/sax-1.6.0.tgz\",\n      \"integrity\": \"sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==\",\n      \"license\": \"BlueOak-1.0.0\",\n      \"engines\": {\n        \"node\": \">=11.0.0\"\n      }\n    },\n    \"node_modules/tsdav\": {\n      \"version\": \"2.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/tsdav/-/tsdav-2.2.2.tgz\",\n      \"integrity\": \"sha512-/uC/RItcdYVxUj8b2gT4CorAkUmDFUuzhgS4XVT+OVzGRE80hH5ldubcWH13dHa2T9rNaXu6UIEWHlQ1UL7H1Q==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"base-64\": \"1.0.0\",\n        \"debug\": \"4.4.3\",\n        \"xml-js\": \"1.6.11\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/xml-js\": {\n      \"version\": \"1.6.11\",\n      \"resolved\": \"https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz\",\n      \"integrity\": \"sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"sax\": \"^1.2.4\"\n      },\n      \"bin\": {\n        \"xml-js\": \"bin/cli.js\"\n      }\n    }\n  }\n}\n\nFile v1.0.0:package.json\n\n{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CalDAV calendar and todo management tool. Supports events and tasks via CalDAV protocol with multi-account support.\",\n  \"main\": \"scripts/caldav.js\",\n  \"scripts\": {\n    \"list-calendars\": \"node scripts/caldav.js list-calendars\",\n    \"list-events\": \"node scripts/caldav.js list-events\",\n    \"list-todos\": \"node scripts/caldav.js list-todos\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^16.6.1\",\n    \"ical.js\": \"^1.5.0\",\n    \"tsdav\": \"^2.1.8\"\n  },\n  \"keywords\": [\n    \"caldav\",\n    \"calendar\",\n    \"todo\",\n    \"icalendar\",\n    \"skill\"\n  ],\n  \"author\": \"NetEase\",\n  \"license\": \"MIT\"\n}","readmeExcerpt":"Skill: caldav-sync Owner: gzlicanyi Summary: Calendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support. Tags: latest:1.0.3 Version history: v1.0.3 | 2026-05-22T14:27:51.449Z | user Incremental sync and caching support added. - Added incremental synchronization for events and todos to improve sync speed and efficiency. - Introduc","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"bash setup.sh"},{"language":"bash","snippet":"npm install --production"},{"language":"bash","snippet":"# Default account\nPROVIDER=163\nUSERNAME=your@163.com\nPASSWORD=your_password\nCALDAV_DEFAULT_CALENDAR="},{"language":"bash","snippet":"PROVIDER=custom\nUSERNAME=your@email.com\nPASSWORD=your_password\nCALDAV_SERVER_URL=https://your-caldav-server.com/"},{"language":"bash","snippet":"# Work account (WORK_ prefix)\nWORK_PROVIDER=gmail\nWORK_USERNAME=me@company.com\nWORK_PASSWORD=app_password\nWORK_CALDAV_DEFAULT_CALENDAR=work"},{"language":"bash","snippet":"node scripts/caldav.js --account work list-calendars\nnode scripts/caldav.js --account work list-events --start 2026-01-01 --end 2026-12-31"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: caldav-sync\ndescription: Calendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support.\nmetadata:\n  openclaw:\n    emoji: \"📅\"\n    requires:\n      bins:\n        - node\n        - npm\n      env:\n        - PROVIDER\n        - USERNAME\n        - PASSWORD\n    primaryEnv: PROVIDER\n---\n\n# CalDAV Sync Tool\n\nManage calendar events and todos via CalDAV protocol. Supports Google Calendar, iCloud, Nextcloud, Fastmail, NetEase (163/126/yeah.net), and any standard CalDAV server.\n\n## Configuration\n\nRun the setup script to install dependencies and configure your CalDAV account:\n\n```bash\nbash setup.sh\n```\n\nIf running commands manually without setup.sh, install dependencies first:\n\n```bash\nnpm install --production\n```\n\nConfiguration is stored at `~/.config/mail-skills/.env` (shared with imap-smtp-email skill). If no shared config is found, the skill falls back to a `.env` file in the skill directory.\n\n### Config file format\n\n```bash\n# Default account\nPROVIDER=163\nUSERNAME=your@163.com\nPASSWORD=your_password\nCALDAV_DEFAULT_CALENDAR=\n```\n\nThe `PROVIDER` preset auto-fills the CalDAV server URL. For custom servers:\n\n```bash\nPROVIDER=custom\nUSERNAME=your@email.com\nPASSWORD=your_password\nCALDAV_SERVER_URL=https://your-caldav-server.com/\n```\n\n## Multi-Account\n\nYou can configure additional accounts in the same config file. Each account uses a name prefix (uppercase) on all variables.\n\n```bash\n# Work account (WORK_ prefix)\nWORK_PROVIDER=gmail\nWORK_USERNAME=me@company.com\nWORK_PASSWORD=app_password\nWORK_CALDAV_DEFAULT_CALENDAR=work\n```\n\nAdd `--account <name>` before the command:\n\n```bash\nnode scripts/caldav.js --account work list-calendars\nnode scripts/caldav.js --account work list-events --start 2026-01-01 --end 2026-12-31\n```\n\n## Supported Providers\n\n| Provider | Server URL | Auth |\n|----------|-----------|------|\n| Google Calendar | `https://calendar.google.com/calendar/dav/` | App Password |\n| iCloud | `https://caldav.icloud.com/` | App-Specific Password |\n| Nextcloud | `https://<host>/remote.php/dav/calendars/<user>/` | Username/Password |\n| Fastmail | `https://caldav.fastmail.com/dav/` | Username/Password |\n| NetEase (163/126/yeah.net) | `https://caldav.163.com/` | Authorization Code |\n| NetEase Enterprise (North) | `https://caldav.qiye.163.com/` | Username/Password |\n| NetEase Enterprise (East) | `https://caldavhz.qiye.163.com/` | Username/Password |\n\n## Commands\n\n### list-calendars\n\nList all available calendars.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-calendars\n```\n\n### list-events\n\nQuery events in a time range.\n\n```bash\nnode scripts/caldav.js [--account <name>] list-events --start <date> --end <date> [--calendar <id>] [--force-refresh]\n```\n\n### get-event\n\nGet a specific event by UID.\n\n```bash\nnode scripts/caldav.js [--account <name>] get-event --uid <uid> [--calendar <id>]\n```\n\n### create-event\n\nCreate a new calendar event.\n\n```bash\nnode scripts/caldav.js ["},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn70j4ejnwqjpykvwwvgymmdcd8055qp\",\n  \"slug\": \"caldav-sync\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1779460071449\n}"},{"path":"skill-card.md","content":"## Description:\n\nCalendar and task management via CalDAV protocol. Query, create, edit, and delete calendar events and todos. Free/busy query, multi-account support.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[gzlicanyi](https://clawhub.ai/user/gzlicanyi)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agents use this skill to manage CalDAV calendars and task lists across supported providers, including querying availability, listing calendars, and creating, updating, or deleting events and todos.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill handles reusable calendar credentials and cached private calendar or task data.\n\nMitigation: Install only for trusted CalDAV servers, prefer provider presets or HTTPS-only custom endpoints, use app-specific passwords where available, and remove cached data and plaintext credentials when no longer needed.\n\nRisk: The skill can create, modify, and delete remote calendar events and todos.\n\nMitigation: Review requested write operations before execution and use the narrowest suitable account or calendar scope.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/gzlicanyi/skills/caldav-sync)\n- [Publisher profile](https://clawhub.ai/user/gzlicanyi)\n- [Google App Passwords](https://myaccount.google.com/apppasswords)\n- [Related imap-smtp-email skill](https://clawhub.ai/gzlicanyi/imap-smtp-email)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration]\n\n**Output Format:** [Markdown with JSON command output and inline shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May read and write remote calendar/task data and local CalDAV configuration or cache files.]\n\n## Skill Version(s):\n\n1.0.3 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"package-lock.json","content":"{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"caldav-sync-skill\",\n      \"version\": \"1.0.0\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"dotenv\": \"^16.6.1\",\n        \"ical.js\": \"^1.5.0\",\n        \"tsdav\": \"^2.1.8\"\n      }\n    },\n    \"node_modules/base-64\": {\n      \"version\": \"1.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz\",\n      \"integrity\": \"sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/dotenv\": {\n      \"version\": \"16.6.1\",\n      \"resolved\": \"https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz\",\n      \"integrity\": \"sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==\",\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">=12\"\n      },\n      \"funding\": {\n        \"url\": \"https://dotenvx.com\"\n      }\n    },\n    \"node_modules/ical.js\": {\n      \"version\": \"1.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/ical.js/-/ical.js-1.5.0.tgz\",\n      \"integrity\": \"sha512-7ZxMkogUkkaCx810yp0ZGKvq1ZpRgJeornPttpoxe6nYZ3NLesZe1wWMXDdwTkj/b5NtXT+Y16Aakph/ao98ZQ==\",\n      \"license\": \"MPL-2.0\"\n    },\n    \"node_modules/ms\": {\n      \"version\": \"2.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n      \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/sax\": {\n      \"version\": \"1.6.0\",\n      \"resolved\": \"https://registry.npmjs.org/sax/-/sax-1.6.0.tgz\",\n      \"integrity\": \"sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==\",\n      \"license\": \"BlueOak-1.0.0\",\n      \"engines\": {\n        \"node\": \">=11.0.0\"\n      }\n    },\n    \"node_modules/tsdav\": {\n      \"version\": \"2.2.2\",\n      \"resolved\": \"https://registry.npmjs.org/tsdav/-/tsdav-2.2.2.tgz\",\n      \"integrity\": \"sha512-/uC/RItcdYVxUj8b2gT4CorAkUmDFUuzhgS4XVT+OVzGRE80hH5ldubcWH13dHa2T9rNaXu6UIEWHlQ1UL7H1Q==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"base-64\": \"1.0.0\",\n        \"debug\": \"4.4.3\",\n        \"xml-js\": \"1.6.11\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/xml-js\": {\n      \"version\": \"1.6.11\",\n      \"resolved\": \"https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz\",\n      \"integrity\": \"sha512-7rVi2KMfwfWFl+Gp"},{"path":"package.json","content":"{\n  \"name\": \"caldav-sync-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"CalDAV calendar and todo management tool. Supports events and tasks via CalDAV protocol with multi-account support.\",\n  \"main\": \"scripts/caldav.js\",\n  \"scripts\": {\n    \"list-calendars\": \"node scripts/caldav.js list-calendars\",\n    \"list-events\": \"node scripts/caldav.js list-events\",\n    \"list-todos\": \"node scripts/caldav.js list-todos\"\n  },\n  \"dependencies\": {\n    \"dotenv\": \"^16.6.1\",\n    \"ical.js\": \"^1.5.0\",\n    \"tsdav\": \"^2.1.8\"\n  },\n  \"keywords\": [\n    \"caldav\",\n    \"calendar\",\n    \"todo\",\n    \"icalendar\",\n    \"skill\"\n  ],\n  \"author\": \"NetEase\",\n  \"license\": \"MIT\"\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1424,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T14:24:13.718Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T14:24:13.718Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T17:43:26.355Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}