mcpField
T
treehouse

treehouse

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

treehouse について

依存関係を導入済みの Treehouse の Git worktree プールを管理するスキルです。リースの識別情報と使用状況を確認し、使用中の worktree を回収しないよう、安全な返却や削除を案内します。

主な機能

  1. 01準備済み worktree のタスク用リース
  2. 02プール状態とプロセスの確認
  3. 03ブランチ・リポジトリ・リースの照合
  4. 04空き worktree のガード付き返却
  5. 05worktree の安全な削除手順

活用シーン

  1. 01新しいタスク用に準備済み worktree を取得
  2. 02worktree を安全に返却できるか確認
  3. 03セッションやサービス使用中の worktree を保持

インストール

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

$npx skills add https://github.com/yahyabedirhan/skills --skill treehouse

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

同梱ファイルagents/openai.yaml

詳細

Treehouse

treehouse は、依存関係がすでにインストールされた、事前にウォームアップ済みの git ワークツリーのプールを維持します。承認済みのタスクでは、ワークツリーを自律的に借りてください。空のワークツリーは破棄せずにプールへ返却し、次の作業ですぐに使える状態にしておきます。プールに残すべきでないワークツリーだけを破棄してください。精算後も、呼び出し元セッションが使用中のワークツリーは借用状態のままにし、そのセッションホストのトポロジーは開いたままにします。

  1. インストール済みのバージョンと、対象操作のヘルプを確認してください。新しい作業では、get --lease --json --lease-holder <effort> -b <branch> を使用し、返された path、lease_id、lease_holder を保存してください。パスを物理パスとして解決し、使用前にリポジトリとブランチを確認してください。後で返却する際は、返された識別情報を使用してください。ホルダーのラベルだけでは、再利用される可能性があります。
  2. ワークツリーを返却する前に、その正確な正規パス、リポジトリ、ブランチ、現在のリースが、記録した取得情報と一致することを確認してください。ワークツリーがクリーンであることを確認し、必要な無視対象ファイルを保持し、呼び出し元ワークフローのマージ証明によってブランチがマージ済みであることを証明してください。元の取得時に識別情報が記録されていない場合は、現在のリースを記録する前に所有権を確認してください。現在のプール一覧だけでは、他者のリースを引き継ぐ権限の証明にはなりません。
  3. 返却の直前に、利用者を確認してください。
    • 情報源: treehouse status --json に加え、呼び出し元、ペイン、OS プロセスを実際に調査します。
    • 対象範囲: エージェント、アイドル状態のセッション、シェル、サービスとその子プロセスについて、実際の現在のディレクトリを確認します。ワークツリーパスの子孫も含めます。シンボリックリンクを解決してパス要素を比較し、接頭辞が似ているだけの兄弟パスを一致とみなさないでください。
    • 証明にならないもの: ワークスペースのチェックアウトメタデータ、タイトル、会話の文脈は、プロセスの場所を証明しません。
    • 呼び出し元: Treehouse は報告するプロセス一覧から呼び出し元とその祖先を除外するため、呼び出し元とその祖先は個別に確認してください。
    • 既知の利用者: ワークツリーを使用していることが分かっているサービスやセッションは、現在のディレクトリが別の場所にあっても利用者として扱います。
    • 使用中または不確かな場合: リースとブランチを保持し、利用者または不足している証拠を報告してください。これには、呼び出し元セッション、リース ID の欠落、関連プロセスの場所を読み取れない場合、復旧済みまたは破損したエントリ、識別情報の変更が含まれます。status は、ディレクトリを読み取れないプロセスを警告なしで省略します。プロセス一覧が空であることだけでは、ワークツリーが空である証明になりません。トポロジーを開いたままにし、精算を可能にするための遅延クリーンアップの予約や、利用者の終了は行わないでください。
  4. 対象ワークツリーの外部から、確認済みで空の対象のみを treehouse return <exact-path> --if-lease-id <recorded-id> --if-lease-holder <recorded-holder> で返却してください。作業が間に入った場合は、識別情報と利用状況を再確認してください。これらのフラグは、デタッチ、プロセス終了、リセットの前にリースをアトミックに保護しますが、利用状況や終了時のトポロジーは保護しません。明示的に対象を1つ指定してください。return --all は使用中のスロットも回収する可能性があります。
  5. 返却後:
    • 結果: コマンドの終了ステータスを確認し、結果としてのプールと Git の状態を調べてください。
    • ブランチの削除: 返却の成功が確認され、呼び出し元ワークフローのマージ証明が確認済みのブランチ先端に対して成立し、そのブランチをチェックアウトしているワークツリーが他にないことを確認した後にのみ、ブランチを削除してください。削除前に先端を再確認し、変更されていた場合はマージ証明をやり直してください。
    • 返却の失敗、中断、不確実な結果: 状態が変化している可能性があるため、ブランチを保持し、再試行する前に実際の状態を調べてください。元のリース識別情報が引き続き一致する場合にのみ、それを再使用してください。スロットがすでに利用可能、または再割り当て済みであることは、返却を再試行する理由にはなりません。 | 必要なこと | コマンド | 備考 | |---|---|---| | 作業用の永続的なワークツリー | treehouse get --lease --json --lease-holder <effort> -b <branch> | パスとリースの識別情報を返します。 | | プールを確認する | treehouse status --json | リースと、return が終了するプロセスを報告します。呼び出し元と、場所を読み取れないプロセスは除外されます。 | | 空のワークツリーを返却する | treehouse return <path> --if-lease-id <id> --if-lease-holder <holder> | リースを保護し、ワークツリーのプロセスを終了します。 | | 完全に削除する前に確認する | treehouse destroy <exact-path> | ドライランです。削除するには --yes を指定します。 |

新しいブランチ上のワークツリー

get でブランチを作成しない限り、リースされたワークツリーは detached HEAD から開始します。get --lease は先に origin をフェッチし、リモートのデフォルトブランチからワークツリーを作成します。また、-b <branch> はそのブランチから作業用ブランチを upstream なしで作成するため、最初の git push -u を実行する前に、単独の git push でデフォルトブランチへプッシュすることはできません。ブランチがすでに存在する場合、-b は失敗します。

注意点

  • リースされたワークツリーは、返却されるまで再度貸し出されたり、プルーニングされたりすることはありません。
  • return は、返却プロセスとその祖先を除き、ワークツリーを現在のディレクトリとするプロセスを終了します。そのため、外部のシェルから return を実行すると、呼び出し元のエージェントが終了する場合があります。変更の破棄が拒否された場合、または応答がない場合は、終了コード 3 で終了し、リースを維持します。その他の失敗は、デタッチまたはプロセス終了の後に発生することがあります。
  • destroy --yes は削除を実行し、--include-leased を指定すると、指定したリース対象を削除できます。destroy にはリース識別情報による保護機能がありません。実行を通じて排他的な所有権を確認できない限り、リース対象を維持し、削除前に解放時の確認を再度行ってください。
  • return は --force を指定しても無視対象ファイルを保持するため、次にワークツリーをリースする作業で、古い .scratch/ やビルド出力などが見つかることがあります。返却前に、残しておきたいものをコピーしてください。精算には通常の保護付き返却を使用してください。--force は確認なしで変更を破棄しますが、使用中のワークツリーを安全にするものではありません。
  • destroy は警告なしで、無視対象ファイルも含め、ワークツリー内のすべてを削除します。残しておきたいものは事前にコピーしてください。
  • destroy --include-in-use はプロセスを終了し、--include-unlanded は作業の破棄を許可します。精算ではこれらの対象を維持してください。これらのフラグを指定しても、セッションやサービスを終了する権限が確立されるわけではありません。
  • リース保護を指定しても、別個に実行される占有状況の確認がアトミックになるわけではありません。実行を通じて安全な所有権を確認できない場合は、対象を維持してください。

注記

このページの内容は、treehouse v3.1.0 のヘルプと、隔離された解放およびプロセスのフィクスチャを含む kunchenguid/treehouse at c099281010efda0bf82bbaf8d882528fcbed6acc を照合して確認しました。更新後に再確認してください。

コメント