task-management
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.
What this skill does
# Task Management — The System That Thinks For You Todoist is the task layer. The agent is the gardener. ## Philosophy 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. ### What This Means In Practice - **Every task is a next physical action.** Not "research X" but "spend 20 min reading the X docs." Not "fix the bug" but "reproduce the bug in a test." - **Inbox is a capture buffer, not a todo list.** Process it to zero. Each item gets: do it (< 2 min), schedule it, delegate it, someday it, or delete it. - **Projects have appetite.** "2 weeks, small batch" or "6 weeks, big batch." If a project has been open for 3x its appetite with no progress, it's a zombie. Kill it or re-scope. - **Habits are anchored, not scheduled.** "After morning coffee → shoulder warm-up" not "Do exercises at 7am." The anchor is the trigger. - **Less is more.** A clean list with 5 clear next actions beats 50 vague intentions. Ruthlessly prune. If you haven't touched it in 2 weeks and it's not scheduled, it doesn't matter. ## Task Surfaces (ADR-0238) Todoist is not one undifferentiated bucket. - **Human surface**: tasks Joel must personally do, review, or decide - **Decision surface**: explicit questions for Joel, not generic backlog - **Machine surface**: agent bookkeeping, infra follow-ups, memory review, and system chores Rules: - Default human home is **`Joel's Tasks`** - `Questions for Joel` is for actual decisions only, not a dumping ground - `Agent Work` is for machine-visible backlog when a task is still useful at all - **Do not create machine tasks in Joel-facing projects** - **Do not let machine-task creation fall back into Joel-facing projects just because another surface failed** - If the agent can do the work now, **do it instead of tasking it** Good human-facing tasks: - "Ask Kristina for post-op follow-up appointment date" - "Update Grzegorz on instructor chat progress" - "Choose between A and B for launch pricing" Bad human-facing tasks: - "Investigate gateway retry chatter" - "Review memory proposal p-20260306-030" - "Build log query tool for LiveKit integration" when the agent can already do the work ## Todoist Adapter ### Credentials ```bash # 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) ``` ### Read ```bash 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 ``` ### Write ```bash # 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 ID ``` ### Priority Convention Use 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. ### Schedule Mapping | 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"` | ### Structure | 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 Filters (Pro) Todoist's filter syntax is powerful. Use via `todoist-cli list --filter`: ```bash 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 tasks ``` ## Agent Behaviors ### Capture Immediately When Joel says anything implying a task — "I need to...", "remind me to...", "we should...", "don't forget..." — capture it: ```bash 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. ### Process Inbox (GTD) When asked to review or when inbox has items: For each item, decide ONE of: 1. **Do it** — takes < 2 min? Just do it now. Complete the task. 2. **Schedule it** — `todoist-cli update ID --due today` or `--due "next monday"` 3. **Move it** — `todoist-cli move ID --project ID` 4. **Someday/maybe** — `todoist-cli update ID --labels someday` 5. **Delete it** — not worth doing. `todoist-cli delete ID` Present as a batch decision: "Inbox has 4 items. Here's my triage..." ### Create Tasks From Work When actionable items emerge from other activities (transcribed photos, calendar events, project planning): 1. Extract concrete next actions (verb-first, specific) 2. Decide the audience first: **human, decision, or machine** 3. Only human/decision work goes into Joel-facing Todoist views 4. Assign to the right project 5. Add descriptions with context (ADR refs, links, acceptance criteria) 6. Report what was created
Related in Productivity
gitea-workflow
IncludedOrchestrate agile development workflows for Gitea repositories using the tea CLI. Use when working with Gitea-hosted repos and asking to 'run the workflow', 'continue working', 'what's next', 'complete the task cycle', 'start my day', 'end the sprint', 'implement the next task', or wanting guided step-by-step development assistance. Keywords: workflow, orchestrate, agile, task cycle, sprint, daily, implement, review, PR, standup, retrospective, gitea, tea.
microsoft-graph-gateway
IncludedRoute Microsoft Graph work in this workspace. Use when users want to read or write Outlook mail, calendar events, contacts, OneDrive or SharePoint files, Teams, Planner, To Do, users, groups, directory data, or arbitrary Microsoft Graph endpoints from VS Code. Prefer WorkIQ for common read scenarios. Use Microsoft Graph for write actions and gap-read scenarios that need exact Graph properties, filters, permissions, or endpoints.
copilotkit
IncludedUse when building with CopilotKit — setup, development, integrations, debugging, upgrading, or contributing. Routes to the appropriate specialized skill based on the task.
wordly-wisdom
IncludedProvides calibrated decision analysis using Charlie Munger-style multiple mental models, inversion, incentive mapping, circle-of-competence checks, misjudgment audits, second-order effects, and forecast updates. Use when the user asks for an oracle take, a hard call, a decision memo, a premortem, an outside view, a red-team, a sanity-check, what am I missing, think this through, or wants a strategy, hire, investment, plan, product, partnership, or major life choice analysed. Avoid for simple factual lookups or time-sensitive legal, medical, or market questions without fresh evidence.
swain-session
IncludedSession management and project status dashboard. Owns the full session lifecycle (start/work/close/resume), focus lane, bookmarks, worktree detection, and tab naming. Also serves as the project status dashboard — shows active epics, progress, actionable next steps, blocked items, tasks, GitHub issues, and recommendations. Worktree creation is deferred to swain-do task dispatch (SPEC-195). Triggers on: 'session', 'status', 'what's next', 'dashboard', 'overview', 'where are we', 'what should I work on', 'show me priorities', 'bookmark', 'focus on', 'session info'.
gandi
IncludedComprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.