
Todoist
- 48 installs
- 76 repo stars
- Updated August 4, 2026
- vm0-ai/vm0-skills
Helps with ai & agent building tasks during AI-assisted development.
About
todoist is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- todoist
- AI & Agent Building
- AI-coding skill
Todoist by the numbers
- 48 all-time installs (skills.sh)
- Ranked #7,473 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/vm0-ai/vm0-skills --skill todoistAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 48 |
|---|---|
| repo stars | ★ 76 |
| Last updated | August 4, 2026 |
| Repository | vm0-ai/vm0-skills ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
Troubleshooting
If requests fail, run zero doctor check-connector --env-name TODOIST_TOKEN or zero doctor check-connector --url https://api.todoist.com/rest/v2/projects --method GET
Core APIs
Get All Projects
curl -s "https://api.todoist.com/rest/v2/projects" --header "Authorization: Bearer $TODOIST_TOKEN" | jq '.[] | {id, name, color, is_favorite}'Docs: https://developer.todoist.com/rest/v2/#get-all-projects
Get Project
Replace <project-id> with the actual project ID:
curl -s "https://api.todoist.com/rest/v2/projects/<project-id>" --header "Authorization: Bearer $TODOIST_TOKEN" | jq '{id, name, comment_count, color, is_shared, is_favorite, url}'Create Project
Write to /tmp/todoist_request.json:
{
"name": "My New Project"
}curl -s -X POST "https://api.todoist.com/rest/v2/projects" --header "Authorization: Bearer $TODOIST_TOKEN" --header "Content-Type: application/json" -d @/tmp/todoist_request.json | jq '{id, name, url}'Docs: https://developer.todoist.com/rest/v2/#create-a-new-project
Update Project
Replace <project-id> with the actual project ID.
Write to /tmp/todoist_request.json:
{
"name": "Renamed Project",
"color": "blue"
}curl -s -X POST "https://api.todoist.com/rest/v2/projects/<project-id>" --header "Authorization: Bearer $TODOIST_TOKEN" --header "Content-Type: application/json" -d @/tmp/todoist_request.json | jq '{id, name, color}'Delete Project
Replace <project-id> with the actual project ID:
curl -s -X DELETE "https://api.todoist.com/rest/v2/projects/<project-id>" --header "Authorization: Bearer $TODOIST_TOKEN" -w "\nHTTP Status: %{http_code}\n"A 204 response means success.
Get Active Tasks
curl -s "https://api.todoist.com/rest/v2/tasks" --header "Authorization: Bearer $TODOIST_TOKEN" | jq '.[] | {id, content, description, project_id, priority, due: .due.date, labels}'Docs: https://developer.todoist.com/rest/v2/#get-active-tasks
Get Active Tasks by Project
Replace <project-id> with the actual project ID:
curl -s "https://api.todoist.com/rest/v2/tasks?project_id=<project-id>" --header "Authorization: Bearer $TODOIST_TOKEN" | jq '.[] | {id, content, priority, due: .due.date}'Get Task
Replace <task-id> with the actual task ID:
curl -s "https://api.todoist.com/rest/v2/tasks/<task-id>" --header "Authorization: Bearer $TODOIST_TOKEN" | jq '{id, content, description, project_id, section_id, priority, due, labels, url}'Create Task
Write to /tmp/todoist_request.json:
{
"content": "Buy groceries",
"description": "Milk, eggs, bread",
"project_id": "<project-id>",
"priority": 3,
"due_string": "tomorrow at 10am",
"labels": ["errands"]
}curl -s -X POST "https://api.todoist.com/rest/v2/tasks" --header "Authorization: Bearer $TODOIST_TOKEN" --header "Content-Type: application/json" -d @/tmp/todoist_request.json | jq '{id, content, due: .due.date, url}'Docs: https://developer.todoist.com/rest/v2/#create-a-new-task
Update Task
Replace <task-id> with the actual task ID.
Write to /tmp/todoist_request.json:
{
"content": "Buy groceries and snacks",
"priority": 4
}curl -s -X POST "https://api.todoist.com/rest/v2/tasks/<task-id>" --header "Authorization: Bearer $TODOIST_TOKEN" --header "Content-Type: application/json" -d @/tmp/todoist_request.json | jq '{id, content, priority}'Complete Task
Replace <task-id> with the actual task ID:
curl -s -X POST "https://api.todoist.com/rest/v2/tasks/<task-id>/close" --header "Authorization: Bearer $TODOIST_TOKEN" -w "\nHTTP Status: %{http_code}\n"A 204 response means success.
Docs: https://developer.todoist.com/rest/v2/#close-a-task
Reopen Task
Replace <task-id> with the actual task ID:
curl -s -X POST "https://api.todoist.com/rest/v2/tasks/<task-id>/reopen" --header "Authorization: Bearer $TODOIST_TOKEN" -w "\nHTTP Status: %{http_code}\n"Delete Task
Replace <task-id> with the actual task ID:
curl -s -X DELETE "https://api.todoist.com/rest/v2/tasks/<task-id>" --header "Authorization: Bearer $TODOIST_TOKEN" -w "\nHTTP Status: %{http_code}\n"Get Sections
curl -s "https://api.todoist.com/rest/v2/sections" --header "Authorization: Bearer $TODOIST_TOKEN" | jq '.[] | {id, name, project_id, order}'Get Sections by Project
Replace <project-id> with the actual project ID:
curl -s "https://api.todoist.com/rest/v2/sections?project_id=<project-id>" --header "Authorization: Bearer $TODOIST_TOKEN" | jq '.[] | {id, name, order}'Create Section
Write to /tmp/todoist_request.json:
{
"project_id": "<project-id>",
"name": "Backlog"
}curl -s -X POST "https://api.todoist.com/rest/v2/sections" --header "Authorization: Bearer $TODOIST_TOKEN" --header "Content-Type: application/json" -d @/tmp/todoist_request.json | jq '{id, name, project_id}'Get Labels
curl -s "https://api.todoist.com/rest/v2/labels" --header "Authorization: Bearer $TODOIST_TOKEN" | jq '.[] | {id, name, color, order, is_favorite}'Create Label
Write to /tmp/todoist_request.json:
{
"name": "urgent",
"color": "red"
}curl -s -X POST "https://api.todoist.com/rest/v2/labels" --header "Authorization: Bearer $TODOIST_TOKEN" --header "Content-Type: application/json" -d @/tmp/todoist_request.json | jq '{id, name, color}'Get Comments for Task
Replace <task-id> with the actual task ID:
curl -s "https://api.todoist.com/rest/v2/comments?task_id=<task-id>" --header "Authorization: Bearer $TODOIST_TOKEN" | jq '.[] | {id, content, posted_at}'Create Comment
Write to /tmp/todoist_request.json:
{
"task_id": "<task-id>",
"content": "This task needs review before closing."
}curl -s -X POST "https://api.todoist.com/rest/v2/comments" --header "Authorization: Bearer $TODOIST_TOKEN" --header "Content-Type: application/json" -d @/tmp/todoist_request.json | jq '{id, content, posted_at}'Guidelines
1. Priority values: 1 (normal) to 4 (urgent) — higher number = higher priority 2. Due strings: Todoist supports natural language like "tomorrow", "every monday", "Jan 15 at 3pm" 3. Rate limits: Standard rate limits apply; avoid rapid-fire requests 4. Task IDs: All IDs are strings; use values from list/create responses 5. Completed tasks: Use the /close endpoint, not delete, to mark tasks done