| name | todoist |
| description | Manage Todoist tasks. Use when the user mentions "todoist", "my tasks", "task list", "add a task", "complete task", or wants to interact with their Todoist account. |
Todoist Integration
Manage tasks via td CLI (todoist-rs).
Installation
brew install LuoAndOrder/tap/todoist-cli
Or install via Cargo: cargo install todoist-cli-rs
Sync Behavior
- Writes auto-sync:
add, done, edit, delete hit the API directly
- Reads use cache:
list, today, show read from local cache
- Sync when needed: Use
--sync flag or td sync for fresh data
td sync
td sync --full
Common Operations
List Tasks
td today --sync
td today --no-overdue
td list --sync
td list -p "Inbox" --sync
td list -p "Work" --sync
td list -f "p1 | p2" --sync
td list -l "urgent" --sync
td list --assigned-to me --sync
td list --assigned-to "Alice" --sync
td list -f "today & p1" --sync
td list -f "(today | overdue) & !@waiting_on" --sync
td list -f "assigned to: me & p1" --sync
Add Tasks
Quick add (natural language):
td quick "Buy milk tomorrow @errands #Personal"
td quick "Review PR tomorrow" --note "Check the auth changes carefully"
Structured add:
td add "Task content" \
-p "Inbox" \
-P 2 \
-d "today" \
-l "urgent"
td add "Review design" -p "Shared Project" --assign "Alice"
td add "Prepare quarterly report" -P 1 -d "friday" \
--description "Include sales metrics and customer feedback summary"
Options:
-P, --priority - 1 (highest) to 4 (lowest, default)
-p, --project - project name
-d, --due - due date ("today", "tomorrow", "2026-01-30", "next monday")
-l, --label - label (repeat for multiple)
--description - task description/notes (shown below task title)
--section - target section within project
--parent - parent task ID (creates subtask)
--assign - assign to collaborator (shared projects only)
Complete Tasks
td done <task-id>
td done <id1> <id2> <id3>
td done <id> --all-occurrences
Modify Tasks
td edit <task-id> -c "New content"
td edit <task-id> --description "Additional notes here"
td edit <task-id> -P 1
td edit <task-id> -d "tomorrow"
td edit <task-id> --add-label "urgent"
td edit <task-id> --remove-label "next"
td edit <task-id> --no-due
td edit <task-id> --section "Next Actions"
td edit <task-id> -p "Work"
td edit <task-id> --assign "Alice"
td edit <task-id> --assign me
td edit <task-id> --unassign
Edit options:
-c, --content - update task title
--description - update task description/notes
-P, --priority - change priority (1-4)
-d, --due - change due date
--no-due - remove due date
-l, --label - replace all labels
--add-label - add a label
--remove-label - remove a label
-p, --project - move to different project
--section - move to section within project
--assign - assign to collaborator (name, email, or "me")
--unassign - remove assignment
Show Task Details
td show <task-id>
td show <task-id> --comments
Delete Tasks
td delete <task-id>
Reopen Completed Tasks
td reopen <task-id>
Project & Label Management
td projects
td projects add "New Project"
td projects show <id>
td labels
td labels add "urgent"
td collaborators -p "Shared Project"
Filter Syntax
Use with -f/--filter:
| for OR: today | overdue
& for AND: @next & #Personal
- Parentheses:
(today | overdue) & p1
- Negation:
!@waiting_on
- Priority:
p1, p2, p3, p4
- Dates:
today, tomorrow, overdue, no date, 7 days
- Assignment:
assigned to: me, assigned to: others, assigned to: Alice, assigned by: me, assigned, !assigned
Workflow Tips
- Morning review:
td today --sync
- Quick capture:
td quick "thing to do"
- Focus list:
td list -f "@next" --sync
- Waiting on:
td list -f "@waiting_on" --sync
- End of day:
td today (cache is fine, already synced)