Manage Todoist tasks, projects, labels, comments, and more via the td CLI
Use this skill when the user wants to interact with their Todoist tasks.
td today - Tasks due today and overduetd inbox - Inbox taskstd upcoming - Tasks due in next N daystd completed - Recently completed taskstd task add "content" - Add a tasktd task list - List tasks with filterstd task complete <ref> - Complete a tasktd project list - List projectstd label list - List labelstd filter list/view - Manage and use saved filterstd workspace list - List workspacestd activity - Activity logstd notification list - Notificationstd reminder add - Task reminderstd statstd settings view - User settingstd completion install - Install shell completionstd view <url> - View supported Todoist entities/pages by URLtd update - Self-update the CLI to the latest versionAll list commands support:
--json - JSON output (essential fields)--ndjson - Newline-delimited JSON (streaming)--full - Include all fields in JSON--raw - Disable markdown renderingMost list commands also support:
--limit <n> - Limit number of results--all - Fetch all results (no limit)--cursor <cursor> - Continue from pagination cursor--show-urls - Show web app URLs for each item--no-spinner - Disable loading animations--progress-jsonl - Machine-readable progress events (JSONL to stderr)-v, --verbose - Verbose output to stderr (repeat: -v info, -vv detail, -vvv debug, -vvvv trace)--accessible - Add text labels to color-coded output (due:/deadline:/~ prefixes, ★ for favorites). Also: TD_ACCESSIBLE=1Tasks, projects, labels, and filters can be referenced by:
id:xxx - Explicit IDhttps://app.todoist.com/app/task/buy-milk-8Jx4mVr72kPn3QwB or https://app.todoist.com/app/project/work-2pN7vKx49mRq6YhT)td today # Due today + overdue
td today --json # JSON output
td today --workspace "Work" # Filter to workspace
td today --personal # Personal projects only
td today --any-assignee # Include tasks assigned to others
td inbox # Inbox tasks
td inbox --priority p1 # Filter by priority
td inbox --due today # Filter by due date
td upcoming # Next 7 days
td upcoming 14 # Next 14 days
td upcoming --workspace "Work" # Filter to workspace
td upcoming --personal # Personal projects only
td upcoming --any-assignee # Include tasks assigned to others
td completed # Completed today
td completed --since 2024-01-01 --until 2024-01-31
td completed --project "Work" # Filter by project
# List with filters
td task list --project "Work"
td task list --label "urgent" --priority p1
td task list --due today
td task list --filter "today | overdue"
td task list --assignee me
td task list --assignee "[email protected]"
td task list --unassigned
td task list --workspace "Work"
td task list --personal
td task list --parent "Parent task"
# View, complete, uncomplete
td task view "task name"
td task complete "task name"
td task complete id:123456
td task complete "task name" --forever # Stop recurrence
td task uncomplete id:123456 # Reopen completed task
# Add tasks
td task add "New task" --due "tomorrow" --priority p2
td task add "Task" --deadline "2024-03-01" --project "Work"
td task add "Task" --duration 1h --section "Planning" --project "Work"
td task add "Task" --labels "urgent,review" --parent "Parent task"
td task add "Task" --description "Details here" --assignee me
# Update
td task update "task name" --due "next week"
td task update "task name" --deadline "2024-06-01"
td task update "task name" --no-deadline
td task update "task name" --duration 2h
td task update "task name" --assignee "[email protected]"
td task update "task name" --unassign
# Move
td task move "task name" --project "Personal"
td task move "task name" --section "In Progress"
td task move "task name" --parent "Parent task"
td task move "task name" --no-parent # Move to project root
td task move "task name" --no-section # Remove from section
# Delete and browse
td task delete "task name" --yes
td task browse "task name" # Open in browser
td project list
td project list --personal # Personal projects only
td project view "Project Name"
td project collaborators "Project Name"
td project create --name "New Project" --color "blue"
td project update "Project Name" --favorite
td project archive "Project Name"
td project unarchive "Project Name"
td project delete "Project Name" --yes
td project browse "Project Name" # Open in browser
td project move "Project Name" --to-workspace "Acme"
td project move "Project Name" --to-workspace "Acme" --folder "Engineering"
td project move "Project Name" --to-workspace "Acme" --visibility team
td project move "Project Name" --to-personal
# move requires --yes to confirm (without it, shows a dry-run preview)
td label list # Lists personal + shared labels
td label view "urgent" # View label details and tasks
td label view "team-review" # Works for shared labels too
td label create --name "urgent" --color "red"
td label update "urgent" --color "orange"
td label delete "urgent" --yes
td label browse "urgent" # Open in browser
Note: Shared labels (from collaborative projects) appear in list and can be viewed, but cannot be deleted/updated via the standard label commands since they have no ID.
td comment list --task "task name"
td comment list --project "Project Name" -P # Project comments
td comment add --task "task name" --content "Comment text"
td comment add --task "task name" --content "See attached" --file ./report.pdf
td comment view id:123 # View full comment
td comment update id:123 --content "Updated text"
td comment delete id:123 --yes
td comment browse id:123 # Open in browser
td section list "Work" # List sections in project (or --project "Work")
td section list --project "Work" # Same, using named flag
td section create --project "Work" --name "In Progress"
td section update id:123 --name "Done"
td section delete id:123 --yes
td section browse id:123 # Open in browser
td filter list
td filter create --name "Urgent work" --query "p1 & #Work"
td filter view "Urgent work" # Show tasks matching filter (alias: show)
td filter update "Urgent work" --query "p1 & #Work & today"
td filter delete "Urgent work" --yes
td filter browse "Urgent work" # Open in browser
td workspace list
td workspace view "Workspace Name"
td workspace projects "Workspace Name" # or --workspace "Workspace Name"
td workspace users "Workspace Name" --role ADMIN,MEMBER # or --workspace "..."
td activity # Recent activity
td activity --since 2024-01-01 --until 2024-01-31
td activity --type task --event completed
td activity --project "Work"
td activity --by me
td notification list
td notification list --unread
td notification list --type "item_assign"
td notification view id:123
td notification read --all --yes # Mark all as read
td notification accept id:123 # Accept share invitation
td notification reject id:123 # Reject share invitation
td reminder list "task name" # or --task "task name"
td reminder add "task name" --before 30m # or --task "task name" --before 30m
td reminder add "task name" --at "2024-01-15 10:00"
td reminder update id:123 --before 1h
td reminder delete id:123 --yes
td stats # View karma and productivity
td stats --json
td stats goals --daily 10 --weekly 50
td stats vacation --on # Enable vacation mode
td stats vacation --off # Disable vacation mode
td settings view
td settings view --json
td settings update --timezone "America/New_York"
td settings update --time-format 24 --date-format intl
td settings themes # List available themes
td completion install # Install tab completions (prompts for shell)
td completion install bash # Install for specific shell
td completion install zsh
td completion install fish
td completion uninstall # Remove completions
td view <todoist-url> # Auto-route to appropriate view by URL type
td view https://app.todoist.com/app/task/buy-milk-abc123
td view https://app.todoist.com/app/project/work-def456
td view https://app.todoist.com/app/label/urgent-ghi789
td view https://app.todoist.com/app/filter/work-tasks-jkl012
td view https://app.todoist.com/app/today
td view https://app.todoist.com/app/upcoming
td view <url> --json # JSON output for entity views
td view <url> --limit 25 --ndjson # Passthrough list options where supported
td update # Update CLI to latest version
td update --check # Check for updates without installing
td today --json | jq '.results | length' # Count today's tasks
td inbox --limit 5 # Quick inbox check
td upcoming # What's coming this week
td completed # What I finished today
td task list --project "Work" --label "urgent" --priority p1
td task list --filter "today & #Work"
td task list --workspace "Work" --due today
td task complete "Review PR"
td task complete id:123456789
td task uncomplete id:123456789 # Reopen if needed