I launched Things CLI
By Flavio Copes
Things CLI is a free command-line tool for creating, reading, and updating Things 3 projects and tasks from the terminal or a coding agent.
I launched Things CLI, a small command-line tool for Things 3 on macOS.
I use Things to keep track of projects and tasks.
But my work often starts in a terminal or a conversation with a coding agent. I wanted a direct way to move a plan into Things without copying every task by hand.
Things CLI gives me that bridge.
Install it
Things CLI is free and open source. You can install it directly from GitHub:
npm install -g github:flaviocopes/things-cli
It requires macOS, Things 3, and Node.js 20 or newer.
The project has no dependencies.
Add tasks and projects
You can add a task with a date, deadline, tags, notes, and a checklist:
things add "Call the accountant" \
--when tomorrow \
--deadline 2026-09-12 \
--tags work,money
You can also create a project:
things project "Launch newsletter redesign" \
--area "flaviocopes.com" \
--notes "Ship by October"
Things CLI uses the official Things URL scheme for these commands. This makes creating tasks and projects fast, without requiring an auth token.
Import a complete project from Markdown
This is the feature I wanted most.
You can describe a project with normal Markdown:
# Launch newsletter redesign
Keep the project context here.
## Website
- Update the home page
Add the new screenshots.
- Test the signup form
## Email
- Write the launch email
- Schedule the broadcast
Then import the file:
things import newsletter-project.md
Things creates the project, headings, tasks, and notes in one operation.
This works well with coding agents. An agent can turn our conversation into a Markdown plan, import it, then read the project back to verify the result.
Read Things from the terminal
Things CLI can show today’s tasks, projects, areas, and search results:
things list
things projects
things search "newsletter"
things show "Launch newsletter redesign"
Add --json when a script or coding agent needs structured data:
things list today --json
things show "Launch newsletter redesign" --json
Reading uses JavaScript for Automation, Apple’s JavaScript interface for Apple events. This gives the CLI structured data from Things.
The same mechanism lets the CLI update notes and complete tasks:
things note "Launch newsletter redesign" \
--append "Design approved"
things done "Update the home page" \
--in "Launch newsletter redesign"
Built for coding agents
The repository includes an Agent Skill that explains the safe workflow.
This means I can ask an agent:
Turn this conversation into a Things project. Keep the background in the project notes. Group the work under headings, then verify the imported project.
Or:
Show my tasks for today and help me choose three. Do not change anything.
The agent can use JSON for reading, Markdown for project imports, and files or standard input for long notes.
I also left out deletion on purpose. The CLI can create, read, update, and complete items, but it cannot trash them. If I want to delete something, I do that inside the Things app.
Things CLI is available now on GitHub. It is dependency-free and released under the MIT license.
Want me to talk about your product? You can sponsor this site.