# I launched Things CLI

> 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.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2026-09-08 | Topics: [News](https://flaviocopes.com/tags/news/) | Canonical: https://flaviocopes.com/things-cli/

I launched [Things CLI](https://github.com/flaviocopes/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:

```bash
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:

```bash
things add "Call the accountant" \
  --when tomorrow \
  --deadline 2026-09-12 \
  --tags work,money
```

You can also create a project:

```bash
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:

```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:

```bash
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:

```bash
things list
things projects
things search "newsletter"
things show "Launch newsletter redesign"
```

Add `--json` when a script or coding agent needs structured data:

```bash
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:

```bash
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](https://github.com/flaviocopes/things-cli). It is dependency-free and released under the MIT license.
