关于 cmux-and-worktrees
面向编码 Agent 的技能,通过 `cmux` 在隔离的 Git worktree 中协调并行编码任务,涵盖创建、恢复、设置、合并和清理,并为高风险操作规定了确认步骤。
主要功能
- 01创建或恢复隔离的 worktree
- 02导航和列出 worktree
- 03合并分支,包括压缩合并
- 04生成并运行设置钩子
- 05为删除和合并设置安全规则
适用场景
- 01在仓库中并行开展编码任务
- 02恢复现有分支 worktree 上的工作
- 03设置并合并任务 worktree
- 04合并后清理 worktree
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rami-maalouf/ skills --skill cmux-and-worktrees安装后在 Claude Code 中输入/cmux-and-worktrees确认已加载。
详细介绍
cmux 与 Worktree
通过将每项任务隔离在一个 git worktree 中,安全地并行运行多个编码会话。
不可妥协的命令规则
- 在此技能中,每条命令都必须使用
cmux。 - 正常操作时不得用
git worktree替代。 - 如果
cmux命令失败,请先用type cmux确认其是否可用。
预检
- 确认当前目录位于 git 仓库内:
git rev-parse --is-inside-work-tree
- 确认
cmux可用:
type cmux
- 确保 git 忽略 worktree:
rg -n '^\.worktrees/$' .gitignore || echo '.worktrees/' >> .gitignore
- 检查活动 worktree:
cmux ls
核心命令
- 创建新的隔离任务:
cmux new <branch> - 恢复现有任务:
cmux start <branch> - 跳转到 worktree:
cmux cd [branch] - 列出 worktree:
cmux ls - 合并到主检出目录:
cmux merge [branch] [--squash] - 移除 worktree 和分支:
cmux rm [branch | --all] [--force] - 生成设置钩子:
cmux init [--replace] - 显示/设置布局配置:
cmux config、cmux config set layout <nested|outer-nested|sibling> [--global] - 更新工具:
cmux update - 显示版本:
cmux version
精确工作流
现有分支 -> Worktree
cd /path/to/repo
cmux ls
cmux start <existing-branch>
cmux cd <existing-branch>
bash .cmux/setup
示例:
cmux start eng-1296-onboarding-v2-question-view-context-dedupe
cmux cd eng-1296-onboarding-v2-question-view-context-dedupe
bash .cmux/setup
新分支 + 新 Worktree
cd /path/to/repo
cmux new <new-branch>
cmux cd <new-branch>
bash .cmux/setup
示例:
cmux new codex/pr1-onboarding-demographics-profile-report
cmux cd codex/pr1-onboarding-demographics-profile-report
bash .cmux/setup
设置钩子工作流
- 生成项目专用的设置钩子:
cmux init
- 如有需要,重新生成:
cmux init --replace
- 提交
.cmux/setup,以便后续 worktree 自动继承设置。 - 每次运行
cmux new和cmux start后都运行设置:
bash .cmux/setup
分支和路径行为
- 将
new视为“新分支 + 新 worktree”。 - 将
start视为“复用现有 worktree/会话”。 - 在嵌套布局中,worktree 路径位于
.worktrees/<branch>/下。 - 预期分支名称会经过清理(例如,
feature/foo会变成路径名feature-foo)。 - 一个分支一次只能在一个 worktree 中检出。
安全规则
- 执行
cmux rm --all前请征求确认。 - 执行
cmux rm --force前请征求确认。 - 除非用户要求完整合并提交,否则优先使用
cmux merge <branch> --squash,以保持历史记录简洁。 - 合并前确保 worktree 中的更改已提交。
- 合并成功后移除已完成的 worktree,以减少分支/worktree 漂移。
故障排除
Not in a git repo:切换到仓库根目录,然后重试。Worktree not found:运行cmux ls,然后选择正确的分支,或使用cmux new <branch>创建分支。Branch already checked out:运行cmux ls并使用现有 worktree 路径。- 合并因存在未提交更改而受阻:在 worktree 中提交或暂存更改,然后重试。
- 移除因工作树存在未提交更改而受阻:先清理工作树,或仅在获得明确确认后使用
cmux rm --force。 - Expo Router 意外显示“Welcome to Expo”:终止过时的
expo/metro进程,从目标 worktree 使用--clear重启,并重新打开开发客户端。 - 在 worktree 中进行移动端开发:
cd apps/mobile
npm run dev -- --clear --host lan
评论
支持 Markdown