claude/skills/todoist/SKILL.md
Manage tasks, projects, and productivity in Todoist. View tasks, add new items, check completed work, and organize projects.
npx skillsauth add tbroadley/dotfiles todoistInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides access to Todoist via the REST API.
Get your API token:
Set as environment variable:
export TODOIST_TOKEN="your-api-token"
Use this skill when the user:
Base URL: https://api.todoist.com/rest/v2
All requests need:
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Important: Use $(printenv TODOIST_TOKEN) to ensure the token expands correctly in all shell contexts (zsh eval can lose variable values).
Get All Tasks:
curl -s "https://api.todoist.com/rest/v2/tasks" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Get Tasks by Filter:
curl -s -G "https://api.todoist.com/rest/v2/tasks" \
--data-urlencode "filter=today" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Get Single Task:
curl -s "https://api.todoist.com/rest/v2/tasks/{TASK_ID}" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Create Task:
curl -s -X POST "https://api.todoist.com/rest/v2/tasks" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)" \
-H "Content-Type: application/json" \
-d '{
"content": "Task name",
"due_string": "tomorrow",
"priority": 2
}'
Complete Task:
curl -s -X POST "https://api.todoist.com/rest/v2/tasks/{TASK_ID}/close" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Get All Projects:
curl -s "https://api.todoist.com/rest/v2/projects" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Get Project:
curl -s "https://api.todoist.com/rest/v2/projects/{PROJECT_ID}" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Get Sections:
curl -s "https://api.todoist.com/rest/v2/sections" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Get Sections in Project:
curl -s "https://api.todoist.com/rest/v2/sections?project_id={PROJECT_ID}" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Get All Labels:
curl -s "https://api.todoist.com/rest/v2/labels" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Get Comments on Task:
curl -s "https://api.todoist.com/rest/v2/comments?task_id={TASK_ID}" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
Add Comment:
curl -s -X POST "https://api.todoist.com/rest/v2/comments" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)" \
-H "Content-Type: application/json" \
-d '{
"task_id": "TASK_ID",
"content": "Comment text"
}'
The filter parameter accepts Todoist filter syntax:
| Filter | Description |
|--------|-------------|
| today | Due today |
| tomorrow | Due tomorrow |
| overdue | Past due |
| 7 days or next 7 days | Due in next 7 days |
| no date | No due date |
| p1 | Priority 1 (urgent) |
| @label_name | Has label |
| #project_name | In project |
| /section_name | In section |
| assigned to: me | Assigned to you |
| today & p1 | Combine with & |
| today | tomorrow | Combine with | (or) |
curl -s -G "https://api.todoist.com/rest/v2/tasks" \
--data-urlencode "filter=today" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)" | jq '.[] | {content, due: .due.string, priority}'
curl -s -G "https://api.todoist.com/rest/v2/tasks" \
--data-urlencode "filter=overdue" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
curl -s -X POST "https://api.todoist.com/rest/v2/tasks" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)" \
-H "Content-Type: application/json" \
-d '{
"content": "Review the PR",
"due_string": "tomorrow",
"priority": 2
}'
# First, find project ID
curl -s "https://api.todoist.com/rest/v2/projects" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)" | jq '.[] | {name, id}'
# Then get tasks
curl -s "https://api.todoist.com/rest/v2/tasks?project_id={PROJECT_ID}" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
curl -s -G "https://api.todoist.com/rest/v2/tasks" \
--data-urlencode "filter=p1 | p2" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)"
curl -s "https://api.todoist.com/rest/v2/projects" \
-H "Authorization: Bearer $(printenv TODOIST_TOKEN)" | jq '.[] | {name, id}'
When creating tasks:
tools
Add words to the Wispr Flow dictionary. Use when the user wants to add a word, phrase, or snippet to Wispr Flow for voice dictation.
documentation
Upload images to a GitHub PR description or comment using a shared gist as image hosting. Use when the user wants to add plots, screenshots, or other images to a PR.
data-ai
Use when working with stacked diffs (branch B based on branch A, which is based on main).
development
Read and analyze Inspect AI evaluation log files using the Python API. Extract samples, messages, events, and metrics from .eval files.