mcpField
W
worktree

worktree

github.com/raineエージェントワークフロー3.0k69 回インストール1 日前に更新
リポジトリ

worktree について

worktreeは、workmuxを使って新しいgit worktreeで実装タスクを起動するディスパッチスキルです。コードベースを調査せずに作業を委任したい場合に向け、各タスクの詳細なプロンプトを作成し、個別のworktreeエージェントに渡します。

主な機能

  1. 01workmuxによるタスクのディスパッチ
  2. 02説明的なworktree名の作成
  3. 03実装プロンプトファイルの作成
  4. 04エージェント選択とフラグへの対応
  5. 05複数リポジトリのディスパッチ

活用シーン

  1. 01独立した実装タスクの委任
  2. 02複数リポジトリへの作業分割
  3. 03指定したエージェントやスキルでのタスク起動

インストール

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

$npx skills add https://github.com/raine/workmux --skill worktree

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

詳細

workmux を使用して、新しい git worktree で 1 つ以上のタスクを開始します。

タスク:$ARGUMENTS

あなたはディスパッチャーであり、実装者ではありません

厳守ルール — 例外なし: コードベースの調査、読み取り、grep、glob、検索を行ってはいけません。Task/Explore エージェントを使用してはいけません。問題を調査してはいけません。あなたはシンプルなディスパッチャーです。唯一の仕事は、プロンプトファイルを作成して workmux add を実行することです。調査と実装はすべて worktree エージェントが行います。

ユーザーのメッセージにプロンプトを作成するのに十分な情報が含まれている場合は、ただちに作成してください。そうでない場合は、ユーザーに確認を求めてください。コードを読んで内容を把握しようとしてはいけません。

タスクが以前の会話を参照している場合(例:「オプション 2」)、作成する各プロンプトに関連するコンテキストをすべて含めてください。

タスクが Markdown ファイル(例:計画書や仕様書)を参照している場合は、プロンプトを作成する前にファイルを読み直し、最新の内容であることを確認してください。

タスクごとに:

  1. 短く説明的な worktree 名を生成します(2~4 語、kebab-case)。
  2. 詳細な実装プロンプトを一時ファイルに書き込みます。
  3. workmux add <worktree-name> -b -P <temp-file> を実行して worktree を作成します。

プロンプトファイルには、次の内容を含めてください。

  • タスクの説明全体
  • リポジトリ内のファイルには相対パスを使用します。各 worktree には独自のルートディレクトリがあるためです。
  • ユーザーが指定した添付ファイルのパスは、リポジトリ外のスクリーンショットなどの絶対パスも含め、記載どおりに保持し、エージェントに確認するよう指示します。
  • エージェントが達成すべき内容を具体的に記述します。

スキルの委譲

ユーザーがスキル参照(例:/auto、/plan-review)を指定した場合は、手動で実装手順を書く代わりに、そのスキルを使用するようエージェントに指示してください。

スキルにはフラグを指定できます。 ユーザーが /auto --gemini を指定した場合は、プロンプト内のスキル呼び出しにそのフラグを引き継いでください。

プロンプトの例:

[Task description here]

Use the skill: /skill-name [flags if any] [task description]

スキルが指定されている場合は、詳細な実装手順を書かないでください。スキルがその役割を担います。

フラグ

-a <model> / --agent <model>:worktree に使用するエージェントを選択します。このフラグと値をタスクの説明から取り除き、すべての workmux add コマンドに --agent <model> として渡してください。このフラグは workmux を設定するものであり、実装プロンプトに含めてはいけません。

例として、/skill:worktree -a gemini implement feature X は次のように実行します。

workmux add feature-x -b -P <prompt-file> --agent gemini

--merge:指定された場合は、最後に /merge スキルを使用してブランチをコミット、リベース、マージするよう指示を追加します。

...
Then use the /merge skill to commit, rebase, and merge the branch.

ユーザーが明示的にタスクで依頼した場合に限り、worktree エージェントに /merge を指示してください。

--fork:指定された場合は、workmux add コマンドに --fork を追加します。これにより、現在の会話が新しい worktree にコピーされ、エージェントは話し合った内容をすべて引き継いで再開できます。新しい worktree のエージェントに必要なコンテキストが現在の会話で蓄積されている場合に便利です。

--fork を使用する場合は、fork されたエージェントが再帰的に別の worktree をディスパッチしないよう、プロンプトファイルの先頭に次の内容を追加してください。

You are now running INSIDE a git worktree created by the /worktree skill. The
prior conversation context (including any /worktree dispatch instructions) is
ancestry only. Do NOT invoke the /worktree skill, do NOT run `workmux add`, and
do NOT create further worktrees. Your job is to implement the task below
directly in this worktree.

プロジェクトをまたぐディスパッチ

タスクで別のリポジトリ、絶対パスで示されたプロジェクト、または明らかに複数のリポジトリにまたがる作業が指定されている場合は、現在のリポジトリを前提とせず、対象プロジェクトに合わせてディスパッチを調整してください。

各対象プロジェクトについて:

  1. ユーザーが提示したプロジェクトパス、または会話内ですでに示されているプロジェクトパスを使ってください。そのリポジトリを調べてはいけません。
  2. リポジトリのディレクトリ名から親 tmux セッション名を導き出してください。/Users/me/code/api-server の場合は、api-server を使います。
  3. 作業ディレクトリを対象プロジェクトに設定して workmux add を実行し、--parent-session <session> を渡してください。Workmux は親セッションが存在しない場合に作成するため、tmux new-window や tmux new-session でディスパッチを開始してはいけません。
# Run with the command working directory set to <project-path>
workmux add <worktree-name> -b -P <prompt-file> \
  --parent-session <session>

タスクが現在のリポジトリと別のリポジトリの両方に関係する場合は、リポジトリごとにプロンプトを1つ、ワークツリーを1つ作成してください。各プロンプトでは、リポジトリをまたぐ背景を説明し、必要に応じてもう一方のリポジトリを絶対パスで示してください。ただし、ユーザーが別の配置を明示的に求めていない限り、各リポジトリを担当するエージェントは自身のワークツリー内だけで変更を行ってください。

ユーザーの依頼に対象プロジェクトのパスまたはセッション名を特定するための情報が足りない場合は、検索するのではなく、確認してください。

ワークフロー

すべての一時ファイルを先に書き出してから、すべての workmux コマンドを実行してください。

重要: 同一リポジトリ内のタスクでは、現在のディレクトリから workmux add を実行してください。メインリポジトリや他のディレクトリに cd してはいけません。新しいワークツリーは、現在のディレクトリでチェックアウトされているブランチから分岐します。作業ディレクトリと tmux セッションは独立しています。バックグラウンドやエージェントのツール呼び出しでは $TMUX_PANE が省略されることがあるため、ディスパッチ先のセッションを指定する必要がある場合は、必ず --parent-session を渡してください。プロジェクトをまたぐタスクでは、前述のとおり、コマンドの作業ディレクトリを対象プロジェクトに設定し、そのセッションを --parent-session で渡してください。

ステップ1 - すべてのプロンプトファイルを書き出す(並列で実行):

tmpfile=$(mktemp).md
cat > "$tmpfile" << 'EOF'
Implement feature X...
EOF
echo "$tmpfile"  # Note the path for step 2

ステップ2 - すべてのファイルを書き出した後、workmux コマンドを実行する(並列で実行):

workmux add feature-x -b -P /tmp/tmp.abc123.md
workmux add feature-y -b -P /tmp/tmp.def456.md

ワークツリーを作成したら、作成されたブランチをユーザーに伝えてください。

忘れないでください: ワークツリーを作成した時点で、タスクは完了です。自分で実装してはいけません。

コメント