productivity-todoist
Todoist
Overview
Read Todoist tasks from synced markdown files and manage them via the Python SDK. Provides task context to other skills (e.g., life-coach planning) and allows direct task management from the CLI.
Context
- Tasks are synced to
todoist-sync/tasks/as markdown files with YAML frontmatter - Sync freshness is tracked in
todoist-sync/sync-status.yml - Token stored at
~/.config/todoist-cli/config.json(set up vianpx @doist/todoist-cli auth token) - Triage script uses
uv run --scriptso dependencies are handled automatically - For project structure, labels, priorities, and collaboration model, see the "Todoist organization reference" appendix in
todoist-sync/README.md
Process
Step 1: Sync (always do this first)
Run the sync script to refresh local markdown files from Todoist:
./todoist-sync/scripts/sync.py
Or via justfile:
just todoist-sync
Check todoist-sync/sync-status.yml for last sync time. If the sync is recent (within the last hour), you can skip this step.
Step 2: Read tasks from synced files
Tasks live at todoist-sync/tasks/{project-slug}/{section-slug}/{task-slug}.md.
Each file has YAML frontmatter:
---
title: "Review Q1 invoices"
id: "6VpWpv2qfH9pm7fG"
project: "Work"
section: "Business ops"
priority: "p2"
labels: ["30-min", "admin"]
due: "2026-02-15"
recurring: false
created: "2026-02-01T12:00:00+05:30"
updated: "2026-02-08T12:00:00+05:30"
url: "https://app.todoist.com/app/task/..."
parent_id: null
---
To answer common queries, read the frontmatter:
- Today's tasks: find files where
dueis today or earlier - Tasks by project: read from the project's subdirectory
- High priority: find files where
priorityis p1 - Tasks with label: find files where
labelscontains the label - All tasks: read all
.mdfiles undertodoist-sync/tasks/
Step 3: Triage (write operations)
For modifying tasks (close, reschedule, label), use scripts/todoist-triage.py:
echo '[{"action": "drop", "task_name": "old task"}, {"action": "reschedule", "task_name": "deferred", "due_date": "2026-04-01"}]' | \
./scripts/todoist-triage.py
Actions: drop (add "dropped" label + close), complete (close), reschedule (update date), someday (add "someday" label + remove date)
After triage, run sync again to update the local files.
Resources
- todoist-sync/scripts/sync.py: One-way sync from Todoist to markdown (run first)
- todoist-sync/tasks/: Synced task files (read these for current state)
- todoist-sync/sync-status.yml: Sync metadata (last sync time, counts)
- scripts/todoist-triage.py: Batch triage via Todoist API (drop/complete/reschedule/someday)
Guidelines
- Always sync before reading tasks to ensure freshness
- Priority mapping: p1 (urgent/important), p2 (important), p3 (urgent, not important), p4 (neither). Todoist API inverts these: API priority 4 = p1, API priority 1 = p4.
- When reviewing tasks during planning: overdue tasks need a decision (reschedule, do today, or drop). Tasks with no due date need
--allduring weekly review. - After any triage action, re-run sync to update the local markdown files
More from nikhilmaddirala/gtd-cc
tools-catppuccin
Agent skill for creating and validating Catppuccin theme ports
18obsidian-gtd
Obsidian vault management and GTD workflows. Use when integrating with Obsidian vaults, managing notes, organizing knowledge, or supporting Getting Things Done methodology through note-based workflows.
13docs-pdf
Parse PDF documents into repository-friendly markdown and text artifacts. Use when users need to extract text, tables, or structure from PDF files.
10obsidian-options
Conduct comprehensive research comparing multiple options, alternatives, or approaches. Use when the user needs to evaluate product comparisons, technology evaluations, vendor selections, strategic alternatives, or any scenario requiring systematic analysis of multiple choices (e.g., baby formulas, project management tools, cloud providers, equipment purchases).
10web-crawl4ai
Complete Crawl4AI SDK reference and implementation guide. Use when users need to scrape websites, extract structured data, handle JavaScript-heavy pages, crawl multiple URLs, or build automated web data pipelines. Includes optimized extraction patterns, error handling, and comprehensive code examples.
10web-browser
Browser automation for AI agents. Use when the user needs to interact with websites, navigate pages, fill forms, click buttons, take screenshots, extract data, test web apps, or automate any browser task. Triggers include "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data", "test this web app", "login to a site", or any task requiring programmatic web interaction.
10