home / skills / openclaw / openclaw / things-mac

things-mac skill

/skills/things-mac

This skill lets you manage Things 3 from macOS using the things CLI to add, update, and read tasks and projects.

npx playbooks add skill openclaw/openclaw --skill things-mac

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
3.3 KB
---
name: things-mac
description: Manage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database). Use when a user asks OpenClaw to add a task to Things, list inbox/today/upcoming, search tasks, or inspect projects/areas/tags.
homepage: https://github.com/ossianhempel/things3-cli
metadata: {"openclaw":{"emoji":"✅","os":["darwin"],"requires":{"bins":["things"]},"install":[{"id":"go","kind":"go","module":"github.com/ossianhempel/things3-cli/cmd/things@latest","bins":["things"],"label":"Install things3-cli (go)"}]}}
---

# Things 3 CLI

Use `things` to read your local Things database (inbox/today/search/projects/areas/tags) and to add/update todos via the Things URL scheme.

Setup
- Install (recommended, Apple Silicon): `GOBIN=/opt/homebrew/bin go install github.com/ossianhempel/things3-cli/cmd/things@latest`
- If DB reads fail: grant **Full Disk Access** to the calling app (Terminal for manual runs; `OpenClaw.app` for gateway runs).
- Optional: set `THINGSDB` (or pass `--db`) to point at your `ThingsData-*` folder.
- Optional: set `THINGS_AUTH_TOKEN` to avoid passing `--auth-token` for update ops.

Read-only (DB)
- `things inbox --limit 50`
- `things today`
- `things upcoming`
- `things search "query"`
- `things projects` / `things areas` / `things tags`

Write (URL scheme)
- Prefer safe preview: `things --dry-run add "Title"`
- Add: `things add "Title" --notes "..." --when today --deadline 2026-01-02`
- Bring Things to front: `things --foreground add "Title"`

Examples: add a todo
- Basic: `things add "Buy milk"`
- With notes: `things add "Buy milk" --notes "2% + bananas"`
- Into a project/area: `things add "Book flights" --list "Travel"`
- Into a project heading: `things add "Pack charger" --list "Travel" --heading "Before"`
- With tags: `things add "Call dentist" --tags "health,phone"`
- Checklist: `things add "Trip prep" --checklist-item "Passport" --checklist-item "Tickets"`
- From STDIN (multi-line => title + notes):
  - `cat <<'EOF' | things add -`
  - `Title line`
  - `Notes line 1`
  - `Notes line 2`
  - `EOF`

Examples: modify a todo (needs auth token)
- First: get the ID (UUID column): `things search "milk" --limit 5`
- Auth: set `THINGS_AUTH_TOKEN` or pass `--auth-token <TOKEN>`
- Title: `things update --id <UUID> --auth-token <TOKEN> "New title"`
- Notes replace: `things update --id <UUID> --auth-token <TOKEN> --notes "New notes"`
- Notes append/prepend: `things update --id <UUID> --auth-token <TOKEN> --append-notes "..."` / `--prepend-notes "..."`
- Move lists: `things update --id <UUID> --auth-token <TOKEN> --list "Travel" --heading "Before"`
- Tags replace/add: `things update --id <UUID> --auth-token <TOKEN> --tags "a,b"` / `things update --id <UUID> --auth-token <TOKEN> --add-tags "a,b"`
- Complete/cancel (soft-delete-ish): `things update --id <UUID> --auth-token <TOKEN> --completed` / `--canceled`
- Safe preview: `things --dry-run update --id <UUID> --auth-token <TOKEN> --completed`

Delete a todo?
- Not supported by `things3-cli` right now (no “delete/move-to-trash” write command; `things trash` is read-only listing).
- Options: use Things UI to delete/trash, or mark as `--completed` / `--canceled` via `things update`.

Notes
- macOS-only.
- `--dry-run` prints the URL and does not open Things.

Overview

This skill manages Things 3 on macOS via the things CLI and Things URL scheme. It can read the local Things database (inbox, today, upcoming, projects, tags) and create or update todos using safe preview or authenticated updates. Use it to script quick task adds, search your database, or drive Things from an assistant gateway.

How this skill works

The skill calls the things CLI to read the local ThingsData database for listings and search results. For writes it builds and optionally previews Things URL commands; updates require an auth token. It supports --dry-run previews, foreground opens to bring Things to the front, and uses the THINGSDB and THINGS_AUTH_TOKEN environment variables for configuration.

When to use it

  • Add a quick todo or checklist from a message or command
  • List inbox, Today, Upcoming, or search tasks in Things
  • Inspect projects, areas, or tags to show context before acting
  • Update a todo title, notes, tags, list, or completion status
  • Bring Things to the foreground and open a new task for manual review

Best practices

  • Prefer --dry-run for previewing URL-based writes before opening Things
  • Set THINGS_AUTH_TOKEN for automated update operations to avoid interactive prompts
  • Grant Full Disk Access to the calling app (Terminal or assistant gateway) if DB reads fail
  • Use THINGSDB (or --db) to point to a specific ThingsData-* folder when running multiple databases
  • For deletions, mark items completed or canceled; Things CLI does not support true delete currently

Example use cases

  • Add a task: create a todo with title, notes, tags, and optional checklist items
  • Quick inbox capture: add items into Inbox or a specific project/area from a chat command
  • Search and present: return matching todos or project lists for user review
  • Update a task: change title/notes/tags or move a todo to another project or heading (requires auth token)
  • List dashboard: fetch Today or Upcoming items for a daily summary

FAQ

Do I need anything special to read the Things database?

Grant Full Disk Access to the calling app (Terminal or OpenClaw.app) if reads fail. Optionally set THINGSDB to point at your ThingsData-* folder.

How do writes and updates work securely?

Writes use the Things URL scheme; use --dry-run to preview. Updates require THINGS_AUTH_TOKEN or passing --auth-token for authenticated operations.

Can I delete todos via the CLI?

The CLI has no delete/move-to-trash write command. Mark items as --completed or --canceled, or remove them manually in the Things UI.