MH things-mac
v1.0.0Manage 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 as...
Security Scan
OpenClaw
Benign
medium confidencePurpose & Capability
Name/description match the requirements: the skill needs the 'things' CLI and offers commands to read the local Things DB and invoke the Things URL scheme. The install spec (go install of github.com/ossianhempel/things3-cli/cmd/things) produces the expected 'things' binary. There are no unrelated binaries or env vars requested.
Instruction Scope
Runtime instructions explicitly direct reading the local Things database (inbox/today/upcoming/search/projects/areas/tags) and recommend granting Full Disk Access to the calling app (Terminal for manual runs; 'OpenClaw.app' for gateway/autonomous runs) if DB reads fail. Reading the ThingsData-* folder and recommending Full Disk Access are coherent with the skill's purpose but are materially elevated privileges (broad filesystem access) and a privacy consideration.
Install Mechanism
Installation uses 'go install' of a public GitHub module (github.com/ossianhempel/things3-cli/cmd/things@latest) to create the 'things' binary. This is a standard mechanism but pulls the 'latest' module source at install time — moderate risk if you don't trust the repo or want deterministic builds. No suspicious download hosts or extract-from-arbitrary-URL behavior present.
Credentials
The registry lists no required env vars. SKILL.md references optional envs: THINGSDB (path to ThingsData-* folder) and THINGS_AUTH_TOKEN (used for updates). These are proportionate: the auth token is only needed for write/update operations; THINGSDB relates to reading the local DB. Still, THINGS_AUTH_TOKEN is sensitive and should be provided/stored securely if used.
Persistence & Privilege
always:false (not force-installed). The skill permits autonomous invocation (disable-model-invocation:false), which is platform default. Combined with the need to read the local Things DB and the instruction to grant Full Disk Access to the gateway app, autonomous invocation increases the potential blast radius — consider enabling only when needed or restricting agent autonomy.
Scan Findings in Context
[no-findings] expected: This is an instruction-only skill (no code files). The regex scanner had nothing to analyze, which is expected. The security-relevant behavior is contained in SKILL.md instructions.
Assessment
This skill appears to do what it says — manage Things 3 via the 'things' CLI — but it requires access to your local Things database and may need you to grant Full Disk Access to the calling app (OpenClaw.app) for gateway/autonomous runs. Before installing/using: 1) Review and trust the upstream repo (github.com/ossianhempel/things3-cli); prefer installing a pinned release instead of '@latest' to avoid pulling unexpected code. 2) Only grant Full Disk Access to OpenClaw.app if you understand and accept that it gives broad filesystem access; if unsure, run the CLI manually from Terminal instead. 3) Treat THINGS_AUTH_TOKEN as a secret: store it securely and only provide it if you need write/update operations. 4) If you are concerned about autonomous agent actions, restrict or disable autonomous invocation for this skill and enable it only when you explicitly want the agent to perform Things operations. 5) Optionally inspect the ThingsData-* path and the CLI locally before permitting gateway access.Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
✅ Clawdis
OSmacOS
Binsthings
Install
Install things3-cli (go)
Bins: things
go install github.com/ossianhempel/things3-cli/cmd/things@latestlatest
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.appfor gateway runs). - Optional: set
THINGSDB(or pass--db) to point at yourThingsData-*folder. - Optional: set
THINGS_AUTH_TOKENto avoid passing--auth-tokenfor update ops.
Read-only (DB)
things inbox --limit 50things todaythings upcomingthings 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 lineNotes line 1Notes line 2EOF
Examples: modify a todo (needs auth token)
- First: get the ID (UUID column):
things search "milk" --limit 5 - Auth: set
THINGS_AUTH_TOKENor 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-cliright now (no “delete/move-to-trash” write command;things trashis read-only listing). - Options: use Things UI to delete/trash, or mark as
--completed/--canceledviathings update.
Notes
- macOS-only.
--dry-runprints the URL and does not open Things.
Comments
Loading comments...
