mcpField
L
linear-worktree

linear-worktree

github.com/mblode開発16976 回インストール1 日前に更新
リポジトリ

linear-worktree について

linear-worktree は、Linear issue 用に main から Git worktree を作成するスキルです。issue の URL やテキストから ID とブランチ名を解析し、配置先と移動コマンドを提示します。

主な機能

  1. 01Linear URL と issue テキストの解析
  2. 02issue ID とブランチ名の生成
  3. 03作成前の origin main 取得
  4. 04隣接ディレクトリへの Git worktree 作成
  5. 05パス・ブランチ・cd コマンドの提示

活用シーン

  1. 01Linear issue の分離開発を開始
  2. 02issue URL から worktree を作成
  3. 03issue ID を使った worktree の設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mblode/agent-skills --skill linear-worktree

インストール後、Claude Code で/linear-worktreeを入力して読み込まれたか確認します。

同梱ファイルconfig.json

詳細

linear-worktree

Linear のイシュー用に、現在のリポジトリの兄弟ディレクトリとして、main から Git ワークツリーを作成します。

このチェックリストをコピーして追跡してください。

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

セットアップ

次の3つの変数を解決します。

  1. Git リポジトリ内にいる場合(最も一般的):REPO_ROOT = git rev-parse --show-toplevel、REPO_NAME = そのベース名、REPOS_BASE = その親ディレクトリ。
  2. Git リポジトリ内ではないが、config.json に repos_base がある場合:それを REPOS_BASE として使用します。ユーザーにリポジトリのフォルダーを尋ねます。
  3. どちらにも該当しない場合:リポジトリのフルパスを尋ねます。

入力

ユーザーは次のいずれかを指定します。

  • Linear URL:https://linear.app/myteam/issue/ABC-58/add-dark-mode-toggle
  • プロンプトとしてコピー:ABC-58 Add dark mode toggle to settings page
  • イシュー ID のみ:ABC-58

解析

すべての解析で2つの値を生成します。ISSUE_ID(小文字)と BRANCH(ID + スラッグ)です。

URL から
  1. /issue/ の後のパスセグメントからイシュー ID を抽出します → ISSUE_ID = abc-58
  2. 最後のパスセグメントをスラッグとして使用します → BRANCH = abc-58-add-dark-mode-toggle
プロンプトとしてコピーしたテキストから
  1. 最初のトークンがイシュー ID です → ISSUE_ID = abc-58
  2. 残りのテキストをスラッグ化します。小文字にし、スペースを - に置き換え、バッククォート/括弧/.../引用符/#/@ を削除し、連続するハイフンをまとめ、先頭と末尾のハイフンを削除します。
  3. 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

イシュー ID のみの場合

ID を小文字にします → ISSUE_ID = abc-58。ユーザーがブランチ用の説明を指定した場合はそれをスラッグ化し、指定がなければ BRANCH = abc-58 とします。

ワークツリーの作成

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(例:/Users/you/Code/myrepo-abc-58)にワークツリーが作成されます。これはメインリポジトリの中ではなく、その兄弟ディレクトリです。

作成後

実際に解決されたパスを使って、ワークツリーのパス、ブランチ名、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 を使用します。
  • ブランチが別のワークツリーでチェックアウトされている場合:--force は使用しないでください。git worktree list を実行し、既存のワークツリーに cd するようユーザーに伝えます。
  • ディレクトリがすでに存在する場合:削除する前にユーザーに確認します。忘れられたワークツリーの可能性があります。
  • 必ず先にフェッチする:git worktree add の前に git fetch origin main を実行します。そうしないと、古いベースからワークツリーが作成されます。
  • 兄弟であり、子ではない:ワークツリーのパスは $REPO_ROOT の隣に置き、決してその中には作成しません。
  • 「ブランチを作成する」とは、ワークツリーを作成することです:git checkout -b ではなく、git worktree add を使用します。
  • 必ず最後に cd する:ユーザーが元のリポジトリにとどまるなら、ワークツリーは役に立ちません。

コメント