PluginBench
Skill
Review
Audit score 70

things-mac

steipete/clawdis

Read and write Things 3 todos, projects, and tags from the command line on macOS.

What is things-mac?

A CLI for the Things 3 task manager that lets you query your inbox, today list, projects, areas, and tags, plus add and update todos programmatically. Use this when you need to automate task creation or inspection without opening the Things app.

  • List inbox, today, upcoming, projects, areas, and tags from your Things database
  • Search todos by query with optional limits
  • Add todos with titles, notes, due dates, projects, headings, tags, and checklists
  • Update existing todos: change title, notes, list, tags, or mark complete/canceled
  • Preview changes with --dry-run before executing
  • Read from stdin for multi-line todo input

How to install things-mac

npx skills add https://github.com/steipete/clawdis --skill things-mac
Prerequisites
  • macOS (darwin) only
  • Go installed (for installation via `go install`)
  • Full Disk Access granted to Terminal or calling app to read Things database
  • Optional: THINGS_AUTH_TOKEN environment variable for write operations
Claude Code
Cursor
Windsurf
Cline

How to use things-mac

  1. 1.Install via: GOBIN=/opt/homebrew/bin go install github.com/ossianhempel/things3-cli/cmd/things@latest
  2. 2.Grant Full Disk Access to Terminal or your calling application
  3. 3.Set THINGS_AUTH_TOKEN environment variable if you plan to update todos
  4. 4.Run read commands: things inbox, things today, things search "query"
  5. 5.For writes, use things add or things update with appropriate flags; use --dry-run first to preview

Use cases

Good for
  • Automatically create todos from external systems or scripts
  • Bulk-add related tasks to a project with consistent metadata
  • Search and inspect your Things database programmatically
  • Update todo status or metadata via API without opening the app
  • Generate task reports by querying projects, areas, or tags
Who it's for
  • macOS users automating task workflows
  • Developers integrating Things 3 with other tools
  • Power users building custom task creation scripts
  • Teams syncing external data into Things

things-mac FAQ

Can I delete todos with this CLI?

No, delete is not supported. Use the Things UI to delete/trash, or mark todos as --completed or --canceled via things update.

Do I need an auth token?

Only for write operations (add/update). Set THINGS_AUTH_TOKEN environment variable or pass --auth-token flag each time.

Can I add todos with checklists?

Yes, use --checklist-item flag multiple times: things add "Title" --checklist-item "Item 1" --checklist-item "Item 2"

What if database reads fail?

Grant Full Disk Access to the calling app (Terminal for manual runs, OpenClaw.app for gateway runs) in System Preferences > Security & Privacy.

Can I organize todos into projects and headings?

Yes, use --list for project/area and --heading for a heading within that project.

Full instructions (SKILL.md)

Source of truth, from steipete/clawdis.


name: things-mac description: "Add, update, list, search, or inspect Things 3 todos, inbox, today, projects, areas, and tags on macOS." 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.