Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Manage Notes, Tasks, Calendar, Files, and Contacts in your Nextcloud instance via CalDAV, WebDAV, and Notes API. Use for creating notes, managing todos and calendar events, uploading/downloading files, and managing contacts.
Manage Notes, Tasks, Calendar, Files, and Contacts in your Nextcloud instance via CalDAV, WebDAV, and Notes API. Use for creating notes, managing todos and calendar events, uploading/downloading files, and managing contacts.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
This skill provides integration with a Nextcloud instance. It supports access to Notes, Tasks (Todos), Calendars, Files, and Contacts.
The skill requires the following environment variables: NEXTCLOUD_URL: The base URL of your Nextcloud instance (e.g., https://cloud.example.com). NEXTCLOUD_USER: Your Nextcloud username. NEXTCLOUD_TOKEN: An App Password (recommended) or your login password.
List, get, create, update, and delete notes. API: index.php/apps/notes/api/v1/notes
List, create, update, delete, and complete tasks. API: CalDAV (VTODO).
List, create, update, and delete events. API: CalDAV (VEVENT).
List, search, upload, download, and delete files. API: WebDAV.
List, get, create, update, delete, and search contacts. API: CardDAV.
Run the skill via the bundled script. node scripts/nextcloud.js <command> <subcommand> [options]
notes list notes get --id <id> notes create --title <t> --content <c> [--category <cat>] notes edit --id <id> [--title <t>] [--content <c>] [--category <cat>] notes delete --id <id>
tasks list [--calendar <c>] tasks create --title <t> [--calendar <c>] [--due <d>] [--priority <p>] [--description <d>] tasks edit --uid <u> [--calendar <c>] [--title <t>] [--due <d>] [--priority <p>] [--description <d>] tasks delete --uid <u> [--calendar <c>] tasks complete --uid <u> [--calendar <c>]
calendar list [--from <iso>] [--to <iso>] (Defaults to next 7 days) calendar create --summary <s> --start <iso> --end <iso> [--calendar <c>] [--description <d>] calendar edit --uid <u> [--calendar <c>] [--summary <s>] [--start <iso>] [--end <iso>] [--description <d>] calendar delete --uid <u> [--calendar <c>]
calendars list [--type <tasks|events>]
files list [--path <path>] files search --query <q> files get --path <path> (download file content) files upload --path <path> --content <content> files delete --path <path>
contacts list [--addressbook <ab>] contacts get --uid <u> [--addressbook <ab>] contacts search --query <q> [--addressbook <ab>] contacts create --name <n> [--addressbook <ab>] [--email <e>] [--phone <p>] [--organization <o>] [--title <t>] [--note <n>] contacts edit --uid <u> [--addressbook <ab>] [--name <n>] [--email <e>] [--phone <p>] [--organization <o>] [--title <t>] [--note <n>] contacts delete --uid <u> [--addressbook <ab>]
addressbooks list
All outputs are JSON formatted.
{ "status": "success", "data": [ { "uid": "unique-task-id", "calendar": "Calendar Name", "summary": "Task title", "status": "NEEDS-ACTION", "due": "20260201T153000Z", "priority": 0 } ] } due: CalDAV format date (YYYYMMDDTHHmmssZ) or null priority: 0-9 (0 = undefined, 1 = highest, 9 = lowest) or null
{ "status": "success", "data": [ { "uid": "unique-event-id", "calendar": "Calendar Name", "summary": "Event title", "start": "20260205T100000Z", "end": "20260205T110000Z" } ] }
{ "status": "success", "data": [ { "uid": "unique-contact-id", "addressBook": "Address Book Name", "fullName": "John Doe", "name": "Doe;John;;;", "phones": ["+1234567890"], "emails": ["john@example.com"], "organization": "ACME Inc", "title": "Developer", "note": "Met at conference" } ] } phones: Array of phone numbers or null emails: Array of email addresses or null name: Structured name in vCard format (Last;First;Middle;Prefix;Suffix)
{ "status": "success", "data": [ ... ] } or { "status": "error", "message": "Error description" }
When creating tasks or calendar events, if the user does not specify a calendar: First time (no default set): Run calendars list --type tasks (for tasks) or calendars list --type events (for events) Ask the user which calendar to use from the list Ask if they want to set it as the default for future operations Remember their choice in memory If user sets a default: Remember default_task_calendar and/or default_event_calendar Use automatically for subsequent operations without asking If user declines to set a default: Ask again next time they create a task/event without specifying a calendar User can always override: Explicitly specifying --calendar always takes precedence over the default
default_task_calendar: Default calendar name for tasks (VTODO) default_event_calendar: Default calendar name for events (VEVENT)
When creating contacts, if the user does not specify an address book: First time (no default set): Run addressbooks list Ask the user which address book to use from the list Ask if they want to set it as the default for future operations Remember their choice in memory If user sets a default: Remember default_addressbook Use automatically for subsequent operations without asking If user declines to set a default: Ask again next time they create a contact without specifying an address book User can always override: Explicitly specifying --addressbook always takes precedence over the default
default_addressbook: Default address book name for contacts
When displaying data to the user, format it in a readable way. Output may be sent to messaging platforms (Telegram, WhatsApp, etc.) where markdown does not render, so avoid markdown formatting.
Use emojis to make output scannable and friendly Do NOT use markdown formatting (no bold, italic, code, tables, or lists with - or *) Use plain text with line breaks for structure Convert technical formats (like CalDAV dates) to human-readable formats Group related items logically
Tasks: โ (completed), โฌ (pending), ๐ด (high priority), ๐ก (medium), ๐ข (low) Calendar: ๐ (event), โฐ (time), ๐ (location) Notes: ๐ (note), ๐ (category) Files: ๐ (file), ๐ (folder), ๐พ (size) Contacts: ๐ค (person), ๐ง (email), ๐ฑ (phone), ๐ข (organization) Status: โจ (created), โ๏ธ (updated), ๐๏ธ (deleted), โ (error)
Tasks: ๐ Your Tasks โฌ ๐ด Buy groceries โ Due: Tomorrow 3:30 PM โฌ ๐ก Review PR #42 โ Due: Feb 5 โ Send email to client Calendar Events: ๐ Upcoming Events ๐๏ธ Team Standup โฐ Mon, Feb 3 โข 10:00 AM - 10:30 AM ๐ Zoom ๐๏ธ Project Review โฐ Wed, Feb 5 โข 2:00 PM - 3:00 PM Contacts: ๐ค John Doe ๐ง john@example.com ๐ฑ +1 234 567 890 ๐ข ACME Inc โ Developer Files: ๐ Documents/ ๐ report.pdf (2.3 MB) ๐ notes.txt (4 KB) ๐ Archive/
Convert CalDAV format 20260205T100000Z to readable format like Wed, Feb 5 โข 10:00 AM Show relative dates when helpful: "Tomorrow", "Next Monday", "In 3 days" Use the user's local timezone when possible
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.