Interactive triage of overdue and stale Todoist tasks. Presents tasks in batches, user decides fate of each: complete, reschedule, delete, someday, or skip. Use when the user says 'triage', 'process overdue tasks', 'clean up todoist', 'deal with overdue', 'task triage', 'inbox zero', or when /todoist dashboard shows high overdue count.
Process overdue and stale tasks interactively. You present, the user decides — never assume a task's fate.
Spawn todoist-fetch to retrieve tasks in a fresh context window:
Agent(subagent_type: "todoist-fetch", prompt: "Fetch overdue tasks: find-tasks with filter 'overdue'. Sort by age (oldest first). Include task IDs, titles, projects, priorities, due dates, creation dates, descriptions, and any labels.")
If the user said "triage inbox" or "inbox zero":
Agent(subagent_type: "todoist-fetch", prompt: "Fetch inbox tasks: find-tasks with filter '#Inbox'. Sort by creation date (oldest first). Include task IDs, titles, priorities, due dates, creation dates, descriptions, and any labels.")
For each task, calculate days overdue. Flag tasks that are 3+ weeks overdue — these have been implicitly deprioritized and are strong candidates for deletion or Someday.
Show 5 tasks at a time. For each task, display:
### Task 1/N: [Task Title]
- Project: [project name]
- Priority: [p1-p4]
- Due: [original due date] (X days overdue)
- Description: [if any, truncated to 2 lines]
- Staleness: [STALE if 3+ weeks — "This task has been sitting for X weeks. Honest question: is this still relevant?"]
Actions: (C)omplete | (R)eschedule [when?] | (D)elete | (S)omeday | (K)eep as-is | (?)Research
Use AskUserQuestion to get the user's decision. Accept shorthand: c, r tomorrow, r next monday, d, s, k, ?.
If the user picks ? on a task, spawn a research agent to get context:
Agent(subagent_type: "research", prompt: "Research context for this task: '[task title]'. [task description if any]. Help the user decide if this is still relevant and what the current state of this topic is.")
After research returns, re-present the task with the research context and ask again.
Batch decisions and run through the write pipeline (distill → scribe → QA):
Operation mapping:
complete-tasksreschedule-tasks (NEVER update-tasks — preserves recurrence)delete-objectupdate-tasks with dueString: "remove"1. Validate reasoning — spawn todoist-distill:
Agent(subagent_type: "todoist-distill", prompt: "Validate these triage decisions against user intent: [decisions with task data, user choices, and context]")
2. Format commands — spawn todoist-scribe with validated plan:
Agent(subagent_type: "todoist-scribe", prompt: "Format these validated triage operations as MCP commands: [distill's validated plan]")
3. Verify and execute — spawn todoist-qa:
Agent(subagent_type: "todoist-qa", prompt: "Verify and execute: [scribe's formatted commands]. Original intent: [distill's validated plan]")
After each batch of 5:
Completed: X | Rescheduled: X | Deleted: X | Someday: X | Kept: XAskUserQuestionWhen done (all tasks processed or user stops):
## Triage Complete
| Action | Count |
|--------|-------|
| Completed | X |
| Rescheduled | X |
| Deleted | X |
| Moved to Someday | X |
| Kept as-is | X |
Overdue count: [before] → [after]