← ClaudeAtlas

mark-tasks-donelisted

批量勾选 `openspec/changes/<name>/tasks.md` 指定 section 范围内的 `- [ ]` → `- [x]`,跳过"下次 port 同步位点 / future notes / 备忘"等非活动节。**仅**在用户**显式发起命令**时触发:`/mark-tasks-done <change> [--sections N-M]` 或"把 port-foo 的任务勾上 / 把 port-foo 的任务批量勾上 / 一次性勾完 port-foo"等明确点名 change 的指令。**不是** `/opsx:apply` 默认节拍的一部分——后者按 `.claude/rules/opsx-apply-cadence.md` 要求"完一项 TaskUpdate 一项"逐个勾,模型禁止在 apply 流程中自主调用本 skill。
snowzhaozhj/claude-devtools-rs · ★ 1 · AI & Automation · score 70
Install: claude install-skill snowzhaozhj/claude-devtools-rs
# mark-tasks-done 模型不能自主调用——勾选是有副作用的修改动作,且与 opsx-apply-cadence 的"每勾一项 = TaskUpdate 一项"节拍冲突,必须用户**显式点名 change** 才进。 **典型使用场景**(用户明确这么说时才用): - "把 port-foo 的任务勾上" / "把 port-foo 的任务批量勾上"——显式指定 change - "一次性勾完 port-foo" / "/mark-tasks-done port-foo" - 早期完成但忘记勾的 change,临 archive 前发现 tasks.md 还是空 checkbox - 多人协作时别人完成了某节但没勾,自己补勾 **不适用场景**(用 TaskUpdate / 逐项 Edit 代替): - `/opsx:apply` 推进中正常勾——按节拍走,模型禁止在 apply 中调本 skill - 用户没点名具体 change(只说"勾一下任务")——单项勾用 Edit 即可,多 change 不确定的让用户先明确 ## 输入 1. **change name**(必需):openspec 变更名,形如 `port-tool-execution-linking` 2. **sections**(可选):section 区间,默认 `1-<最大活动节号>`。备忘节(通常是最后一节)永远被排除 ## 工作步骤 1. **定位文件**:`openspec/changes/<name>/tasks.md`。若不存在���报错退出。 2. **解析 section 头**:识别所有 `^## N\. ` 形式的标题,按数字排序。记录每段 section 的行号区间。 3. **识别备忘节**: - 标题文本匹配正则 `(下次|future|notes|同步位点|备忘|carry[- ]over)` 之一的 section - 或者紧跟 section 头后面有一行 blockquote `^> ` 以"以下"或"these"开头 - 或者标题含"N.X 发布"(N.1-N.4 发布尾段——这些应该在 wait-ci 后手动勾,不是这里批量勾的对象) → 这些 section **不要**勾选。 4. **计算要勾选的行**:用户传入 `--sections N-M`(默认 `1-<最大活动节号>`),跳过备忘节;对范围内的每条 `- [ ] ` 行替换为 `- [x] `。 5. **使用 Edit 工具修改文件**,不要用 Bash 的 `sed`/`perl`——模型友好的精准替换减少误伤。 6. **输出摘要**: ``` marked N tasks done in openspec/changes/<name>/tasks.md sections: 1..M (excluded: <备忘节编号与标题>) preserved: K unchecked items in 备忘节 ``` ## 硬性约束 - **只操作 `- [ ] `**(精确前缀 2 空格 + 括号 + 空格),不要匹配 `-[ ]` 或 `* [ ]` 等变体 - 备忘节里的任何 checkbox **必须**保持原状,即使它是 `- [ ] ` - 发布尾段 `N.X` 始终视为备忘节排除——`.claude/rules/opsx-apply-cadence.md` 明