Skip to content
Back to skills

Openclaw Nextcloud

ASecurity

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.

  • 14 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 7, 2026
businessgophpbashnodeapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 7, 2026

npx -y skills add modbender/skill-library-mcp --skill openclaw-nextcloud --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Openclaw Nextcloud?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Openclaw Nextcloud
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/modbender-openclaw-nextcloud/badge)](https://www.skillsdirectory.com/skills/modbender-openclaw-nextcloud)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: openclaw-nextcloud
description: 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.
license: MIT
compatibility: Requires Node.js 20+. Needs network access to Nextcloud instance.
allowed-tools: Bash Read
---

# OpenClaw Nextcloud Skill

This skill provides integration with a Nextcloud instance. It supports access to Notes, Tasks (Todos), Calendars, Files, and Contacts.

## Configuration

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.

## Features

### 1. Notes (Read/Write)
- List, get, create, update, and delete notes.
- API: `index.php/apps/notes/api/v1/notes`

### 2. Tasks / Todos (Read/Write)
- List, create, update, delete, and complete tasks.
- API: CalDAV (VTODO).

### 3. Calendar (Read/Write)
- List, create, update, and delete events.
- API: CalDAV (VEVENT).

### 4. Files (Read/Write)
- List, search, upload, download, and delete files.
- API: WebDAV.

### 5. Contacts (Read/Write)
- List, get, create, update, delete, and search contacts.
- API: CardDAV.

## Usage

Run the skill via the bundled script.

```bash
node scripts/nextcloud.js <command> <subcommand> [options]
```

## Commands

### Notes
- `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
- `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 Events
- `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 available calendars)
- `calendars list [--type <tasks|events>]`

### Files
- `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
- `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>]`

### Address Books (list available address books)
- `addressbooks list`

## Output Format

All outputs are JSON formatted.

### Tasks List Output
```json
{
  "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

### Calendar Events List Output
```json
{
  "status": "success",
  "data": [
    {
      "uid": "unique-event-id",
      "calendar": "Calendar Name",
      "summary": "Event title",
      "start": "20260205T100000Z",
      "end": "20260205T110000Z"
    }
  ]
}
```

### Contacts List Output
```json
{
  "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)

### General Format
```json
{
  "status": "success",
  "data": [ ... ]
}
```

or

```json
{
  "status": "error",
  "message": "Error description"
}
```

## Agent Behavior: Default Calendar Selection

When creating tasks or calendar events, if the user does not specify a calendar:

1. **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

2. **If user sets a default:**
   - Remember `default_task_calendar` and/or `default_event_calendar`
   - Use automatically for subsequent operations without asking

3. **If user declines to set a default:**
   - Ask again next time they create a task/event without specifying a calendar

4. **User can always override:**
   - Explicitly specifying `--calendar` always takes precedence over the default

### Memory Keys
- `default_task_calendar`: Default calendar name for tasks (VTODO)
- `default_event_calendar`: Default calendar name for events (VEVENT)

## Agent Behavior: Default Address Book Selection

When creating contacts, if the user does not specify an address book:

1. **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

2. **If user sets a default:**
   - Remember `default_addressbook`
   - Use automatically for subsequent operations without asking

3. **If user declines to set a default:**
   - Ask again next time they create a contact without specifying an address book

4. **User can always override:**
   - Explicitly specifying `--addressbook` always takes precedence over the default

### Memory Keys
- `default_addressbook`: Default address book name for contacts

## Agent Behavior: Presenting Information

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.

### General Guidelines
- 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

### Emoji Reference
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)

### Example Presentations

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/
```

### Date/Time Formatting
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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…