Files
my-skills/todo/SKILL.md
T
wonder be7720e732 feat: 初始化 skills 仓库,添加 wiki 和 todo 两个 skill
- 添加 wiki skill:文档站管理,支持向 MkDocs 文档站添加/更新技术文档
  - SSH 连通性检查脚本
  - 文章模板参考(标准格式:摘要→核心概念→详解→代码→陷阱→练习题)
  - mkdocs.yml 导航结构参考
- 添加 todo skill:任务待办管理,通过自然语言操作 MySQL 待办事项
  - LRU 淘汰策略(基于 last_accessed_at)
  - MySQL MCP 配置指南及建表 SQL
  - 自然语言到 SQL 的映射规则
- 添加 README.md 说明文档
2026-08-31 10:30:53 +08:00

4.6 KiB
Raw Blame History

name, description
name description
todo 任务待办管理 skill。通过自然语言操作 MySQL 数据库中的待办事项。 当用户提到待办、任务管理、todo list、添加任务、查看任务、标记完成、 清理任务、归档旧任务时,使用此 skill。 支持增删改查和基于 LRU 策略的自动归档。

任务待办管理

通过自然语言管理 MySQL 数据库中的待办事项,支持 LRU 自动淘汰。

前置条件

此 skill 依赖 MySQL MCP 工具。使用前需确认:

  1. MySQL MCP 已配置(参考 references/setup.md)
  2. todos 表已创建(参考 references/setup.md 中的建表 SQL)

如果 MCP 工具不可用,引导用户参考 references/setup.md 完成配置。

自然语言操作映射

添加任务

用户说:"添加任务:XXX" / "新建一个待办:XXX" / "提醒我做 XXX"

INSERT INTO todos (title, description, priority) VALUES ('<标题>', '<描述>', '<优先级>');
  • 优先级默认 medium,如果用户提到"紧急/urgent"则为 urgent,"重要"为 high
  • 添加后自动执行 LRU 检查(见淘汰策略)

查看待办

用户说:"我的待办" / "有什么任务" / "看看今天的任务"

SELECT id, title, status, priority, last_accessed_at
FROM todos
WHERE status IN ('pending', 'in_progress')
ORDER BY
  CASE priority
    WHEN 'urgent' THEN 0
    WHEN 'high' THEN 1
    WHEN 'medium' THEN 2
    WHEN 'low' THEN 3
  END,
  last_accessed_at DESC;

查看后刷新访问时间:

UPDATE todos SET last_accessed_at = NOW(), access_count = access_count + 1
WHERE id IN (<查看到的 id 列表>);

查看已完成

用户说:"已完成的任务" / "看看做完了哪些"

SELECT id, title, priority, updated_at
FROM todos WHERE status = 'done'
ORDER BY updated_at DESC;

标记完成

用户说:"完成 XXX" / "把这个标记为完成" / "做完了"

UPDATE todos SET status = 'done', last_accessed_at = NOW(), access_count = access_count + 1
WHERE id = <id> OR title LIKE '%<关键词>%';

如果匹配多条,列出匹配项让用户确认。

标记进行中

用户说:"开始做 XXX" / "进行中"

UPDATE todos SET status = 'in_progress', last_accessed_at = NOW(), access_count = access_count + 1
WHERE id = <id>;

更新任务

用户说:"修改 XXX 的描述为 YYY" / "把 XXX 的优先级改为 high"

UPDATE todos SET <字段> = '<新值>', last_accessed_at = NOW(), access_count = access_count + 1
WHERE id = <id>;

删除任务

用户说:"删除任务 XXX" / "去掉这个待办"

软删除(推荐):

UPDATE todos SET status = 'archived' WHERE id = <id>;

硬删除(用户明确要求彻底删除时):

DELETE FROM todos WHERE id = <id>;
  • 硬删除前必须确认,列出将被删除的事项
  • 默认使用软删除(归档),保护数据

搜索任务

用户说:"找一下关于 XXX 的任务"

SELECT id, title, description, status, priority
FROM todos
WHERE title LIKE '%<关键词>%' OR description LIKE '%<关键词>%'
ORDER BY status, priority;

LRU 淘汰策略

自动触发

每次 INSERT 后检查:

SELECT COUNT(*) FROM todos WHERE status != 'archived';

如果总数超过 100,执行归档。

归档逻辑

  1. 优先归档已完成:归档最久未访问的 done 事项(取最旧的 10 条)
  2. 其次归档待办:如果仍超标,归档最久未访问的 pending 事项
  3. 保护进行中:不归档 in_progress 状态的事项
  4. 告知用户:归档时列出被归档的事项标题

手动触发

用户说:"清理旧任务" / "归档一些任务" / "整理一下待办"

执行同样的归档逻辑,但需要先告知用户当前待办数量,并询问是否确认清理。

交互原则

  • 模糊匹配时确认:如果用户说的关键词匹配多条任务,列出选项让用户确认
  • 操作前预览:删除/归档操作前,显示受影响的事项列表
  • 优先级合理推断:用户说"紧急""马上""ASAP" → urgent;"重要" → high;默认 → medium
  • 自然语言理解:用户可能说"帮我记一下明天要买菜",理解为添加任务"买菜"
  • 状态转换合理:不要让用户手动做不合理的状态跳转(如 archived → in_progress)

输出格式

查询结果以表格形式展示:

| ID | 标题 | 状态 | 优先级 | 更新时间 |
|----|------|------|--------|----------|
| 1  | xxx  | 待办 | 高     | 08-31    |

操作结果用简洁的确认语句:

  • ✓ 已添加任务:XXX
  • ✓ 已完成任务:XXX
  • ✓ 已归档 5 条旧任务