Things3 Assistant
SkillDev toolsManage to-dos, projects, and tags in Things3 with natural language.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Things3 Assistant skill
What this skill tells your AI
The instructions your AI receives, as published by spamsch/son-of-simon in skills/things_assistant/SKILL.md and read by ahel’s review.
Behavior Notes
Creating To-Dos
- Parse natural language dates for the
dueparameter ("tomorrow" → compute YYYY-MM-DD) - Use
schedulefor when to show the to-do (today, evening, tomorrow, someday, anytime) - Use
duefor the actual deadline date - Tags are comma-separated:
--tags "work,urgent" - When the user says "add to Today", use
list_name="Today"orschedule="today" - Always prefer
project_idoverprojectname for assigning to-dos to projects — name-based lookup is unreliable in Things3 - When creating multiple to-dos for a project, first
create_things_projectto get the ID, then useproject_idfor each to-do move_things_todoandupdate_things_todoalso acceptto_project_id/set_project_id- When creating a to-do with
list_name, the to-do is created first, then moved to the target list (valid: Inbox, Today, Anytime, Someday — NOT Upcoming) update_things_todosupportsset_schedulefor changing when a to-do appears
Scheduling vs Due Dates
- Schedule controls when the to-do appears in Things (visibility)
- Due date is the deadline
- "Do this today" → schedule to today
- "This is due Friday" → set due date to Friday
- "Remind me about this tomorrow" → schedule to tomorrow
- Scheduling uses the Things URL scheme internally (AppleScript's
activation dateis read-only) - Requires
MACBOT_THINGS_AUTH_TOKENin~/.macbot/.env— get the token from Things → Settings → General → Enable Things URLs
Status Values
open— Active, not yet donecompleted— Donecanceled— Canceled/removed
Built-in Lists
- Inbox — Unprocessed items, brain dump
- Today — To-dos to focus on today
- Upcoming — Scheduled for future dates (virtual list — cannot move to-dos here directly; to-dos appear when they have a future schedule date via
set_schedule) - Anytime — Available to do anytime (no schedule)
- Someday — Ideas for later, not committed
- Logbook — Completed to-dos
- Trash — Deleted items
Moving to lists: Use move_things_todo for Inbox, Today, Anytime, Someday. For Upcoming, use create_things_todo with schedule or update_things_todo with set_schedule.
Two-Step Lookup
When the user wants to act on a specific to-do (complete, update, move), first search or list to find the to-do's ID, then use the ID for the action. This avoids ambiguity with duplicate names.
Common Request Patterns
- "show my today list" → show_things_today
- "what's in my inbox?" → show_things_inbox
- "add a to-do..." → create_things_todo with parsed name, due, tags, project
- "mark X as done" → search_things_todos to find it, then complete_things_todo with id
- "show my projects" → list_things_projects with with_todos=true
- "move X to Today" → move_things_todo with to_list="Today"
- "schedule X for next week" → update_things_todo with set_schedule="YYYY-MM-DD"
- "remind me in 2 weeks" → create_things_todo with schedule="YYYY-MM-DD" (compute the date)
- "what are my tags?" → list_things_tags with with_counts=true
- "show tasks for project X" → list_things_todos with project="X"
- "show tasks tagged X" → list_things_todos with tag="X"
- "update the due date" → update_things_todo with set_due
Notes on To-Dos
- Notes/descriptions can be added when creating a to-do with the
notesparameter - Notes can be updated on existing to-dos with
update_things_todousingset_notes - Notes support plain text (no rich text/HTML)
Signals
- GitHub stars
- 29
- Forks
- 1
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
things3-assistant- Source
- github.com/spamsch/son-of-simon