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

177 lines
4.6 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 工具。使用前需确认:
1. MySQL MCP 已配置(参考 `references/setup.md`)
2. todos 表已创建(参考 `references/setup.md` 中的建表 SQL)
如果 MCP 工具不可用,引导用户参考 `references/setup.md` 完成配置。
## 自然语言操作映射
### 添加任务
用户说:"添加任务:XXX" / "新建一个待办:XXX" / "提醒我做 XXX"
```sql
INSERT INTO todos (title, description, priority) VALUES ('<标题>', '<描述>', '<优先级>');
```
- 优先级默认 `medium`,如果用户提到"紧急/urgent"则为 `urgent`,"重要"为 `high`
- 添加后自动执行 LRU 检查(见淘汰策略)
### 查看待办
用户说:"我的待办" / "有什么任务" / "看看今天的任务"
```sql
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;
```
查看后刷新访问时间:
```sql
UPDATE todos SET last_accessed_at = NOW(), access_count = access_count + 1
WHERE id IN (<查看到的 id 列表>);
```
### 查看已完成
用户说:"已完成的任务" / "看看做完了哪些"
```sql
SELECT id, title, priority, updated_at
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> OR title LIKE '%<关键词>%';
```
如果匹配多条,列出匹配项让用户确认。
### 标记进行中
用户说:"开始做 XXX" / "进行中"
```sql
UPDATE todos SET status = 'in_progress', last_accessed_at = NOW(), access_count = access_count + 1
WHERE id = <id>;
```
### 更新任务
用户说:"修改 XXX 的描述为 YYY" / "把 XXX 的优先级改为 high"
```sql
UPDATE todos SET <字段> = '<新值>', last_accessed_at = NOW(), access_count = access_count + 1
WHERE id = <id>;
```
### 删除任务
用户说:"删除任务 XXX" / "去掉这个待办"
**软删除(推荐)**:
```sql
UPDATE todos SET status = 'archived' WHERE id = <id>;
```
**硬删除**(用户明确要求彻底删除时):
```sql
DELETE FROM todos WHERE id = <id>;
```
- 硬删除前必须确认,列出将被删除的事项
- 默认使用软删除(归档),保护数据
### 搜索任务
用户说:"找一下关于 XXX 的任务"
```sql
SELECT id, title, description, status, priority
FROM todos
WHERE title LIKE '%<关键词>%' OR description LIKE '%<关键词>%'
ORDER BY status, priority;
```
## LRU 淘汰策略
### 自动触发
每次 INSERT 后检查:
```sql
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 条旧任务