Help us improve
Share bugs, ideas, or general feedback.
From things
Reads and queries Things 3 data including todos by tag/project/list, projects/areas/tags, and logbook via JXA scripts. Supports markdown export. Read-only.
npx claudepluginhub bendrucker/claude --plugin thingsHow this skill is triggered — by the user, by Claude, or both
Slash command
/things:jxaThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Read and query Things 3 data via JXA.
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.
Automates Apple Reminders using JavaScript for Automation (JXA). Use when asked to "create reminders programmatically", "automate reminder lists", "JXA Reminders scripting", or "manage reminders via automation". Covers list/reminder management, filtering with 'whose' queries, efficient creation via constructors and push operations, and copy-delete patterns for moving items.
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.
Read and query Things 3 data via JXA.
To run JXA, use the Skill tool to invoke mac:jxa-run. Do NOT run bun or osascript directly.
Invoke via: Skill(mac:jxa-run, args: "Things3 ${CLAUDE_PLUGIN_ROOT}/scripts/jxa/query-list.js TMTodayListSource")
Invoke via: Skill(mac:jxa-run, args: "Things3 -e 'var app = Application(\"Things3\"); JSON.stringify(app.lists.byId(\"TMTodayListSource\").toDos().length)'")
Pipe the returned JSON through the formatter for table display:
echo '<json>' | bun ${CLAUDE_PLUGIN_ROOT}/scripts/format-output.ts [--json] [--columns name,status]
| Script | Usage | Description |
|---|---|---|
find-todos.js | <tag|project> <name> [--logbook] | Find todos by tag (across Inbox/Today/Anytime/Upcoming/Someday) or project |
query-list.js | <list-id> | Query todos from any built-in list |
query-logbook.js | <start-iso> <end-iso> | Query logbook with early termination. Full scans of 10k+ items are slow. |
query-metadata.js | <projects|areas|tags> | List projects, areas, or tags (tags omit todoCount for performance) |
export-markdown.js | [list-id] | Export a list to markdown checklist |
TMInboxListSource (Inbox), TMTodayListSource (Today), TMNextListSource (Anytime), TMCalendarListSource (Upcoming), TMSomedayListSource (Someday), TMLogbookListSource (Logbook)
Detect via midnight heuristic: creationDate at T00:00:00 local time = repeating instance. Templates have activationDate: null. See troubleshooting.md for examples.
open, completed, canceled
properties() for batch reads instead of individual gettersopen -g -a "Things3" to launch Things if not running