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

198 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: todo
description: |
任务待办管理 skill。通过自然语言操作 MySQL 数据库中的待办事项。
当用户提到待办、任务管理、todo list、添加任务、查看任务、标记完成、
清理任务、归档旧任务时,使用此 skill。
支持增删改查和基于 LRU 策略的自动归档。
---
# 任务待办管理
通过自然语言管理 MySQL 数据库中的待办事项,支持 LRU 自动淘汰。
## 工具说明
本 skill 依赖 **MySQL MCP 工具** `mysql_query`。所有数据库操作都通过该工具执行。
调用方式:使用 `execute_shell_command` 执行 MySQL MCP 查询,或直接使用 MCP 工具(如可用)。
如果 MCP 工具不可用,引导用户参考 `references/setup.md` 完成配置。
## 表结构
```sql
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
);
```
## 操作指南
### 添加任务
触发词:添加任务 / 新建待办 / 提醒我做 / 记一下
```sql
INSERT INTO todos (title, description, priority) VALUES ('<标题>', '<描述>', '<优先级>');
```
- 优先级默认 `medium`
- 用户说"紧急/urgent/马上/ASAP" → `urgent`
- 用户说"重要" → `high`
- 用户说"不急/有空/low" → `low`
- 添加后执行 LRU 检查(见下方淘汰策略)
### 查看待办
触发词:我的待办 / 有什么任务 / 今天要做什么 / 列出任务
```sql
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;
```
查看后刷新访问时间:
```sql
UPDATE todos SET last_accessed_at = NOW(), access_count = access_count + 1
WHERE id IN (<id 列表>);
```
### 查看已完成
触发词:已完成的任务 / 做完了哪些
```sql
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 / 标记为完成 / 做完了
```sql
UPDATE todos SET status = 'done', last_accessed_at = NOW(), access_count = access_count + 1
WHERE id = <id>;
```
按标题匹配:
```sql
UPDATE todos SET status = 'done', last_accessed_at = NOW(), access_count = access_count + 1
WHERE title LIKE '%<关键词>%' AND status != 'done';
```
- 匹配多条时列出匹配项让用户确认
- 用 `SELECT` 先查再改,避免误操作
### 标记进行中
触发词:开始做 XXX / 进行中
```sql
UPDATE todos SET status = 'in_progress', last_accessed_at = NOW(), access_count = access_count + 1
WHERE id = <id>;
```
### 更新任务
触发词:修改 XXX 的描述/优先级/标题
```sql
UPDATE todos SET <字段> = '<新值>', last_accessed_at = NOW(), access_count = access_count + 1
WHERE id = <id>;
```
可更新字段:`title`、`description`、`priority`、`status`
### 删除任务
触发词:删除任务 / 去掉这个待办
**软删除(推荐)**:
```sql
UPDATE todos SET status = 'archived' WHERE id = <id>;
```
**硬删除**(用户明确要求时):
```sql
DELETE FROM todos WHERE id = <id>;
```
- 硬删除前必须列出将被删除的事项并确认
- 默认用软删除
### 搜索任务
触发词:找一下关于 XXX 的任务 / 有没有 XXX
```sql
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 后检查总数:
```sql
SELECT COUNT(*) AS total FROM todos WHERE status != 'archived';
```
如果超过 100 条,执行归档:
```sql
-- 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 条旧任务