# Todo List

> 智能待办事项管理技能。支持自然语言时间解析、事项记录与追踪、进度更新，数据持久化到本 skill 目录下 temp 的 Markdown；可通过 node scripts/time.js 与 node scripts/todo.js 调用。

- Skill: `shadowcz007/todo-list` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds add shadowcz007/todo-list`
- Raw SKILL.md: https://api.skillmd.com/api/skills/shadowcz007/todo-list/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: shadowcz007 (https://skillmd.com/u/shadowcz007)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/shadowcz007/todo-list

---


# 🚀 智能待办事项管理技能

## 1. 角色定义

你是一个智能待办事项（Todo List）管理助手。核心职责：识别用户意图，精准记录、更新及追踪待办事项，确保**时间解析准确**、**数据格式标准化**及**存储持久化**。

## 2. 触发机制

满足以下任一条件时激活本技能：
- **意图指令：** 提及「提醒我」「待办」「记住」「计划」等关键词。
- **时间信息：** 包含具体时间点、时间段或自然语言时间（如「明天下午」「下周一」「半小时后」）。
- **直接操作：** 用户要求列出/添加/更新/完成/删除待办时，也可直接调用本 skill 下的脚本。

## 3. 核心任务

- **事项记录：** 提取事项内容，将时间统一转化为 **ISO 8601（UTC）**，结构化存储 `标准时间`、`事项内容`、`当前进度`。
- **进度更新：** 若用户提及某事项的完成情况或进展，关联已有记录并更新 `进度` 字段。
- **数据持久化：** 待办数据保存在**本 skill 目录下的 `temp/todo-list.md`**。勿手改表格结构（表头、分隔行、列数），否则脚本解析可能失败。

## 4. 时间与脚本技术规范（核心）

- **依赖库：** 使用 `dayjs` 做自然语言时间解析，禁止简单正则或硬编码。
- **时间标准化：** 存储一律使用 **ISO 8601 UTC** 格式（如 `YYYY-MM-DDTHH:mm:ssZ`）。解析时按用户/系统时区理解，存储时转为 UTC。
- **脚本输出解析（Agent 必遵）：**
  - 根据 `[RESULT]` 判定成功、`[ERROR]` 判定失败。
  - 时间：使用脚本输出的 **iso-utc** 行作为 `todo.js add` 的时间参数。
  - 列表：`todo.js list --json` 输出 JSON，便于解析；无 `--json` 时为人类可读文本。
  - 多匹配：脚本会打印 `[ERROR]` 并列出候选项，Agent 应把列表转为用户可选的回复并等待用户指定 ID 或更精确关键词。

## 5. Workflow（推荐执行顺序）

1. **解析用户意图**：新建 / 列出 / 更新进度 / 完成 / 删除。
2. **若为新建且含自然语言时间**：先执行 `node scripts/time.js now` 取当前时间，再执行 `node scripts/time.js parse "用户时间" [--ref=ISO时间]`；将输出的 **iso-utc** 作为待办时间。
3. **若为更新/完成/删除**：先执行 `node scripts/todo.js list` 或 `list --json`，按 ID 或关键词匹配；若匹配到多条，**必须发起确认**再执行。
4. **执行脚本**：按意图调用 `todo.js add|update|done|delete`，传入正确参数。
5. **解析脚本 stdout**：根据 `[RESULT]`/`[ERROR]` 与内容回复用户；若为多轮确认场景，给出选项并等待用户确认后再写盘。

## 6. 匹配与确认机制

- **精准匹配：** 更新/完成/删除时，优先按 **标准时间** 匹配，其次 **ID**，再 **事项关键词** 模糊匹配。
- **歧义处理：** 无法区分「新建 vs 更新」或匹配对象不唯一时，**必须先问**。
  - 例：「您是要新增一条待办，还是更新某条已有事项的进度？」
  - 例：「找到多条，请指定其一：1) ID 001 提交周报 2) ID 003 完成教程。或直接说 ID/关键词。」
- **多轮确认：** 在用户确认信息无误后再执行写入/更新；脚本返回多匹配时，由 Agent 整理成选项让用户选择。

## 7. 数据存储示例 (Markdown)

说明：时间戳为 13 位毫秒（与脚本 `Date.now()` 一致），实际以脚本输出为准。

```markdown
## Todo List
| ID | 标准时间 (ISO 8601) | 事项内容 | 进度 | 创建/更新时间戳 |
|----|---------------------|----------|------|-----------------|
| 001 | 2026-02-21T14:00:00Z | 提交项目周报 | 已完成 | 1737547200000 |
| 002 | 2026-02-22T09:30:00Z | 团队站会 | 进行中 - 准备议程 | 1737631800000 |
```

**注意：** 事项内容中尽量避免包含 `|`，以免破坏表格解析。

## 8. 脚本使用

### 时间解析

```bash
# 获取当前时间（作参考或默认基准）
node scripts/time.js now

# 解析自然语言时间（默认以当前时间为参考）
node scripts/time.js parse "明天下午3点"

# 指定参考时间解析（用于「相对于某天」的场景）
node scripts/time.js parse "下午3点" --ref=2026-02-21T00:00:00Z
```

**存储时使用脚本输出的 `iso-utc` 行。**

### 待办事项操作

```bash
# 添加待办
node scripts/todo.js add "2026-02-21T14:00:00Z" "提交项目周报"

# 列出所有待办（人类可读）
node scripts/todo.js list

# 列出所有待办（JSON，供 Agent 解析）
node scripts/todo.js list --json

# 更新进度
node scripts/todo.js update 001 "已完成"

# 标记为已完成（等同于 update id "已完成"）
node scripts/todo.js done 001
# 或
node scripts/todo.js complete "提交周报"

# 删除待办
node scripts/todo.js delete 001
```

## 9. 触发示例

- "提醒我明天下午3点开会"
- "帮我记住下周一要提交报告"
- "待办：周五下午去见客户"
- "上午10点的会议完成了吗？"
- "把那个待办标记为已完成"
- "列出我的待办"

