@zentodo/cli 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,249 @@
1
+ ---
2
+ name: zentodo
3
+ description: Manage the user's ZenTodo productivity workspace — tasks, subtasks, projects, scenes, labels, morning-diary, pomodoro sessions, work-states, reward store, and data sync. Use this skill whenever the user asks to view, create, update, complete, or delete ZenTodo tasks, start a focus / pomodoro session, plan their day, run an incremental sync, search across todo entities, or review productivity stats. Commands are invoked through the `zentodo` CLI with FormData-based HTTP transport against the ZenTodo backend; structured JSON output is available via `--json` and must be parsed before acting on results.
4
+ ---
5
+
6
+ # ZenTodo 技能使用手册
7
+
8
+ 这份 Skill 让你代表用户驱动 ZenTodo 工作区。所有能力通过 `zentodo` 命令行工具调用,后端采用 `multipart/form-data` 请求格式。
9
+
10
+ ## 何时激活本 Skill
11
+
12
+ 用户消息里出现下列任一线索就应启用:
13
+
14
+ - 明确提到 **ZenTodo / 任务 / 待办 / 番茄钟 / 专注 / 晨间日记 / 项目进度 / 四象限**
15
+ - 要求"安排今天 / 统计本周"等涉及个人生产力数据的需求
16
+ - 想同步、备份、导入导出 ZenTodo 数据
17
+
18
+ ## 前置条件
19
+
20
+ 1. **安装 `zentodo` CLI**(一次性,安装时自动配置 Skill):
21
+
22
+ **国内用户(推荐,速度快):**
23
+ ```bash
24
+ npm install -g @zentodo/cli --registry https://registry.npmmirror.com
25
+ ```
26
+
27
+ **或者永久切换到国内镜像再安装:**
28
+ ```bash
29
+ npm config set registry https://registry.npmmirror.com
30
+ npm install -g @zentodo/cli
31
+ ```
32
+
33
+ **海外用户:**
34
+ ```bash
35
+ npm install -g @zentodo/cli
36
+ ```
37
+
38
+ 安装完成后会自动把 Skill 文件复制到 `~/.claude/skills/zentodo/` 和 `~/.agents/skills/zentodo/`,**无需额外操作**。
39
+
40
+ 验证安装:
41
+ ```bash
42
+ zentodo --version
43
+ ```
44
+
45
+ 2. **登录 ZenTodo**(一次性):
46
+
47
+ **推荐:邮箱验证码登录(与 App 端一致)**
48
+ ```bash
49
+ # 第一步:发送验证码到邮箱
50
+ zentodo auth email-code --email 你的邮箱
51
+
52
+ # 第二步:收到验证码后登录(验证码会在后台自动校验)
53
+ zentodo auth login-email --email 你的邮箱
54
+ ```
55
+
56
+ **或者:邮箱 + 密码登录**
57
+ ```bash
58
+ zentodo auth login-password --email 你的邮箱 --password 你的密码
59
+ ```
60
+
61
+ 登录成功后 `usrKey` 写入 `~/.zentodo/config.json`,之后无需再提供密码。
62
+
63
+ 3. **重启 AI 工具**(Claude Code / Claude Desktop / WorkBuddy / Cursor / Trae 等),让它加载新安装的 Skill。
64
+
65
+ 4. **验证**:
66
+
67
+ ```bash
68
+ zentodo auth whoami
69
+ zentodo doctor
70
+ ```
71
+
72
+ 如果当前 shell 找不到 `zentodo`,设置环境变量 `ZENTODO_CLI` 指向绝对路径,并在所有命令前加 `node $ZENTODO_CLI`。
73
+
74
+ ## 通用输出契约(**关键**)
75
+
76
+ 所有命令加 `--json` 后,输出统一为:
77
+
78
+ ```json
79
+ {
80
+ "ok": true,
81
+ "data": <业务数据>,
82
+ "error": null,
83
+ "meta": { "requestId": "...", "durationMs": 0, "scopeChecked": ["read"] }
84
+ }
85
+ ```
86
+
87
+ - 读取 `data` 前**务必**检查 `ok`。
88
+ - 出错时 `ok=false`,`error.code` 是 `ErrXxx` 枚举(详见 `references/error-codes.md`)。
89
+ - 进程退出码对应常见 HTTP 语义(见同一文件)。
90
+
91
+ ## 预演模式
92
+
93
+ 任何会写入的命令都支持 `--dry-run`,不会真正调用后端,只返回将要发送的 FormData 字段。**第一次代表用户改动数据前,建议先 dry-run 一次给用户看**。
94
+
95
+ ## 常见任务模板
96
+
97
+ ### 1. 今天的 MIT 任务
98
+
99
+ ```bash
100
+ zentodo --json task mit-list
101
+ ```
102
+
103
+ 过滤条件已内置:`syncFlag != D`、`taskState != 0`、`isTemplete = false`、`isMIT = true`、`taskCreateTime <= today`。
104
+
105
+ ### 2. 创建任务
106
+
107
+ ```bash
108
+ zentodo --json task add \
109
+ --title "写周报" \
110
+ --due 2025-09-05T18:00:00 \
111
+ --priority 3 \
112
+ --project-key 12 \
113
+ --labels "工作,周报"
114
+ ```
115
+
116
+ - `--due` 用 ISO 8601,CLI 会自动转换成后端 `YYYY/MM/DD HH:mm:ss`。
117
+ - **只传真正需要的参数**,未传字段不会被写入 FormData,避免把已有列置空(这与后端契约一致)。
118
+
119
+ ### 3. 更新任务
120
+
121
+ ```bash
122
+ zentodo --json task update --task-key 4567 --title "新标题"
123
+ ```
124
+
125
+ ### 4. 完成 / 取消完成
126
+
127
+ ```bash
128
+ zentodo task complete --task-key 4567
129
+ zentodo task uncomplete --task-key 4567
130
+ ```
131
+
132
+ ### 5. 设置 MIT / 四象限
133
+
134
+ ```bash
135
+ zentodo task mit --task-key 4567 --is-mit true
136
+ zentodo task quadrant --task-key 4567 --quadrant 1
137
+ ```
138
+
139
+ ### 6. 日历视图(按日期范围)
140
+
141
+ ```bash
142
+ zentodo --json task calendar --start-date 2025-09-01 --end-date 2025-09-30
143
+ ```
144
+
145
+ ### 7. 番茄钟
146
+
147
+ ```bash
148
+ zentodo --json pomo start --task-key 4567 --duration-sec 1500
149
+ zentodo pomo stop --timer-key <key>
150
+ zentodo --json pomo history
151
+ ```
152
+
153
+ ### 8. 工作状态
154
+
155
+ ```bash
156
+ zentodo --json workstate start --task-key 4567 --title "专注写作"
157
+ zentodo workstate stop --work-state-key <key>
158
+ zentodo --json workstate current
159
+ ```
160
+
161
+ ### 9. 晨间日记
162
+
163
+ ```bash
164
+ zentodo --json diary title-list
165
+ zentodo --json diary title-upsert --title "2025-09-05 晨间反思" --date 2025-09-05
166
+ zentodo --json diary content-upsert --md-title-key 789 --content "..."
167
+ ```
168
+
169
+ ### 10. 跨实体搜索
170
+
171
+ ```bash
172
+ zentodo --json search "周报" --in task,project,diary --limit 20
173
+ ```
174
+
175
+ ### 11. 同步
176
+
177
+ ```bash
178
+ zentodo --json sync status # 对比本地 / 服务器版本
179
+ zentodo --json sync incremental # 拉取所有"服务器更新"的表
180
+ zentodo --json sync full # 忽略版本号,全量拉取
181
+ ```
182
+
183
+ ### 12. 统计
184
+
185
+ ```bash
186
+ zentodo --json stats overview # 今日仪表盘
187
+ zentodo --json stats tasks --range 2025-09-01..2025-09-30 # 任务完成率
188
+ zentodo --json stats focus --range 2025-09-01..2025-09-30 # 专注时长
189
+ ```
190
+
191
+ ### 13. 备份与导出
192
+
193
+ ```bash
194
+ zentodo --json export --out ./zentodo-backup.json
195
+ zentodo --json backup create --label 周备份
196
+ zentodo --json backup list
197
+ ```
198
+
199
+ ## 破坏性操作规范
200
+
201
+ 遇到这些动作时,**必须**:
202
+
203
+ 1. 向用户总结即将发生的事,用 `--dry-run` 先跑一次给用户看输出。
204
+ 2. 得到用户明确同意后再加 `--yes` 真实执行。
205
+ 3. 不要主动调用 `zentodo auth delete-account`、`zentodo user restore-default-label`、`zentodo import --mode replace --yes`、`zentodo backup restore --yes`、`zentodo user reward-coin-set`,除非用户明确要求。
206
+
207
+ ## 领域全览(25 个 group)
208
+
209
+ | Group | 用途 |
210
+ | --- | --- |
211
+ | `auth` | 登录 / 注册 / 找回 / 改密 / 销号 / 签发受限 Token |
212
+ | `user` | 资料 / 头像 / 邀请码 / 奖励币 / VIP |
213
+ | `task` / `subtask` | 任务与子任务增删改查 / 完成 / 批量 |
214
+ | `project` / `subproject` | 项目与子项目管理 |
215
+ | `scene` | 场景切换与管理 |
216
+ | `target` | 长期目标 |
217
+ | `label` / `toplabel` | 标签及背景图 |
218
+ | `quadrant` | 四象限配置 |
219
+ | `timeline` | 时间轴条目 |
220
+ | `attach` | 任务 / 思维导图 / 奖励商店附件上传 |
221
+ | `pomo` / `timer` | 番茄钟 / 自由计时 |
222
+ | `workstate` | 工作状态记录 |
223
+ | `diary` | 晨间日记标题 + 内容 |
224
+ | `mindmap` | 思维导图元数据 |
225
+ | `reward` | 奖励商店与兑换记录 |
226
+ | `fasttime` | 快速时间记录 |
227
+ | `wheel` | 滚轮视图配置 |
228
+ | `invite` | 邀请列表 |
229
+ | `app` | App 版本与服务器时间 |
230
+ | `pay` | 价格 / 支付订单(只返回订单串,不代扣) |
231
+ | `sync` | 同步编排 |
232
+
233
+ 详细命令清单见 `references/commands.md`。完整参数 JSON Schema 见 `references/tools.md`。
234
+
235
+ ## 诊断
236
+
237
+ ```bash
238
+ zentodo doctor # 配置 + 网络 + Token 体检
239
+ zentodo auth whoami # 查看当前身份
240
+ zentodo audit log # 本地命令历史
241
+ ```
242
+
243
+ ## 绝对不要做的事
244
+
245
+ - 不要在 `--json` 响应解析成功前做任何副作用判断。
246
+ - 不要在 `error.code == ErrUnauthorized` 时继续重试同一操作,先告诉用户重新 `zentodo auth login-password`。
247
+ - 不要在未征得用户明确同意时调用任何带 `destructive` 标记的命令。
248
+ - 不要在日志或对话里回显用户密码、token、openid、umengToken。
249
+ - 不要假设后端字段格式:时间一律 ISO 8601 传入 CLI,由 CLI 转换;布尔值传 `true`/`false`,由 CLI 序列化。
@@ -0,0 +1,12 @@
1
+ # 示例:安排今天
2
+
3
+ 用户:"总结我今天的 MIT 任务,并为第一条开启番茄钟。"
4
+
5
+ Agent:
6
+
7
+ 1. 调用 `zentodo.task.mit-list`,无需入参。
8
+ 2. 挑出第一条未完成(`taskState != 0`)的任务。
9
+ 3. 对它调用 `zentodo.pomo.start`,入参 `{ "task_key": <taskKey>, "duration_sec": 1500 }`。
10
+ 4. 输出一段总结:"已开启 25 分钟番茄钟,任务:_写周报_(#4567)。"
11
+
12
+ 读取 `data` 前一定要先检查 `ok`。
@@ -0,0 +1,9 @@
1
+ # 示例:检查同步状态
2
+
3
+ 用户:"我的任务数据是最新的吗?"
4
+
5
+ Agent:
6
+
7
+ 1. 调用 `zentodo.sync.server-version`,入参 `{ "table_name": "task" }`。
8
+ 2. 与 Skill 本地缓存的 `client_version` 比较。若服务器版本更大,调用 `zentodo.task.sync-pull` 并传入缓存版本拉取增量。
9
+ 3. 汇报"数据已最新"或"已拉取 N 条任务,服务器版本现为 M"。