Files
my-skills/todo/SKILL.md
T
wonder 14e93d2001 refactor: 完善 todo 和 wiki skill 的自包含操作指南
- todo: 明确 mysql_query MCP 工具调用方式,补充触发词和字段说明
- todo/setup: 补充 QwenPaw 和 Claude Code 两种配置方式,修正环境变量名
- wiki: 用 glob_search 替换 <skill-path> 占位符,流程更清晰
2026-09-01 20:58:53 +08:00

5.2 KiB
Raw Blame History

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

任务待办管理

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

工具说明

本 skill 依赖 MySQL MCP 工具 mysql_query。所有数据库操作都通过该工具执行。

调用方式:使用 execute_shell_command 执行 MySQL MCP 查询,或直接使用 MCP 工具(如可用)。

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

表结构

CREATE TABLE IF NOT EXISTS todos (
    id               BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    title            VARCHAR(500) NOT NULL,
    description      TEXT,
    status           ENUM('pending', 'in_progress', 'done', 'archived') NOT NULL DEFAULT 'pending',
    priority         ENUM('low', 'medium', 'high', 'urgent') NOT NULL DEFAULT 'medium',
    created_at       DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    updated_at       DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    last_accessed_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    access_count     INT UNSIGNED NOT NULL DEFAULT 1
);

操作指南

添加任务

触发词:添加任务 / 新建待办 / 提醒我做 / 记一下

INSERT INTO todos (title, description, priority) VALUES ('<标题>', '<描述>', '<优先级>');
  • 优先级默认 medium
  • 用户说"紧急/urgent/马上/ASAP" → urgent
  • 用户说"重要" → high
  • 用户说"不急/有空/low" → low
  • 添加后执行 LRU 检查(见下方淘汰策略)

查看待办

触发词:我的待办 / 有什么任务 / 今天要做什么 / 列出任务

SELECT id, title, status, priority, DATE_FORMAT(updated_at, '%m-%d') AS updated
FROM todos
WHERE status IN ('pending', 'in_progress')
ORDER BY
  FIELD(priority, 'urgent', 'high', 'medium', 'low'),
  last_accessed_at DESC;

查看后刷新访问时间:

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

查看已完成

触发词:已完成的任务 / 做完了哪些

SELECT id, title, priority, DATE_FORMAT(updated_at, '%m-%d %H:%i') AS completed
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>;

按标题匹配:

UPDATE todos SET status = 'done', last_accessed_at = NOW(), access_count = access_count + 1
WHERE title LIKE '%<关键词>%' AND status != 'done';
  • 匹配多条时列出匹配项让用户确认
  • 用 SELECT 先查再改,避免误操作

标记进行中

触发词:开始做 XXX / 进行中

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

更新任务

触发词:修改 XXX 的描述/优先级/标题

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

可更新字段:title、description、priority、status

删除任务

触发词:删除任务 / 去掉这个待办

软删除(推荐):

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

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

DELETE FROM todos WHERE id = <id>;
  • 硬删除前必须列出将被删除的事项并确认
  • 默认用软删除

搜索任务

触发词:找一下关于 XXX 的任务 / 有没有 XXX

SELECT id, title, status, priority
FROM todos
WHERE title LIKE '%<关键词>%' OR description LIKE '%<关键词>%'
ORDER BY FIELD(status, 'in_progress', 'pending', 'done', 'archived'), priority;

LRU 淘汰策略

每次 INSERT 后检查总数:

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

如果超过 100 条,执行归档:

-- 1. 归档最久未访问的已完成事项(最旧 10 条)
UPDATE todos SET status = 'archived'
WHERE status = 'done'
ORDER BY last_accessed_at ASC LIMIT 10;

-- 2. 仍超标则归档最久未访问的待办事项
UPDATE todos SET status = 'archived'
WHERE status = 'pending'
ORDER BY last_accessed_at ASC LIMIT 10;

保护规则:不归档 in_progress 状态的事项。

交互原则

  • 模糊匹配时确认:关键词匹配多条任务,列出选项让用户选
  • 操作前预览:删除/归档前,先 SELECT 显示受影响的事项
  • 自然语言理解:用户说"帮我记一下明天要买菜" → 添加任务"买菜"
  • 状态转换合理:不允许 archived → in_progress 等不合理跳转

输出格式

查询结果用表格展示:

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

操作结果用简洁确认:

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