Todo Management
What this skill controls
A per-workspace SQLite database:
- - Default: INLINECODE0
- Override: INLINECODE1
All changes MUST happen through the CLI:
INLINECODE2
Statuses
pending (default),
in_progress,
done, INLINECODE6
Default list hides done and skipped unless --all or --status=....
Non-negotiable rules
1) No file writing (ever)
- - Do NOT create or edit any files (e.g.,
todos.md, notes, markdown, exports). - Do NOT output “filename blocks” like
todos.md (...). - The only persistent state is in
todo.db, mutated by todo.sh.
2) Never print the todo list unless explicitly asked
- - If the user does NOT ask to “show/list/print my todos”, do NOT paste the list.
- Default behavior after mutations: one short confirmation line only.
3) Keep replies extremely short
- - After success: respond with ONE line, max ~5 words (translate to user’s language yourself).
- Do not include bullets, tables, code blocks, or tool output unless the user explicitly asked for the list/details.
Allowed confirmations (English examples; translate as needed):
- - “Done.”
- “Added.”
- “Updated.”
- “Removed.”
- “Moved.”
- “Renamed.”
- “Cleared.”
- “Added to the list.”
4) Ambiguity handling (the ONLY exception to rule #2)
If the user requests a destructive action but does not specify an ID (e.g., “remove the milk task”):
1) run
entry list (optionally with
--group=...)
2) show the results (minimal table)
3) ask which ID to act on
This is the only case where you may show the list without the user explicitly requesting it.
5) Group deletion safety
- -
group remove "X" moves entries to Inbox (default). - Only delete entries if the user explicitly chooses that:
- ask: “Move entries to Inbox (default) or delete entries too?”
- only then use
--delete-entries.
Commands (use exactly these)
Entries
-
bash {baseDir}/scripts/todo.sh entry create "Buy milk"
-
bash {baseDir}/scripts/todo.sh entry create "Ship feature X" --group="Work" --status=in_progress
- - List (ONLY when user asks, or for ambiguity resolution):
-
bash {baseDir}/scripts/todo.sh entry list
-
bash {baseDir}/scripts/todo.sh entry list --group="Work"
-
bash {baseDir}/scripts/todo.sh entry list --all
-
bash {baseDir}/scripts/todo.sh entry list --status=done
-
bash {baseDir}/scripts/todo.sh entry show 12
-
bash {baseDir}/scripts/todo.sh entry edit 12 "Buy oat milk instead"
-
bash {baseDir}/scripts/todo.sh entry move 12 --group="Inbox"
-
bash {baseDir}/scripts/todo.sh entry status 12 --status=done
-
bash {baseDir}/scripts/todo.sh entry status 12 --status=skipped
- INLINECODE30
Groups
-
bash {baseDir}/scripts/todo.sh group create "Work"
-
bash {baseDir}/scripts/todo.sh group list
-
bash {baseDir}/scripts/todo.sh group rename "Work" "Work (Project A)"
-
bash {baseDir}/scripts/todo.sh group edit "Work" "Work (Project A)"
- Default (move entries to Inbox):
-
bash {baseDir}/scripts/todo.sh group remove "Work"
- Delete entries too (ONLY if user explicitly wants it):
-
bash {baseDir}/scripts/todo.sh group remove "Work" --delete-entries
“Clear the list” behavior (no list printing)
To clear the todo list:
1) run
entry list --all to get IDs (do NOT paste the results)
2) remove each ID with
entry remove ID
3) reply with ONE line: “Cleared.”
If the user then asks to see the list, run entry list and show it.
Dialogue example (expected behavior)
User: "I need to buy milk, add it to my todo list"
Agent: "Done."
User: "Oh, and I also need to clean the room"
Agent: "Added to the list."
User: "Show my todos"
Agent: (prints the list)
User: "Remove the milk one"
Agent: (lists matching tasks + asks for ID, then removes when ID is provided)
待办事项管理
此技能控制的内容
每个工作区一个SQLite数据库:
- - 默认:./todo.db
- 覆盖:TODO_DB=/path/to/todo.db
所有更改必须通过CLI进行:
bash {baseDir}/scripts/todo.sh ...
状态
pending(默认)、in_progress、done、skipped
默认列表隐藏done和skipped,除非使用--all或--status=...。
不可协商的规则
1) 禁止写入文件(任何时候)
- - 不要创建或编辑任何文件(例如todos.md、笔记、markdown、导出文件)。
- 不要输出类似todos.md (...)的“文件名块”。
- 唯一持久状态在todo.db中,通过todo.sh修改。
2) 除非明确要求,否则永远不要打印待办列表
- - 如果用户没有要求“显示/列出/打印我的待办事项”,不要粘贴列表。
- 修改后的默认行为:仅一行简短确认信息。
3) 回复保持极短
- - 成功后:用一行回复,最多约5个词(自行翻译为用户语言)。
- 除非用户明确要求列表/详情,否则不要包含项目符号、表格、代码块或工具输出。
允许的确认信息(英文示例;根据需要翻译):
- - “完成。”
- “已添加。”
- “已更新。”
- “已删除。”
- “已移动。”
- “已重命名。”
- “已清除。”
- “已添加到列表。”
4) 歧义处理(规则#2的唯一例外)
如果用户请求破坏性操作但未指定ID(例如“删除牛奶任务”):
1) 运行entry list(可选加--group=...)
2) 显示结果(最小化表格)
3) 询问要操作的ID
这是唯一可以在用户未明确请求时显示列表的情况。
5) 分组删除安全
- - group remove X将条目移至收件箱(默认)。
- 仅当用户明确选择时才删除条目:
- 询问:“将条目移至收件箱(默认)还是也删除条目?”
- 然后才使用--delete-entries。
命令(请精确使用)
条目
- bash {baseDir}/scripts/todo.sh entry create 买牛奶
- bash {baseDir}/scripts/todo.sh entry create 交付功能X --group=工作 --status=in_progress
- bash {baseDir}/scripts/todo.sh entry list
- bash {baseDir}/scripts/todo.sh entry list --group=工作
- bash {baseDir}/scripts/todo.sh entry list --all
- bash {baseDir}/scripts/todo.sh entry list --status=done
- bash {baseDir}/scripts/todo.sh entry show 12
- bash {baseDir}/scripts/todo.sh entry edit 12 改买燕麦奶
- bash {baseDir}/scripts/todo.sh entry move 12 --group=收件箱
- bash {baseDir}/scripts/todo.sh entry status 12 --status=done
- bash {baseDir}/scripts/todo.sh entry status 12 --status=skipped
- bash {baseDir}/scripts/todo.sh entry remove 12
分组
- bash {baseDir}/scripts/todo.sh group create 工作
- bash {baseDir}/scripts/todo.sh group list
- bash {baseDir}/scripts/todo.sh group rename 工作 工作(项目A)
- bash {baseDir}/scripts/todo.sh group edit 工作 工作(项目A)
- 默认(将条目移至收件箱):
- bash {baseDir}/scripts/todo.sh group remove 工作
- 同时删除条目(仅当用户明确要求时):
- bash {baseDir}/scripts/todo.sh group remove 工作 --delete-entries
“清空列表”行为(不打印列表)
清空待办列表:
1) 运行entry list --all获取ID(不要粘贴结果)
2) 用entry remove ID删除每个ID
3) 用一行回复:“已清除。”
如果用户随后要求查看列表,运行entry list并显示。
对话示例(预期行为)
用户:“我需要买牛奶,添加到我的待办列表”
助手:“完成。”
用户:“哦,我还需要打扫房间”
助手:“已添加到列表。”
用户:“显示我的待办事项”
助手:(打印列表)
用户:“删除牛奶那个”
助手:(列出匹配任务 + 询问ID,提供ID后删除)