Back to skills
extension
Category: Development & EngineeringAPI key required

Microsoft To Do

Manage Microsoft To Do tasks via the `todo` CLI. Use when user wants to add, list, complete, remove tasks, manage subtasks (steps), notes, or organize task lists.

personAuthor: underwearhubclawhub

Microsoft To Do CLI

Manage tasks in Microsoft To Do using the todo command.

References

  • references/setup.md (Azure app registration + OAuth configuration)

Prerequisites

  1. todo CLI installed (pip install microsoft-todo-cli)
  2. Microsoft Azure app registered (see references/setup.md)
  3. Credentials configured at ~/.config/microsoft-todo-cli/keys.yml
  4. First run completes OAuth flow in browser

Commands

Tasks

# List tasks
todo tasks --json                        # Default list
todo tasks Work --json                   # Specific list
todo tasks --due-today --json            # Due today
todo tasks --overdue --json              # Past due
todo tasks --important --json            # High priority
todo tasks --completed --json            # Done tasks
todo tasks --all --json                  # Everything

# Create task
todo new "Task name" --json              # Basic
todo new "Task" -l Work --json           # In specific list
todo new "Task" -d tomorrow --json       # With due date
todo new "Task" -r 2h --json             # With reminder
todo new "Task" -d mon -r 9am --json     # Due Monday, remind 9am
todo new "Task" -I --json                # Important
todo new "Task" -R daily --json          # Recurring daily
todo new "Task" -R weekly:mon,fri --json # Specific days
todo new "Task" -S "Step 1" -S "Step 2" --json  # With subtasks
todo new "Task" -N "Note content" --json      # With note

# Update task
todo update "Task" --title "New" --json
todo update "Task" -d friday -I --json

# Complete/Uncomplete
todo complete "Task" --json
todo complete 0 1 2 --json               # Batch by index
todo uncomplete "Task" --json

# Delete
todo rm "Task" -y --json

Subtasks (Steps)

todo new-step "Task" "Step text" --json
todo list-steps "Task" --json
todo complete-step "Task" "Step" --json
todo uncomplete-step "Task" "Step" --json
todo rm-step "Task" 0 --json

Notes

todo note "Task" "Note content"
todo show-note "Task"
todo clear-note "Task"

Lists

todo lists --json
todo new-list "Project X" --json
todo rename-list "Old" "New" --json
todo rm-list "Project X" -y --json

Task Identification

| Method | Stability | Use Case | | ---------------- | --------- | ------------------- | | --id "AAMk..." | Stable | Automation, scripts | | Index (0, 1) | Unstable | Interactive only | | Name ("Task") | Unstable | Unique names only |

Use ID for multi-step operations:

ID=$(todo new "Task" -l Work --json | jq -r '.id')
todo complete --id "$ID" -l Work --json

Date & Time Formats

| Type | Examples | | -------- | ----------------------------------- | | Relative | 1h, 30m, 2d, 1h30m | | Time | 9:30, 9am, 17:00, 5:30pm | | Days | tomorrow, monday, fri | | Date | 2026-12-31, 31.12.2026 | | Keywords | morning (7:00), evening (18:00) |

Recurrence Patterns

| Pattern | Description | | -------------------- | ---------------- | | daily | Every day | | weekly | Every week | | monthly | Every month | | yearly | Every year | | weekdays | Monday to Friday | | weekly:mon,wed,fri | Specific days | | every 2 days | Custom interval |

Aliases

| Alias | Command | | ----- | ------------ | | t | tasks | | n | new | | c | complete | | d | rm | | sn | show-note | | cn | clear-note |

Notes

  • Always use --json for all commands to get structured output
  • Always use -y with rm commands to skip confirmation
  • Use --id with -l ListName for list context
  • First run opens browser for OAuth authentication