用途:swain-teardown 是结束一次会话的单一入口,取代了原先的 swain-session 关闭处理器(ADR-023),在会话关闭前运行一整套收尾与卫生检查。
主要能力:
- 孤立 worktree 检测(SPEC-233/247):比对 session.json 中登记的 worktree 书签与磁盘上实际 worktree,结合 lockfile 状态标记孤立项。当前目录、有未提交改动、分支未完全合并的 worktree 只标记不删除;trunk 受保护;标记 ready_for_cleanup 的 worktree 在归档 session.json 后自动移除;其余安全项需操作者逐项确认(输入 y/Y)。
- Git 脏状态检查:cd 到仓库根后执行 git status --porcelain,有输出则提示未提交改动并列出前 20 行。
- 完成度流水线检查(SPEC-258):读取 .agents/completion-state.json,按 bdd_tests → smoke_test → retro 顺序补齐 pending/failed 步骤;BDD 通过运行 swain-test.sh --artifacts 执行;smoke 由操作者确认;retro 通过调用 swain-retro 技能执行且不可跳过;带 --force 时把剩余步骤标记为 skipped;仍有未完成步骤则 teardown 被阻断。
- 工单同步提示(SPEC-234)与交接摘要:提示操作者核对工单,并把会话摘要追加到 SESSION-ROADMAP.md。
- 分支合并:枚举除 trunk 外的 worktree,区分已合并、干净未合并、脏状态、当前目录四类;对干净未合并分支提供 Merge / PR / Skip 选项,合并前可用 detect-worktree-links.sh、resolve-worktree-links.sh 做路径链接检测。
- 锁文件释放(SPEC-247):在工作 tree 中若有活动 lockfile,先释放认领,避免被误判为活跃。
使用方式:以技能方式调用,可通过 --session-chain 表示调用方已确认会话状态,通过 --force 绕过流水线检查。会话链路未传入且会话状态非 active 时提示“无活动会话可收尾”并以 0 退出。依赖脚本位于 .agents/bin/(swain-session-check.sh、swain-lockfile.sh、swain-session-archive.sh、swain-bookmark.sh、swain-trunk.sh、swain-test.sh 等),状态文件为 .agents/session.json、.agents/session-state.json、.agents/completion-state.json。
适用场景:swain 工作流中的会话结束收尾、worktree 卫生维护、提交交接前的完成度校验。
限制:资料未提供该技能的安装步骤、收费方式、支持平台与版本要求;部分脚本或技能缺失时会记录警告并继续(retro 除外,失败时可选重试或中止)。