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.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add modbender/skill-library-mcp --skill microsoft-todo --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Microsoft Todo?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-microsoft-todo)More formats (shields.io, HTML) on the badges page.
---
name: microsoft-todo
description: "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."
homepage: https://github.com/underwear/microsoft-todo-cli
metadata:
{
"openclaw":
{
"emoji": "✅",
"requires": { "bins": ["todo"] },
"install":
[
{
"id": "pip",
"kind": "uv",
"package": "microsoft-todo-cli",
"bins": ["todo"],
"label": "Install microsoft-todo-cli (pip/uv)",
},
],
},
}
---
# 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
```bash
# 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)
```bash
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
```bash
todo note "Task" "Note content"
todo show-note "Task"
todo clear-note "Task"
```
### Lists
```bash
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:
```bash
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
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!