关于 linear-worktree
linear-worktree 是一项技能,可为 Linear issue 从 main 创建 Git worktree。它能解析 issue 链接或文本生成 issue ID 和分支名,并报告目录位置及进入命令。
主要功能
- 01解析 Linear 链接和 issue 文本
- 02生成 issue ID 与分支名
- 03创建前获取 origin main
- 04创建并列的 Git worktree
- 05报告路径、分支和 cd 命令
适用场景
- 01为 Linear issue 开始隔离开发
- 02根据 issue 链接创建 worktree
- 03使用 issue ID 设置 worktree
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mblode/ agent-skills --skill linear-worktree安装后在 Claude Code 中输入/linear-worktree确认已加载。
附带文件config.json
详细介绍
linear-worktree
从 main 为 Linear issue 创建一个 git worktree,作为当前仓库的同级目录。
复制并跟踪此检查清单:
Worktree creation progress:
- [ ] Step 1: Resolve REPO_ROOT / REPO_NAME / REPOS_BASE
- [ ] Step 2: Parse input into ISSUE_ID and BRANCH
- [ ] Step 3: git fetch origin main
- [ ] Step 4: git worktree add at $REPOS_BASE/$REPO_NAME-$ISSUE_ID
- [ ] Step 5: Report worktree path, branch, and cd command with resolved paths
设置
解析三个变量:
- 位于 git 仓库内(最常见):
REPO_ROOT=git rev-parse --show-toplevel,REPO_NAME= 其基本名称,REPOS_BASE= 其父目录。 - 不在 git 仓库内,但
config.json包含repos_base:将其用作REPOS_BASE。询问用户选择哪个仓库文件夹。 - 两者都不满足:询问完整的仓库路径。
输入
用户提供以下其中一项:
- Linear URL:
https://linear.app/myteam/issue/ABC-58/add-dark-mode-toggle - 复制为提示词:
ABC-58 Add dark mode toggle to settings page - 仅 issue ID:
ABC-58
解析
所有解析都会生成两个值:ISSUE_ID(小写)和 BRANCH(ID + slug)。
从 URL 解析
- 从
/issue/后面的路径段提取 issue ID →ISSUE_ID=abc-58 - 最后的路径段作为 slug →
BRANCH=abc-58-add-dark-mode-toggle
从复制为提示词解析
- 第一个词是 issue ID →
ISSUE_ID=abc-58 - 将其余部分转换为 slug:转为小写,将空格替换为
-,去除反引号/括号/.../引号/#/@,合并连续的连字符,去除开头和结尾的连字符 BRANCH=abc-58-<slug>
示例: ABC-58 Add dark mode toggle (don't break "light" default)
→ abc-58-add-dark-mode-toggle-dont-break-light-default
仅从 issue ID 解析
将 ID 转为小写 → ISSUE_ID = abc-58。如果用户为分支提供了描述,则将其转换为 slug;否则 BRANCH = abc-58。
创建 Worktree
git -C $REPO_ROOT fetch origin main
git -C $REPO_ROOT worktree add \
-b $BRANCH \
$REPOS_BASE/$REPO_NAME-$ISSUE_ID \
main
这会在 $REPOS_BASE/$REPO_NAME-$ISSUE_ID 创建 worktree(例如 /Users/you/Code/myrepo-abc-58)——它是主仓库的同级目录,而不是仓库内部的目录。
创建后
使用实际解析出的路径告知用户 worktree 路径、分支名称和 cd 命令:
Worktree: /Users/you/Code/myrepo-abc-58
Branch: abc-58-add-dark-mode-toggle
Run: cd /Users/you/Code/myrepo-abc-58
边缘情况和注意事项
- 分支已存在但未检出:去掉
-b——使用git worktree add $REPOS_BASE/$REPO_NAME-$ISSUE_ID $BRANCH。 - 分支已在另一个 worktree 中检出:不要使用
--force。运行git worktree list,并告知用户cd到现有 worktree。 - 目录已存在:删除前先与用户确认——它可能是被遗忘的 worktree。
- 始终先 fetch:在
git worktree add之前运行git fetch origin main,否则 worktree 会基于过时的版本创建。 - 同级目录,而非子目录:worktree 路径位于
$REPO_ROOT旁边,绝不会在其内部。 - “创建分支”指创建 worktree:使用
git worktree add,而不是git checkout -b。 - 始终以
cd结束:如果用户仍留在原始仓库中,worktree 就毫无用处。
评论
支持 Markdown