plugins/tools/trellisx/skills/trellisx-cleanup/SKILL.md
🧹 批量收尾 —— 一次清理/归档/收尾**全部**已完成 task。三件事: ① 清理所有已合并的 worktree ② 归档所有已完成的任务 ③ 清理 task.md 看板的已完成行。完成判定 = completed ∪ merged (并集), 当前 active task 永不纳入。**强制 dry-run → 用户确认 → --apply 执行** 三段护栏, worktree 销毁沿用安全判据 (脏/未合并自动保留, 不丢提交)
npx skillsauth add lazygophers/ccplugin trellisx-cleanupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
trellis 逐个 task.py finish/archive 收尾单任务; 多个 task 完成后堆积 (残留已合并 worktree、看板已完成行膨胀、未归档 completed 任务) 时缺批量收口。本 skill 一次清理三类残留, 复用 trellisx-finish.py (单任务全链) + trellisx-taskmd.py (看板) + worktree 安全销毁判据, 不重写 git 逻辑。
| # | 需求 | 实现 |
| --- | --- | --- |
| ① | 清理所有已完成的 worktree | 已合并+干净的 worktree 销毁 (沿用 trellisx-worktree.py archive 安全判据: merge-base --is-ancestor); 脏/未合并自动保留, 禁丢提交 |
| ② | 归档所有已完成的任务 | 逐个 trellisx-finish.py --task <tid> (commit→merge --no-ff→archive→销 worktree, 逐个提交, 幂等可重入) |
| ③ | 清理已完成任务的 task.md | trellisx-taskmd.py cleanup --days N 删看板"已完成"行 (默认 --days 0 全删) |
.trellis/tasks/<tid>/task.json 的 status == "completed" 且未归档。task.py current 命中的 tid 排除, 防销正在用的)。销毁 worktree + 归档任务 + 删看板行 = 破坏性。必须走: dry-run 报告 → AskUserQuestion 确认 → --apply 执行。禁跳过确认直接
--apply, 禁用"建议清理"软措辞替代确认工具。
--apply 跑, 打印将归档的 task、将销的 worktree、将保留的 worktree (脏/未合并)、将删的看板行阈值。不改任何状态。
python3 .trellis/scripts/trellisx-cleanup.py
--apply。
python3 .trellis/scripts/trellisx-cleanup.py --apply [--days 0] [--message "<提交消息>"]
TaskList → TaskStop), 不属本批量清理层。trellisx-worktree.py 既有安全判据, 不新增强删路径 —— 脏树或分支未合并一律保留。/trellisx-apply 复制脚本到 .trellis/scripts/。与下方「反例黑名单」区别: 黑名单是不要做什么, 本表是 批量收尾跑起来卡壳时怎么办。
| 触发 | 一线修复 | 仍失败兜底 |
| --- | --- | --- |
| 某 task 收尾非 0 退出 (多为合并冲突) | 检脚本失败清单, 逐个转手动解冲突后 --apply 重跑 (幂等可重入) | 反复冲突解不开 → 硬停 该 task, 报给用户裁定 (改代码 / 弃分支), 禁当成功继续 |
| 脏 / 未合并 worktree 被自动保留 | 提示用户先提交或合并该分支, 再重跑清理 | 用户明确弃这些改动 → 仍不强删, 让用户手动 git worktree remove --force, 本 skill 不代执行破坏性删 |
| dry-run 与 --apply 间状态漂移 (期间新完成/新合并 task) | 重跑 dry-run 刷新清单再经 AskUserQuestion 确认 | 清单仍对不上 → 缩小范围逐 task finish 收尾, 禁按旧清单盲 apply |
| --apply 部分成功、部分失败 | 已归档的不回滚 (幂等), 仅对失败 tid 重跑 | 重跑仍失败 → 列残留 tid 给用户, 标「待手动收尾」 |
| 脚本不存在 (项目未跑 apply) | 提示用户先 /trellisx-apply 复制脚本到 .trellis/scripts/ | 用户暂不跑 → 本批量层不可用, 降级逐个 task.py finish 手工收尾 |
| # | 反模式 | 为什么禁 | 替代 |
| --- | --- | --- | --- |
| 1 | 跳过 dry-run 直接 --apply | 破坏性操作未经确认 = 可能误销未合并 worktree | 先 dry-run → AskUserQuestion 确认 → 再 --apply |
| 2 | 用纯文本"我将清理…"代替 AskUserQuestion | 确认必须用专门工具 | 经 AskUserQuestion 列 tid + worktree 路径 |
| 3 | 把当前 active task 一起归档 | 销正在用的 worktree = 流程错误 | 脚本已排除 active; 禁手动绕过 |
| 4 | 收尾失败 (冲突) 当成功继续 | 漏合丢提交 | 检失败清单, 转手动解冲突后重跑 |
| 5 | 强删脏/未合并 worktree | 丢未提交/未合并改动 | 保留它们, 先提交/合并再清理 |
tools
UI/UX 与布局设计——做界面布局/结构/导航/组件/交互的设计决策。触发:做UI/UX/布局/排版/导航/组件/交互/栅格/响应式/图表选型/字体配对。按媒介路由 HTML/Web、原生 App(iOS/Android/桌面)、CLI、TUI。需后端动态系统不适用;配色/主题/色板走姊妹 skill design-color。
tools
主题与配色设计——做颜色搭配/调色板/主题/品牌色阶/暗模式的设计决策。触发:选配色/调色/主题/色板/品牌色/暗模式/对比度/色盲/UI风格。按媒介路由 HTML/Web(CSS变量)、原生App(平台token)、CLI(ANSI)、TUI(真彩/256/16降级)。保证可访问性(对比度/色盲安全)。需后端动态系统不适用;UI/UX 布局/组件/交互走姊妹 skill design-uiux。
tools
跨任意组件(plugin/skill/agent/command)的验证驱动优化循环纪律 skill。当用户要优化某个已有组件却无明确方向、或要防止改了反而更差(自评乐观偏差 / 多维同改归因失效 / 为凑分加废话膨胀)、或要把一套通用「评分→单变量改→改后验证严格更好才留否则回滚→触顶停」的纪律套到任意组件上时使用。管优化过程本身的纪律(validation gate / ratchet / 独立验证 / 触顶停),不评单组件深度(交 skill-dev),不查插件接线(交 plugin-dev)。仅手动 /optimize-any 触发。
data-ai
两层规则记忆 (基于 .skein/spec)。planning 时 recall 召回相关规则、task finish 后 sediment 沉淀学习 + prune 自动精简过期/重复/断链规则。core 常驻硬规 + recall 按需召回, 经判定门自动写盘 (不逐次问用户)。产出 .skein/spec 下 core/recall 规则文件 + index。另支持空仓 bootstrap 播种规则基线、记忆大面积失效 (大重构/换栈) 时 reconstruct 可逆归档后按项目类型分型重建、maintain 手动体检 (超预算/stale/断链/重复/废弃, --apply 自动修复)、auto-fix (Stop hook 写 .pending-fix 标记 → main 派 skein-specer bg 跑 maintain --apply 全自动修, 断链只报告)。