AgentSkillsCN

todoist

使用td(Todoist CLI)从终端读取和管理Todoist待办事项/任务。当用户询问他们的待办事项/任务/日程表/清单(今天/即将到期/逾期)、想列出收件箱/任务/项目/标签、用自然语言添加任务/待办事项,或更新/完成/删除/移动任务时触发(例如,在任务描述中添加电话号码、更改截止日期、优先级、标签)。

SKILL.md
--- frontmatter
name: todoist
description: Use the td (Todoist CLI) to read and manage Todoist todos/to-dos/tasks from the terminal. Trigger when the user asks about their todos/tasks/agenda/checklist (today/upcoming/overdue), wants to list inbox/tasks/projects/labels, add a task/todo with natural language, or update/complete/delete/move tasks (e.g., add a phone number to a task description, change due dates, priorities, labels).

Todoist via td CLI

Install / verify

Repo: https://github.com/Doist/todoist-cli

If td is not installed (e.g., command not found: td), install from the repo:

bash
git clone https://github.com/Doist/todoist-cli
cd todoist-cli
npm install
npm run build
npm link

Then verify:

bash
td --help

Use td for all Todoist operations. Prefer parseable output:

  • Use --json (or --ndjson) for listing/reading tasks.
  • Use td task update ... for edits (content, due, description, priority, labels, etc.).

Quick agenda

  • Today + overdue:
    • td today --json
  • Next N days:
    • td upcoming 7 --json
  • Inbox:
    • td inbox --json

When summarizing an agenda for the user:

  • Separate Overdue vs Due today (and optionally Upcoming).
  • Include priority (p1–p4) if present and any labels.

Find the right task to edit

Preferred approaches:

  1. If you already have the task id, use it directly:
  • Reference format: id:<taskId> (e.g., id:6WcqCcR4wF7XW5m6)
  1. If you only have a title/snippet, search/list then match:
  • td task list --json (optionally filter via other list commands like today, upcoming, inbox)
  • Then pick the correct item by content + due date + project.

To view a single task:

  • td task view <ref> --json

Common edits

Update description (notes):

  • td task update <ref> --description "..."

Update title/content:

  • td task update <ref> --content "New task title"

Change due date/time (natural language often works):

  • td task update <ref> --due "tomorrow 3pm"

Priority:

  • td task update <ref> --priority p1 (or p2/p3/p4)

Labels (replaces existing labels):

  • td task update <ref> --labels "Chores,Calls"

Complete / reopen:

  • td task complete <ref>
  • td task uncomplete id:<taskId>

Delete:

  • td task delete <ref> --yes (only if the user explicitly wants deletion)

Add tasks

Fast natural-language add:

  • td add "Call dentist tomorrow 10am p2 #Personal"

Or explicit add (when you need structured fields):

  • td task add --content "..." --due "..." --priority p2 --labels "..."

Safety / UX

  • Confirm before destructive actions (delete).
  • If multiple tasks match the user’s description, ask a clarifying question (or show candidates) before updating.
  • When the user asks to add info (e.g., a phone number), put it in the description unless they explicitly want it in the title.