Auto-Updater Skill
一个面向 Other 场景的 Agent 技能。原始说明:Automatically update Clawdbot and all installed skills once daily. Runs via cron, checks for updates, applies them, and messages the user with a summary of what changed.
name: todo-list-promax
version: "2.1.0"
description: >
个人待办事项永久存储、智能分类与定时提醒系统。
自动从聊天消息中捕获待办(文字/图片/附件),解析时间与优先级,每日晚上9点推送未完成提醒。
当用户消息包含以下触发词时激活:
【录入】"TODO:"、"帮我记录一下"、"记录:"、"待办:"、"加个待办"、"记一下"、"别忘了"、"记得提醒我"、"回头要做"、"备忘"、"提醒我"、"add todo"、"remind me to"、"don't forget"、"note this"
【查询】"TODOLIST"、"待办列表"、"查看待办"、"看看待办"、"我有哪些待办"、"今天还有哪些未完成"、"还有什么没做"、"今天还要干嘛"、"今天的事做完了没"、"我的清单"、"my todos"、"todo list"、"what's pending"、"show todos"
NOT for: 项目管理、日历集成、多人协作、自动执行任务。
检测用户使用的语言,全程使用同一语言输出。 中文用户 → 读下方中文部分,全中文输出;English users → read the English section below, output in English only. 技术术语(JSON、ID 等)保留原文即可。
为用户提供一个永久不丢失的待办事项管理系统。自动从聊天消息中捕获待办,智能解析时间和优先级,每日主动提醒未完成任务。
触发词: TODO:、帮我记录一下、记录:、待办:、加个待办、记一下、别忘了、记得提醒我、回头要做、备忘、提醒我、add todo、remind me to、don't forget、note this
模糊输入判定规则: 消息必须包含动宾结构或明确动作词才能触发录入。判断标准:
操作优先级:如果同一条消息同时匹配录入和操作指令(如"删除这个 TODO: xxx"),优先执行操作指令(完成 > 删除 > 修改 > 录入),不创建重复待办。
矛盾请求处理:当用户消息包含矛盾指令时(如"完成了 #1 删除 #1"或"TODO: 删除所有待办"):
流程:
${workspace}/todo-list/attachments/${workspace}/todo-list/todos.json时间解析:
优先级解析:
| 级别 | 标记方式 | 自然语言线索 |
|------|---------|-------------|
| P0 | [P0]、⚠️ | "很紧急"、"立刻"、"马上"、"必须今天" |
| P1 | [P1] 或不标 | "重要"、"要做"(默认) |
| P2 | [P2]、⚡ | "急但不重要"、"顺手做" |
| P3 | [P3]、📌 | "有空再说"、"随手记一下"、"不急" |
无法判断时默认 P1。
对接人(contact)提取规则:
从用户消息中识别对接人/负责人信息,提取到 contact 字段:
| 模式 | 示例 | 提取结果 |
|------|------|---------|
| "XX:" 前缀 | "覃波:输入框跟后台配置联动" | contact: "覃波" |
| "@XXX" | "@薛柯 翻译完了发过来" | contact: "薛柯" |
| "对接人:XX" | "适配 autoclaw,对接人郭雨竹" | contact: "郭雨竹" |
| "找XX" / "跟XX对接" | "找郭雨竹对接多语言" | contact: "郭雨竹" |
| "XX给XX后" | "薛柯给翻译文本后加到项目" | contact: "薛柯" |
提取原则:
contact 为空,不追问👤 对接:XXX;无 contact → 不显示备注(notes)提取规则:
notes 字段notes 为可选字段,无额外信息时为空📝 备注:XXX;无 notes → 不显示💬 原文: source_message,保留完整原始信息标签(tags)提取规则:
默认标签集:工作、学习、购物、生活、健康、其他
提取方式:
#标签名 语法,如 TODO: 完成报告 #工作 → tags: ["工作"]| 关键词示例 | 映射标签 |
|-----------|---------|
| 周报、报告、会议、邮件、项目、汇报、评审、上线 | 工作 |
| 论文、看书、课程、考试、练习、学习、培训 | 学习 |
| 买、购物、下单、充值、充电线、耳机 | 购物 |
| 打扫、做饭、取快递、缴费、搬家、洗衣服 | 生活 |
| 体检、运动、吃药、跑步、挂号、看医生 | 健康 |
[]TODO: 买体检套餐 #健康 #购物 → tags: ["健康", "购物"]#标签名 指定不在默认集中的标签,如 TODO: 修复 bug #前端 → tags: ["前端"]附件处理:
${workspace}/todo-list/attachments/{todoId}_{原文件名}attachments: [{path, type}],type 枚举:image(图片)、file(其他文件)附件清理机制:
todos.json 时(录入、完成、删除、修改等),检查 attachments/ 目录中是否存在已删除 todo 的附件${workspace}/todo-list/cleanup.log触发词: TODOLIST、待办列表、查看待办、看看待办、我有哪些待办、今天还有哪些未完成、还有什么没做、今天还要干嘛、今天的事做完了没、我的清单、my todos、todo list、what's pending、show todos
查询模式:
due_time 匹配该日期的未完成项due_time 在范围内tags 包含对应标签输出格式:
📋 未完成待办(共 X 条)
🔴 P0 重要紧急
#1 今天下班前提交周报 📅 今天 👤 对接:张三 🏷 工作
📝 备注:需要附上数据报表
💬 原文: TODO:今天下班前提交周报,对接人张三,需要附上数据报表
🟡 P1 重要不紧急
#3 看完那篇论文 📅 下周一 🏷 学习
💬 原文: TODO:看完那篇论文 #学习
#5 整理桌面 (无截止时间) 🏷 生活
💬 原文: 待办:整理桌面
🟠 P2 急但不重要
#8 回复那个邮件 📅 明天 👤 对接:李四 🏷 工作
💬 原文: reminder: 回复李四那封邮件明天前
🟢 P3 不急
#7 买个充电线 📅 有空再说 🏷 购物
💬 原文: 备忘:买个充电线
格式说明:
📝 备注:内容💬 原文: source_message(保留原始关键信息,永不省略)完成: "完成了 #1" 或 "TODO 完成 1" 或 "done #1" → 标记 status: done,记录 completed_at
删除: "删除 #1" 或 "TODO 删除 1" 或 "delete #1" → 回复待删除的 todo 内容摘要(ID + 内容 + 优先级),等用户确认后再移除。用户说"确认"或"删"时才执行
修改: "#1 改成明天" 或 "#1 change to tomorrow" → 更新对应字段,回复确认
可修改字段: content(内容)、due_time(截止时间)、priority(优先级)、contact(对接人)、notes(备注)、tags(标签)
修改语法:
#N due_time:明天、#N priority:P0、#N content:新的任务描述、#N contact:张三、#N notes:补充信息、#N tags:工作,学习#1 截止:明天、#1 优先级:P0、#1 内容:新的任务描述、#1 对接人:张三、#1 备注:补充信息撤销机制:
todos.json.bak 中的上一版本todos.json.bak,之前的 undo 状态不可再恢复使用 OpenClaw cron 创建每日提醒任务,最小步骤如下:
0 21 * * *(每天 21:00) a. 读取 ${workspace}/todo-list/todos.json
b. 筛选条件:status != "done" 且 due_time != null
c. 按截止时间升序排序(无截止排最后),同截止时间再按优先级排序(P0 > P1 > P2 > P3)
d. 如有匹配项,生成紧凑列表消息并推送到用户聊天
e. 如无匹配项,不推送
f. 更新 last_reminder_at 为当前时间
回复"完成 #N"标记完成 · 回复"TODOLIST"查看全部 · 回复"#N due_time:X"修改 · 回复"撤销"恢复最近操作openclaw cron add --schedule "0 21 * * *" --task "Read todos.json, filter pending items with due_time, push reminder if any"last_reminder_at,若超过 24 小时则补推)存储文件:${workspace}/todo-list/todos.json(workspace 为当前 OpenClaw 工作目录)
{
"version": 2,
"todos": [
{
"id": 1,
"content": "提交周报",
"status": "pending",
"priority": "P0",
"due_time": "2026-05-16",
"contact": "张三",
"notes": "需要附上数据报表",
"tags": ["工作"],
"created_at": "2026-05-16T09:30:00+08:00",
"completed_at": null,
"deleted_at": null,
"attachments": [],
"source_message": "TODO:今天下班前提交周报,对接人张三,需要附上数据报表"
}
],
"last_reminder_at": "2026-05-16T21:00:00+08:00"
}
字段说明:
id: 自增整数,不重复使用content: 任务内容(纯文本摘要)status: pending | donepriority: P0 | P1 | P2 | P3due_time: 截止日期 YYYY-MM-DD,可为 nullcontact: 对接人/负责人姓名(可选,无则为空字符串 "")notes: 备注信息,含补充说明、参考链接等(可选,无则为空字符串 "")tags: 标签数组,用于分类和筛选(如 ["工作", "bug"]),可为空数组created_at: 创建时间 ISO 8601completed_at: 完成时间 ISO 8601,完成时填入deleted_at: 删除时间 ISO 8601,删除时填入(用于附件 7 天清理判断)attachments: [{path, type}] 附件列表source_message: 原始消息内容(完整保留,永不修改)last_reminder_at: 上次提醒时间 ISO 8601(用于降级补推)写入 todos.json 时采用原子写模式:先写入临时文件 todos.json.tmp,写入成功后 mv(rename)替换原文件。避免两个 session 同时写导致数据丢失。
${workspace}/todo-list/(相对于当前工作目录)${workspace}/todo-list/attachments/todos.json 或目录不存在时自动创建todos.json.baktodos.json.bak 恢复deleted_at 时间戳,attachments 目录中的文件保留 7 天后自动清理(避免误删后无法恢复)version 字段,若不匹配当前版本,执行迁移(如新增字段填默认值)并写回This skill is written in Chinese. For full details, please read the Chinese section above.
You can ask AI to translate the Chinese section if needed.
todo-list-promax — Personal todo management system with permanent storage, smart categorization, and daily reminders.
| Feature | Details |
|---------|---------|
| Capture | Triggers: TODO:, add todo, remind me to, etc. Fuzzy input → ask, don't silently capture |
| Query | Triggers: TODOLIST, my todos, etc. Filter by date/range/priority/tags. Shows 👤contact, 📝notes, 💬source_message for every item |
| Operations | Complete, delete (with confirmation), modify, undo (single-step only) |
| Tags | Auto-extract via keyword mapping (工作/学习/购物/生活/健康/其他) or manual #tag syntax. Default: empty array |
| Daily reminder | Cron at 21:00: read todos.json → filter pending with due_time → push if any. Fallback: push on next interaction if >24h since last reminder |
| Attachments | Saved to attachments/, auto-cleaned 7 days after todo deletion |
#1 due_time:明天, #1 priority:P0, #1 content:新内容, #1 contact:张三, #1 notes:补充说明, #1 tags:工作,学习#1 截止:明天, #1 优先级:P0, #1 内容:新内容, #1 对接人:张三{
"id": 1, "content": "...", "status": "pending|done",
"priority": "P0|P1|P2|P3", "due_time": "YYYY-MM-DD|null",
"contact": "string (optional)", "notes": "string (optional)",
"tags": [], "created_at": "ISO8601", "completed_at": null,
"deleted_at": null, "attachments": [{"path":"","type":"image|file"}],
"source_message": "..."
}
0 21 * * *todos.json → filter status != "done" AND due_time != null → sort by due_time ascending, then by priority → push if any → update last_reminder_at.tmp then mv)todos.json.bak before writes.bak on parse failure