用途:swain-sync 是 swain 技能集中的一个 Git 工作流自动化技能,用于在提交和推送前完成一系列同步与合规检查。
主要能力与流程:先通过 swain-session-check.sh 检查是否存在活动会话,若无活动会话则提示操作者可用 /swain-init 启动,操作者忽略后可继续。随后建议委派给子代理执行,以保持主对话干净。步骤包括:检测是否处于链接的 worktree,判断当前分支是否有上游跟踪分支,有则 git fetch origin 并变基;本地有改动时使用带标记的 stash,变基后用目标 stash 弹回,冲突则中止并报告。无上游且在 worktree 中时,改为合并 trunk 分支。
之后调查工作树状态、暂存改动并识别疑似机密文件(.env、.pem、_rsa、credentials.、secrets.)并排除暂存。提交前进行 gitignore 卫生检查,缺相关模式时会阻塞并要求修复。还会运行 ADR 合规检查、设计漂移检查、README 对齐提醒、产物编号冲突检查等;其中 ADR 与设计检查为建议性警告,编号冲突为阻塞性。提交信息按 conventional commit 前缀生成并追加 Co-Authored-By 尾注。提交时禁止使用 --no-verify。推送时在 worktree 中直接推送到 trunk,并处理链接安全与重试;若被分支保护拒绝则改用 gh pr create 创建 PR。最后验证状态并输出结果。
限制:多项检查脚本(如 adr-check.sh、design-check.sh、detect-duplicate-numbers.sh、lockfile、rebuild-index.sh 等)仅在安装相应 swain 组件或脚本存在时可用,否则静默跳过。swain-sync 不自行删除 worktree,清理交由 bin/swain 在会话结束后处理。资料未提供安装方法、收费与价格信息。