Help us improve
Share bugs, ideas, or general feedback.
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 thingsHow this skill is triggered — by the user, by Claude, or both
Slash command
/things:urlThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Write operations for Things 3 via the `things:///` URL scheme.
Captures todos to Things 3 inbox via bun CLI script. Supports titles, notes, tags, checklists, Markdown; auto-adds Claude tag and session attribution. Returns todo URL if x-callback available.
Manages tasks, projects, and areas using tdn CLI in markdown files with YAML frontmatter. Useful for creating, updating, querying, or organizing life and work tasks.
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
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