关于 task-management
面向使用 Todoist 管理个人行动的 Agent,提供一套结合 GTD、Shape Up 与 Tiny Habits 的任务整理方法。内容涵盖任务捕获、收件箱分流、项目和习惯管理,以及通过 todoist-cli 执行的操作规范。
主要功能
- 01GTD、Shape Up 与 Tiny Habits 方法
- 02将任务写成具体的下一步行动
- 03收件箱分流与每周回顾流程
- 04项目时限、优先级和标签规范
- 05通过 todoist-cli 管理任务
适用场景
- 01捕获并整理口头提出的个人待办
- 02回顾收件箱并安排或删除任务
- 03为项目拆解具体的人工作业
- 04规划与日常习惯关联的重复任务
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ joelhooks/ joelclaw --skill task-management安装后在 Claude Code 中输入/task-management确认已加载。
附带文件agents/openai.yamlassets/small-logo.svg
详细介绍
任务管理——替你思考的系统
Todoist 是任务层。Agent 是园丁。
理念
三个系统,一种实践:
Getting Things Done(David Allen):你的大脑是用来产生想法的,不是用来记住它们的。立即记录所有事情。处理时将其转化为下一步具体行动。如果不到 2 分钟,现在就做。每周回顾神圣不可侵犯。
Shape Up(Ryan Singer,Basecamp):工作会膨胀到填满可用时间。设定投入时限(这件事值得花多少时间?),而不是估算工期。项目是有固定时间线的押注,不是无休止的待办列表。如果不值得押注,就放弃它。
Tiny Habits(BJ Fogg):行为改变 = 锚定时刻 + 微小行为 + 庆祝。“在我 [现有日常惯例] 之后,我会 [新习惯的微小版本]。”让它小到毫不费力。立即庆祝。让它自然成长。
实践中的含义
- 每项任务都是下一步具体行动。 不是“研究 X”,而是“花 20 分钟阅读 X 的文档”。不是“修复这个 bug”,而是“在测试中重现这个 bug”。
- 收件箱是捕获缓冲区,不是待办列表。 将其清空。每个条目都要:立即完成(不到 2 分钟)、安排时间、委派、放到“以后再说”,或删除。
- 项目都有投入时限。 “2 周,小批量”或“6 周,大批量”。如果项目开放的时间已经是其投入时限的 3 倍,却毫无进展,那它就是僵尸项目。放弃它或重新设定范围。
- 习惯要锚定,而不是安排时间。 “早晨喝完咖啡后 → 肩部热身”,而不是“早上 7 点做运动”。锚点就是触发因素。
- 少即是多。 一份包含 5 项明确下一步行动的清单,胜过 50 项模糊意向。果断删减。如果你 2 周没碰过某件事,而且它也没有安排时间,那它就不重要。
个人行动边界
Todoist 是 Joel 实际使用的 GTD 风格个人行动清单。Brain PARA 存放项目支持材料、领域、资源、收据和归档。不要在 Todoist 中重建 PARA 树。
规则:
- 默认的行动归属项目是
Joel's Tasks。 Questions for Joel仅用于实际决策,不能当作杂物堆。- 旧的
Agent Work项目已归档。机器记账、基础设施后续事项、旧版记忆审查杂务和系统杂务不属于 Todoist。 - 默认禁用系统总线对 Todoist 的修改。
TODOIST_AUTOMATION_WRITES_ENABLED=true是紧急兼容性覆盖选项,不是正常操作方式。 - Joel 要求记录、安排、移动、完成或删除个人任务时,Agent 可以通过明确的
todoist-cli命令修改 Todoist。 - 如果 Agent 现在就能完成工作,就直接去做,而不是把它列为任务。
适合面向人的任务:
- “询问 Kristina 术后复诊预约日期”
- “向 Grzegorz 更新讲师群聊进展”
- “为发布定价在 A 和 B 之间做出选择”
不适合面向人的任务:
- “调查 gateway 重试相关讨论”
- “审查旧版记忆提案 p-20260306-030”(已弃用的历史工作流)
- “为 LiveKit 集成构建日志查询工具”(Agent 已经能完成这项工作时)
Todoist 适配器
凭据
# 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 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
优先级约定
使用 Todoist 原生的 p1–p4。API 中的优先级顺序相反:--priority 4 = UI 中的 p1(红色)。
| UI | API | 含义 | Agent 规则 |
|---|---|---|---|
| p1 🔴 | --priority 4 | 紧急 / 今天 | 会阻碍其他事情。现在就做或升级处理。 |
| p2 🟠 | --priority 3 | 高 / 本周 | 接下来要做。Agent 优先从这些任务中选择。 |
| p3 🔵 | --priority 2 | 中 / 本周期 | 已安排的工作。p1–p2 清空后再完成。 |
| p4 ⚪ | --priority 1 | 待办 | 以后再说/也许会做。每周回顾,过时则删除。 |
标准操作流程:根据 ADR 或会话工作创建已授权的人类行动任务时,始终设置优先级。 默认为 p3。如果能解除其他工作的阻碍,则提升为 p2。p1 很少使用——只有出现故障或 Joel 的工作受阻时才用。
计划映射
| Todoist | GTD 情境 | CLI 标志 |
|---|---|---|
| 收件箱(无项目) | 已捕获,尚未处理 | (默认) |
--due today | 已承诺 — 今天要做 | --due today |
--due "next week" | 已安排 | --due "next monday" |
| 无截止日期 | 下一步行动,无日期压力 | (省略 --due) |
标签:someday | 以后再说 — 每周回顾 | --labels someday |
--due "every day" | 周期性习惯 | --due "every day" |
结构
| 概念 | Todoist | 规则 |
|---|---|---|
| 项目 | 项目 | 有明确范围的目标。具有“完成”状态。完成后归档。 |
| 分区 | 分区 | 项目内的分组。可选 — 除非复杂度要求,否则保持扁平。 |
| 任务 | 任务 | 下一步具体行动。具体明确,以动词开头。 |
| 习惯 | 周期性任务 | --due "every day" 或 "every friday at 5pm"。融入日常惯例。 |
| 情境 | 标签 | 轻量标签:review、agent、someday、waiting。 |
Todoist 筛选器(Pro)
Todoist 的筛选语法功能强大。使用 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 tasks
Agent 行为
立即捕获
当 Joel 说的内容暗示有任务时 —“我需要……”“提醒我……”“我们应该……”“别忘了……”— 请将其捕获:
todoist-cli add "The thing Joel said"
然后确认:“已捕获 → 收件箱:‘Joel 说的那件事’”
直接捕获用户要求的任务。用户指定截止日期或项目,即表示授权设置该项。如果用户没有指定,就将任务保留在收件箱中,不要擅自安排日程,也不要提出不必要的问题。
处理收件箱(GTD)
当用户要求检查收件箱,或收件箱中有项目时:
对每个项目,只选择以下一项:
- 立即完成 — 少于 2 分钟?现在就做。完成该任务。
- 安排时间 —
todoist-cli update ID --due today或--due "next monday" - 移至项目 —
todoist-cli move ID --project ID - 以后再说/待定 —
todoist-cli update ID --labels someday - 删除 — 不值得做。
todoist-cli delete ID
将处理结果作为一批决策呈现:“收件箱中有 4 项。以下是我的分类……”
根据工作创建任务
当其他活动(转录的照片、日历事件、项目规划)中出现可执行事项时:
- 提取具体的下一步行动(以动词开头,表述明确)
- 先判断受众:人、决策,还是机器
- 只有面向人或决策的工作才放入面向 Joel 的 Todoist 视图
- 分配到合适的项目
- 添加包含上下文的描述(ADR 引用、链接、验收标准)
- 报告已创建的内容
每周回顾
当 Joel 要求进行每周回顾,或每周五的周期性任务触发时:
todoist-cli review
然后:
- 将收件箱处理至清空
- 标记僵尸项目(2 周或更久没有活动)
- 标记逾期任务 — 重新安排或删除
- 标记未安排时间的任务(无截止日期)— 是否仍然相关?
- 询问:“下周哪一件事能让你觉得最成功?”
保持整洁
- 今天到期的项目最多 7 项。 超过这个数量 = 承诺过多。把超出的任务推迟。
- 处理后收件箱应为空。 不是“剩得不多” — 而是清空。
- 完成或删除。 除非标记为
someday,否则任何任务都不应超过 2 周没有进展。 - 项目名称应体现结果。 用“交付任务集成”,而不是“任务相关事项”。
- 描述很重要。 每项任务都要提供足够的上下文,让你可以在不了解前情的情况下直接接手。
“Agent 能直接完成吗?”
创建任务前,先问:joelclaw 现在能完成这件事吗? 如果可以,就直接完成。不要只为显得有条理,就在 Joel 的任务列表里创建机器要做的杂事。任务是给人做的;Agent 负责执行。
- Agent 负责完成:代码修改、研究、文件操作、API 调用、日历更新
- Agent 起草,Joel 审阅:以 Joel 的口吻写作、设计决策
- 仅 Joel 负责:实际行动(购物、锻炼)、打电话、编辑品味
- 机器的记录维护不应出现在面向 Joel 的界面中:记忆回顾、基础设施看护、重试清理、Agent 待办事项
后备方案:Vault 清单
如果 Todoist 身份验证失败,请使用 Vault Markdown 清单:
- [ ] Task description
- [x] Completed task
Google Tasks 可通过 gog 作为备用适配器使用。
SOP:ADR → 任务
对于已获授权的 ADR 到任务梳理,只将具体的人工后续行动放入 Todoist。提议中的 ADR 不代表获准实施。Agent 执行、项目工作和验证凭据应保留在对应的 issue、Brain 或运行时中。
完成 ADR 梳理或产生行动项的会话后:
- 检查 ADR 的验证清单中是否有未勾选的项目
- 仅为具体且由人负责的行动创建任务;跳过纯机器检查,并对现有工作去重。
- 根据影响力设置优先级:是否会解除其他 ADR 的阻塞?设为 p2。独立任务?设为 p3。研究任务?设为 p3。
- 标记实际负责的人;自主工作留在其执行系统中。如果是系统工作,则添加
joelclaw。 - 描述中包含 ADR 引用和足够的上下文,以便之后能快速接手
- 交叉引用:如果某个任务完成了 ADR 中的最后一项,则将 ADR 更新为
implemented
**工作循环:**ADR 梳理 → 创建任务 → Agent/Joel 处理任务 → 完成任务 → 更新 ADR 状态 → 下次梳理时发现无待办事项。
不要为以下事项创建任务:
- Agent 现在就能完成的事项(少于 5 分钟)——直接去做
- 已延期的 ADR——取消延期后再创建任务
- 模糊的研究事项——先设定时间限制(“花 30 分钟研究 X”,而不是“研究 X”)
- Todoist 中任何纯机器记账事项——改为保存在 Brain 凭据、issue 或运行时状态中
反模式
- 不要创建模糊的任务——“看看 X”不是后续行动。“花 15 分钟阅读 X 文档”才是。
- 不要让收件箱不断累积——如果超过 10 项,添加更多事项之前先分拣。
- 不要过度整理——标签和分区会增加阻力。在复杂性确实需要结构之前,保持扁平。
- 不要重复创建——创建任务前先检查现有任务。使用
todoist-cli list --filter搜索。 - 不要在任务标题中加入 Agent 上下文——标题应便于人类阅读。将 ADR 引用和技术细节放在描述中。
- 不要让机器杂项污染面向 Joel 的视图——如果 Joel 不需要看到,就不该放在那里。
致谢
- David Allen — 《Getting Things Done》
- Ryan Singer — 《Shape Up》(Basecamp)
- BJ Fogg — 《Tiny Habits》
- Todoist / Doist — 官方 API 和 SDK