← ClaudeAtlas

git-worktreelisted

Git worktree 生命周期管理 skill(用户级通用)。触发后弹出菜单,支持:新建 worktree、把当前 worktree 合并到主干、把主干同步到所有 worktree、清理当前 worktree。主干分支名与 worktree 命名前缀均运行时自动探测,不绑定具体项目。触发词:创建 worktree、新建 worktree、worktree 合并、合并到主干、主干同步、同步所有 worktree、清理 worktree、git worktree、worktree 管理。
BackToCimaCoppi/Praxis · ★ 7 · Code & Development · score 79
Install: claude install-skill BackToCimaCoppi/Praxis
# git-worktree 多 worktree 并行开发管理工具。主仓库当前 checkout 的分支即**主干分支**,是唯一主干,所有 worktree 的改动最终合并回主干。worktree 与任何总控/任务体系**解绑**——同一 worktree 可承载多个任务,若项目启用了 `control` skill,通过 `/control switch` 切换。 ## 约定探测(所有操作的公共前置) ```bash # 主仓库路径 = git worktree list 的第一行(git 保证主仓库永远排第一) MAIN_ROOT=$(git worktree list | head -1 | awk '{print $1}') # 主干分支 = 主仓库当前 checkout 的分支 TRUNK_BRANCH=$(git -C "$MAIN_ROOT" branch --show-current) # worktree 目录命名前缀 = 主仓库目录名 REPO_NAME=$(basename "$MAIN_ROOT") PARENT_DIR=$(dirname "$MAIN_ROOT") # 布局探测:主仓库目录名 == 主干分支名(容器目录布局,如 ~/projects/myrepo/main)→ worktree 不带前缀 if [ "$REPO_NAME" = "$TRUNK_BRANCH" ]; then WT_PREFIX="" # 容器布局:worktree 目录 = PARENT_DIR/{名称} else WT_PREFIX="$REPO_NAME-" # 传统布局:worktree 目录 = PARENT_DIR/{REPO_NAME}-{名��} fi ``` > 若 `TRUNK_BRANCH` 探测为空(主仓库处于 detached HEAD),停下询问用户主干分支名,不猜测。 ## 合并原则(所有涉及合并的操作均遵守) 1. 先提交**源分支**的未提交改动 2. 再提交**目标分支**的未提交改动 3. 执行 merge 4. 遇到冲突直接解决,不 stash、不建中间分支 --- ## 触发入口(强制) skill 被调用后,**第一步必须**用 `AskUserQuestion` 询问用户选择操作: 问题:**你想执行哪个 worktree 操作?** 选项: - **新建 worktree**:从主干拉出新分支,在兄弟目录创建 worktree - **合并到主干**:把当前 worktree commit 并 merge 到主干(完工时用) - **主干同步到所有 worktree**:把主干 merge 进每个 feature worktree(重大改动时用) - **清理当前 worktree**:验证已全部合并到主干后删除 worktree 和分支 根据用户选择跳到对应 §。 --- ## §A. 新建 worktree **输入**:向用户询问英文任务名(如 `coupon-center`、`order-export`) **命名规则**: - 目录名:`{WT_PREFIX}{名称}`(传统布局为 `{REPO_NAME}-{名称}`,容器布局直接 `{名称}`,探测逻辑见「约定探测」) - 路径:主仓库的**兄弟目录**(`PARENT_DIR/{WT_PREFIX}{名称}`) - 分支:`feature/{名