| name | todoist |
| version | 0.2.0 |
| description | Manage Todoist tasks, projects, and labels via official CLI |
| triggers | ["todoist","task management","todo list","create task","complete task"] |
| metadata | {"openclaw":{"emoji":"✅","homepage":"https://github.com/TechNickAI/openclaw-config/tree/main/skills/todoist","category":"productivity","requires":{"bins":["td"]},"install":[{"id":"todoist-cli","kind":"node","package":"@doist/todoist-cli","bins":["td"],"label":"Install Todoist CLI (npm)"}],"apiKey":{"env":"TODOIST_API_TOKEN","getFrom":"https://todoist.com/app/settings/integrations/developer"}}} |
Todoist ✅
Task and project management via the official Todoist CLI (td from
@doist/todoist-cli). No wrapper script — call td directly.
Setup
Before using any commands, ensure td is installed and authenticated.
Check if installed
command -v td
If missing, install it:
npm install -g @doist/todoist-cli
Check if authenticated
td auth status
If not authenticated, guide the user:
- "You'll need a Todoist API token. Grab one from
https://todoist.com/app/settings/integrations/developer"
- Once they provide it:
td auth token <THEIR_TOKEN>
- Verify:
td auth status should show their email and name
The token can also be set via TODOIST_API_TOKEN environment variable (useful for
OpenClaw gateway config).
Daily Views
td today
td upcoming
td upcoming 14
td inbox
td completed
td completed --since 2026-04-01
td stats
List & Filter Tasks
td task list
td task list --project "Work"
td task list --label "urgent"
td task list --priority p1
td task list --filter "today | overdue"
td task list --assignee me
td task list --json
td task list --all
Todoist Filter Syntax
Filters are powerful — some useful patterns:
today — due today
overdue — past due
today | overdue — both
no date — tasks without a due date
p1 — priority 1 (urgent)
#Work — in project "Work"
@urgent — has label "urgent"
assigned to: me — assigned to me
created before: -7 days — created in last week
due before: tomorrow — due today or earlier
Task Details
td task view id:abc123
td task view "Buy groceries"
Create Tasks
td task add "Buy groceries" --due tomorrow --priority p2
td task add "Review PR" --project "Work" --labels "code,urgent"
td task add "Write report" --description "Q1 summary" --due "next friday"
td task add "Team standup" --due "every weekday at 9am"
td add "Call dentist tomorrow at 3pm #health p1"
Update Tasks
td task update id:xxx --content "New title"
td task update id:xxx --due "next monday" --priority p3
td task update id:xxx --labels "work,urgent"
td task update id:xxx --description "Updated notes"
Complete / Reopen / Delete
td task complete id:xxx
td task uncomplete id:xxx
td task delete id:xxx --yes
Move Tasks
td task move id:xxx --project "Work"
td task move id:xxx --section "In Progress"
Projects
td project list
td project list --json
td project view "Work"
td project create --name "New Project" --color berry_red
Sections
td section list --project "Work"
td section create --project "Work" --name "In Progress"
Labels
td label list
td label create --name "urgent" --color red
Comments
td comment add id:xxx --content "Progress update"
td comment list id:xxx
Activity
td activity
Output
Plain text by default — readable by humans and LLMs. Add --json to any list command
when you need to extract specific fields programmatically.
Use --quiet to suppress success messages (create commands still print the ID).
Agent Tips
- Use
td task add for structured creation with flags — not td add
td add is natural language only (like Todoist's quick-add bar)
- References accept names (
"Work") or explicit IDs (id:xxx)
- Delete always requires
--yes to confirm
- Recurring tasks: use
--due "every monday" or "every weekday at 9am"
- Priority scale: p1 (urgent/red) → p4 (no priority) — p1 is highest
Troubleshooting
| Symptom | Fix |
|---|
td: command not found | npm install -g @doist/todoist-cli |
No API token found | td auth token <TOKEN> or set TODOIST_API_TOKEN |
HTTP 429 | Rate limited — wait a moment and retry |
HTTP 403 | Token invalid or expired — re-authenticate |
Workflow Integration
Works with the task-steward workflow for automated task management.