From things
Creates, updates, and manages Things 3 tasks and projects via URL scheme scripts. Supports add, batch JSON updates, reordering items in lists like today/anytime/someday. macOS automation.
npx claudepluginhub bendrucker/claude --plugin thingsThis skill is limited to using the following tools:
Write operations for Things 3 via the `things:///` URL scheme.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Write operations for Things 3 via the things:/// URL scheme.
Use url.ts for most operations — it handles auth tokens and URL encoding:
bun ${CLAUDE_PLUGIN_ROOT}/scripts/url.ts <command> [key=value ...]
# Bulk update: pass multiple id= params to batch via JSON command
bun ${CLAUDE_PLUGIN_ROOT}/scripts/url.ts update id=X id=Y id=Z when=tomorrow
For raw URL scheme access: open -g "things:///add?title=Buy%20milk&when=today"
Use -g for data commands (add, update, json) to run in background. Omit -g for show/search to foreground Things.
| Command | Description | Auth required |
|---|---|---|
add | Create a todo | No |
add-project | Create a project with optional todos | No |
update | Modify a todo's properties | Yes |
update-project | Modify a project's properties | Yes |
show | Navigate to a list, todo, or project | No |
search | Open search with optional query | No |
json | Batch create/update via JSON payload | Yes (for updates) |
See examples.md for detailed usage of each command.
bun ${CLAUDE_PLUGIN_ROOT}/scripts/reorder.ts [--list today|anytime|someday] <id1> <id2> <id3> ...
Items appear at the top of the list in the order specified. Default list is today. Also works for items within a project — use the --list value matching the items' current scheduling state.
When the x-callback-url plugin is installed, url.ts automatically uses xcall to get a response from Things on stdout. Present the result to the user as clickable https://things.bendrucker.me/show?id=<id> links:
add, update): returns x-things-id=<id> — present one linkjson): returns x-things-ids=["id1","id2"] — present a bulleted list with each todo's title and linkCallback is enabled by default. Disable with --callback=false to fall back to fire-and-forget via open -g. If xcall is unavailable, the script falls back silently.
For show command: inbox, today, anytime, upcoming, someday, logbook, tomorrow, deadlines, repeating, all-projects, logged-projects
The list parameter only works with project names. For areas, use list-id with the area UUID (query area IDs via the things:jxa skill).
today, tomorrow, eveninganytime, somedayyyyy-mm-dd (specific date)Things supports Markdown in notes:
#, ##, ###**text**::text::[title](url)- or 1.when=anytime to move a todo out of inbox without assigning an arealist-id with the area UUID (not area-id)id=X id=Y id=Z) to batch into a single JSON command instead of individual calls.when or deadline on repeating to-dos