Manage Joel's task system in Todoist. Triggers on: 'add a task', 'create a todo', 'what's on my list', 'today's tasks', 'what do I need to do', 'remind me to', 'inbox', 'complete', 'mark done', 'weekly review', 'groom tasks', 'what's next', or when actionable items emerge from other work. Also triggers when Joel mentions something he needs to do in passing — capture it.
87
83%
Does it follow best practices?
Impact
95%
1.53xAverage score across 3 eval scenarios
Passed
No known issues
Todoist is the task layer. The agent is the gardener.
Three systems, one practice:
Getting Things Done (David Allen): Your brain is for having ideas, not holding them. Capture everything immediately. Process to next physical action. If it takes < 2 min, do it now. Weekly review is sacred.
Shape Up (Ryan Singer, Basecamp): Work expands to fill the time available. Set appetite (how much time is this worth?), not estimates. Projects are bets with fixed timelines, not open-ended backlogs. If it's not worth betting on, kill it.
Tiny Habits (BJ Fogg): Behavior change = anchor moment + tiny behavior + celebration. "After I [existing routine], I will [tiny version of new habit]." Make it stupidly small. Celebrate immediately. Let it grow naturally.
# API token from https://app.todoist.com/app/settings/integrations/developer
# Stored in agent-secrets
export TODOIST_API_TOKEN=$(secrets lease todoist_api_token --raw)todoist-cli today # What's due today
todoist-cli inbox # Needs triage
todoist-cli list # All active tasks
todoist-cli list --filter "p1" # Todoist filter query (priority 1)
todoist-cli list --project ID # Tasks in a project
todoist-cli list --label review # Tasks with a label
todoist-cli projects # All projects
todoist-cli sections --project ID # Sections in a project
todoist-cli labels # All labels
todoist-cli show ID # Task detail + comments
todoist-cli review # Daily standup: today, inbox, overdue, project breakdown# Create a task
todoist-cli add "Title" --due today --description "Details" --project ID
# With labels, priority, deadline
todoist-cli add "Ship feature" --due "next monday" --priority 3 --labels agent,urgent --deadline 2026-03-01
# Complete
todoist-cli complete ID
# Update
todoist-cli update ID --content "New title" --due tomorrow --description "Updated notes"
# Move between projects
todoist-cli move ID --project ID
# Delete permanently
todoist-cli delete ID
# Reopen a completed task
todoist-cli reopen ID
# Create a project
todoist-cli add-project "Project Name" --color blue
# Create a section
todoist-cli add-section "Section Name" --project IDUse Todoist's native p1–p4. The API inverts these: --priority 4 = p1 (red) in the UI.
| UI | API | Meaning | Agent rule |
|---|---|---|---|
| p1 🔴 | --priority 4 | Urgent / today | Blocking something. Do it now or escalate. |
| p2 🟠 | --priority 3 | High / this week | Next up. Agent picks from these first. |
| p3 🔵 | --priority 2 | Medium / this cycle | Scheduled work. Gets done when p1-p2 clear. |
| p4 ⚪ | --priority 1 | Backlog | Someday/maybe. Reviewed weekly, killed if stale. |
SOP: When creating agent tasks from ADRs or session work, always set priority. Default to p3. Promote to p2 if it unblocks other work. p1 is rare — something is broken or blocking Joel.
| Todoist | GTD Context | CLI Flag |
|---|---|---|
| Inbox (no project) | Captured, not processed | (default) |
--due today | Committed — doing it today | --due today |
--due "next week" | Scheduled | --due "next monday" |
| No due date | Next action, no date pressure | (omit --due) |
Label: someday | Maybe/later — reviewed weekly | --labels someday |
--due "every day" | Recurring habit | --due "every day" |
| Concept | Todoist | Rule |
|---|---|---|
| Project | Project | Finite goal with appetite. Has a "done" state. Archive when complete. |
| Section | Section | Group within a project. Optional — keep flat until complexity demands it. |
| Task | Task | Next physical action. Concrete, verb-first. |
| Habit | Recurring task | --due "every day" or "every friday at 5pm". Anchored to routine. |
| Context | Label | Lightweight tags: review, agent, someday, waiting. |
Todoist's filter syntax is powerful. Use via todoist-cli list --filter:
todoist-cli list --filter "today | overdue" # Due today or overdue
todoist-cli list --filter "p1 & !#Inbox" # Priority 1, not in inbox
todoist-cli list --filter "no date" # Floating tasks
todoist-cli list --filter "@review" # Label: review
todoist-cli list --filter "assigned to: me" # My tasks
todoist-cli list --filter "created before: -14d" # Stale tasksWhen Joel says anything implying a task — "I need to...", "remind me to...", "we should...", "don't forget..." — capture it:
todoist-cli add "The thing Joel said"Then confirm: "Captured → Inbox: 'The thing Joel said'"
Don't ask permission to capture. Ask permission before scheduling or assigning to a project. Capturing is free.
When asked to review or when inbox has items:
For each item, decide ONE of:
todoist-cli update ID --due today or --due "next monday"todoist-cli move ID --project IDtodoist-cli update ID --labels somedaytodoist-cli delete IDPresent as a batch decision: "Inbox has 4 items. Here's my triage..."
When actionable items emerge from other activities (transcribed photos, calendar events, project planning):
When Joel asks for weekly review, or triggered by the recurring Friday task:
todoist-cli reviewThen:
someday.Before creating a task, ask: could joelclaw do this right now? If yes, do it and create a completed task as a record. Tasks are for humans; agents execute.
If Todoist auth fails, use Vault markdown checklists:
- [ ] Task description
- [x] Completed taskGoogle Tasks via gog is available as secondary adapter.
When an ADR is accepted or proposed, its remaining work should exist as Todoist tasks. This is how the system tracks what's actually next.
After an ADR sweep or session that produces action items:
agent (agent can do it) or joel (needs human). Add joelclaw if it's system work.implementedThe loop: ADR sweep → tasks created → agent/Joel works tasks → tasks completed → ADR status updated → next sweep finds it clean.
Don't create tasks for:
todoist-cli list --filter to search.825972c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.