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 most of my work starts in a terminal or in a conversation with a coding agent, and moving a plan from there into Things meant copying every task by hand.
Now I can do it with one command.
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"
These commands go through the official Things URL scheme, so they are fast and need no 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 with its headings, tasks, and notes in one go.
A coding agent can turn our conversation into a Markdown plan, import it, then read the project back to check 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 goes through JavaScript for Automation, Apple’s JavaScript interface for Apple events. That’s how the CLI gets structured data out of Things.
The same mechanism lets it 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 to a coding agent.
With that installed, 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 reads with --json, imports projects from Markdown, and passes long notes through files or standard input.
I 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 on GitHub, released under the MIT license.
Want me to talk about your product? You can sponsor this site.