Todoist CLI Skill
This skill provides procedural guidance for working with Todoist using the td CLI tool.
Prerequisites
The td CLI must be installed and authenticated. Verify with:
If td is not installed or not authenticated:
- Not installed: Tell the user to install with
npm install -g @doist/todoist-cli - Not authenticated: Tell the user to run
td auth loginto authenticate via OAuth
Output Formats for Agents
For machine-readable output, use these flags:
--json- Output as JSON array--ndjson- Output as newline-delimited JSON (one object per line)--full- Include all fields in JSON output (default shows essential fields only)
Confirmation Requirement
Before executing any destructive action, always ask the user for confirmation using AskUserQuestion or similar tool. A single confirmation suffices for a logical group of related actions.
Destructive actions include:
- Deleting tasks, projects, sections, labels, or comments
- Completing tasks
- Updating existing resources
- Archiving projects
Read-only operations do not require confirmation.
Quick Commands
Quick Add Examples
The quick add parser supports:
- Due dates:
tomorrow,next monday,Jan 15 - Priority:
p1(urgent) throughp4(normal) - Project:
#ProjectName - Section:
/SectionName - Labels:
@label1 @label2
Tasks
List Tasks
Filters:
--project <name>- Filter by project name or id:xxx--label <name>- Filter by label (comma-separated for multiple)--priority <p1-p4>- Filter by priority--due <date>- Filter by due date (today, overdue, or YYYY-MM-DD)--filter <query>- Raw Todoist filter query--assignee <ref>- Filter by assignee (me or id:xxx)--workspace <name>- Filter to workspace--personal- Filter to personal projects only
Output:
View Task Details
The ref can be a task name, partial match, or id:xxx.
Create Task
Quick add (natural language):
Explicit flags:
Options:
--content <text>- Task content (required)--due <date>- Due date (natural language or YYYY-MM-DD)--deadline <date>- Deadline date (YYYY-MM-DD)--priority <p1-p4>- Priority level--project <name>- Project name or id:xxx--section <id>- Section ID--labels <a,b>- Comma-separated labels--parent <ref>- Parent task for subtask--description <text>- Task description--assignee <ref>- Assign to user (name, email, id:xxx, or "me")--duration <time>- Duration (e.g., 30m, 1h, 2h15m)
Update Task
Options:
--content <text>- New content--due <date>- New due date--deadline <date>- Deadline date--no-deadline- Remove deadline--priority <p1-p4>- New priority--labels <a,b>- Replace labels--description <text>- New description--assignee <ref>- Assign to user--unassign- Remove assignee--duration <time>- Duration
Complete Task
Reopen Task
Note: Uncomplete requires the task ID (id:xxx format).
Delete Task
Move Task
Open in Browser
Projects
List Projects
View Project
Create Project
Options:
--name <name>- Project name (required)--color <color>- Colour name--parent <ref>- Parent project for nesting--view-style <style>- "list" or "board"--favorite- Mark as favourite
Update Project
Archive/Unarchive Project
Delete Project
Note: Project must have no uncompleted tasks.
List Collaborators
Sections
List Sections
Create Section
Update Section
Delete Section
Labels
List Labels
Create Label
Update Label
Delete Label
Comments
List Comments
Add Comment
Update Comment
Delete Comment
Reminders
List Reminders
Add Reminder
Delete Reminder
Filters
List Saved Filters
Show Tasks Matching Filter
Create Filter
Completed Tasks
Options:
--since <date>- Start date (YYYY-MM-DD), default: today--until <date>- End date (YYYY-MM-DD), default: tomorrow--project <name>- Filter by project
Activity and Stats
Pagination
For large result sets, use --all to fetch everything, or handle pagination with cursors:
Reference Resolution
The <ref> parameter in commands accepts:
- Task/project/label name (partial match supported)
id:xxxfor exact ID match- Numeric ID (interpreted as id:xxx)
Additional Reference
For detailed information on specific topics, consult:
references/completed-tasks.md- Alternative methods for completed task history via APIreferences/filters.md- Todoist filter query syntax for--filterflag
Workflow Summary
- Verify authentication -
td auth status - Read operations - Execute directly without confirmation
- Write operations - Ask for confirmation before executing
- Use JSON output - Add
--jsonflag for machine-readable data - Handle large datasets - Use
--allor pagination with--cursor


