Skip to content
Back to skills

Things Assistant

ASecurity

Manage to-dos, projects, and tags in Things3 with natural language.

  • 29 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added June 11, 2026
business

Security analysis

A100/100

Scanned June 11, 2026

npx -y skills add spamsch/son-of-simon --skill things_assistant --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Things Assistant?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Things Assistant
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/spamsch-things-assistant/badge)](https://www.skillsdirectory.com/skills/spamsch-things-assistant)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
id: things_assistant
name: Things3 Assistant
description: Manage to-dos, projects, and tags in Things3 with natural language.
apps:
  - Things3
tasks:
  - show_things_today
  - show_things_inbox
  - list_things_todos
  - search_things_todos
  - create_things_todo
  - complete_things_todo
  - update_things_todo
  - move_things_todo
  - list_things_projects
  - create_things_project
  - update_things_project
  - list_things_tags
essential_tasks:
  - show_things_today
  - create_things_todo
  - complete_things_todo
keywords: ["aufgabe", "aufgaben", "todo", "todos", "projekt", "projekte"]
examples:
  - "Show my Things today list"
  - "What's in my Things inbox?"
  - "Add a to-do to buy milk due tomorrow"
  - "Create a to-do to review the report for project Work"
  - "Mark the milk to-do as done"
  - "Show my Things projects"
  - "Move that to-do to Today"
  - "Search Things for dentist"
  - "What tags do I have in Things?"
safe_defaults:
  status: open
  include_completed: false
confirm_before_write:
  - complete to-do
  - cancel to-do
  - delete to-do
requires_permissions:
  - Automation:Things3
---

## Behavior Notes

### Creating To-Dos
- Parse natural language dates for the `due` parameter ("tomorrow" → compute YYYY-MM-DD)
- Use `schedule` for when to show the to-do (today, evening, tomorrow, someday, anytime)
- Use `due` for the actual deadline date
- Tags are comma-separated: `--tags "work,urgent"`
- When the user says "add to Today", use `list_name="Today"` or `schedule="today"`
- **Always prefer `project_id` over `project` name** for assigning to-dos to projects — name-based lookup is unreliable in Things3
- When creating multiple to-dos for a project, first `create_things_project` to get the ID, then use `project_id` for each to-do
- `move_things_todo` and `update_things_todo` also accept `to_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_todo` supports `set_schedule` for 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 date` is read-only)
- Requires `MACBOT_THINGS_AUTH_TOKEN` in `~/.macbot/.env` — get the token from Things → Settings → General → Enable Things URLs

### Status Values
- `open` — Active, not yet done
- `completed` — Done
- `canceled` — 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 `notes` parameter
- Notes can be updated on existing to-dos with `update_things_todo` using `set_notes`
- Notes support plain text (no rich text/HTML)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.