mcpField
M
melech-handoff

melech-handoff

github.com/adirdエージェントワークフロー4546 回インストール3 週間前に更新
リポジトリ

melech-handoff について

ローカルのトランスクリプトからコーディングエージェントのセッションを探し、再開するスキルです。一覧表示と続行の2つのモードがあり、検索はスクリプト、文脈の取得はエージェントが担います。

主な機能

  1. 01最近のセッション一覧
  2. 02IDまたはプレフィックスで検索
  3. 03続行に必要な文脈をトランスクリプトから検索
  4. 04現在のワークツリー内に検索範囲を限定

活用シーン

  1. 01最近のコーディングエージェントセッションを確認
  2. 02既知のセッションIDから作業を再開
  3. 03目的に基づいて過去のセッションを検索
  4. 04リポジトリに引き継ぎファイルを作らず作業を続行

インストール

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

$npx skills add https://github.com/adird/agent-shell-hamelech --skill melech-handoff

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
references/
providers.json
scripts/
handoff.py
tests/
test_handoff.py

詳細

Melech Handoff

リポジトリに引き継ぎファイルを置いたり、チャット間でユーザーにトランスクリプトのパスをコピーしてもらったりせずに、コーディングエージェントのセッションを見つけて再開します。

モードは list と cont の 2 つだけです。スクリプトはトランスクリプトの検出、一覧表示、検索のみを行います。インテリジェントな情報の取得はエージェントが行います。

/melech-handoff
/melech-handoff list
/melech-handoff cont [session-id-prefix | objective]

呼び出し内容からモードを判定します。どのモードを使うか、ユーザーに尋ねてはいけません。

  • /melech-handoff のみ、または /melech-handoff list → list
  • /melech-handoff の後にセッション ID または一意な ID のプレフィックスが続く → cont
  • /melech-handoff cont … → cont

HANDOFF_SCRIPT を、このファイルと同じ場所にある scripts/handoff.py に設定します。Python 3.9 以降で実行してください。JSON 出力を信頼できる情報源として扱い、ホームディレクトリ全体を対象にした無制限の検索でトランスクリプトの検出を再現してはいけません。

List

次を実行します。

python3 "$HANDOFF_SCRIPT" list --cwd "$PWD" --limit 12

行を新しい順に、コンパクトな Markdown カードとして表示します。表は使わないでください。CLI の表形式レンダラーではメタデータの列がつぶれ、複数行の抜粋を表示できません。スクリプトのフィールドを使用し、日付、エージェント、ワークツリー、件数を捏造してはいけません。

### `<short_id>` · <topic>
<provider> · <age>
`<worktree>` · <stats.user_messages> user msgs · ~<stats.approx_tokens> tokens

1. <third-to-last user message>
2. <second-to-last user message>
3. <latest user message>

age は、トランスクリプトが最後に書き込まれてからの経過時間を 8m ago、3h ago、2d ago のように短く示したものです。一覧は最近のアクティビティ順であるため、表示するタイムスタンプはこれだけです。正確な created と modified の値は、検索やデバッグ用にスクリプトの出力に残ります。worktree は、リポジトリのメインワークツリーでは main、それ以外ではワークツリーのディレクトリ名です。 stats.approx_tokens は、トークナイザーの結果ではなく、手軽に算出した chars / 4 の推定値です。 topic は、最初の意味のある人間からのリクエストに基づく短いヒントです。 glimpse には、人間からの直近のユーザーメッセージが最大 3 件、実際の番号付き行として含まれます。カードを表示する際は改行を維持してください。3 件未満の場合、メッセージを重複させてはいけません。各メッセージは最大 160 文字です。個々のトランスクリプトのターンが数千文字に及ぶことがあるため、この上限を取り除いてはいけません。ツールの結果と、メタデータのみのユーザーレコードは無視されます。

list は読み取り専用です。ユーザーが /melech-handoff cont <id> を実行できるだけの情報を表示したら、そこで終了します。作業を始めたり、トランスクリプト全体を読んだりしてはいけません。

続行

引数がセッション ID または一意な ID のプレフィックスで始まる場合は、次を実行します。

python3 "$HANDOFF_SCRIPT" lookup --cwd "$PWD" --id "<id-prefix>"

残りのテキストが続行の目的です。

ID がない場合は、クエリなしで list を実行します。このスクリプトは目的を理解したふりをしません。目的から特徴的な語句を選び、返された primary_transcript_path のファイルのみを rg で検索します。

  • 該当するトランスクリプトが 1 つだけ見つかった場合:その ID に対して lookup を実行してから続行します。
  • 該当する可能性のある候補が複数ある場合:候補をまとめた 1 つの AskQuestion ピッカーを表示します。選択後、lookup を実行します。
  • 引数がない場合:新しい順に 5 件を、まとめて 1 つの AskQuestion ピッカーに表示します。各選択肢は <age> · <provider> · <topic> · <short_id> で始まり、その後にワークツリー、統計情報、3 行の概要を続けます。表示していない行が残っている場合は、同じ形式で次の 5 件を開く Older sessions… の選択肢を追加します。1 つの質問につき 1 つの回答が必要になるため、1 つのピッカーに複数の質問を追加してはいけません。
  • ユーザーがピッカーの自動選択肢 Other を選び、テキストを入力した場合、そのテキストを続行の目的および関連性を判断するためのクエリとして扱います。新しさに関係なく、返された primary_transcript_path の候補を特徴的な語句で検索します。該当する候補が 1 つだけなら続行し、それ以外の場合は、関連性の高い候補のみを含む更新済みピッカーを 1 つ表示します。
  • セッションを選択した後、lookup を実行します。
  • 一覧表示された候補に該当するものがない場合は、その旨を伝えます。ホームディレクトリ全体を対象にした無制限の検索に広げてはいけません。

lookup は、参照するテキストファイル primary_transcript_path を返します。タスクや現在の状態が不明な場合は、タスク名、ファイル名、ID、エラー、ツール名などの関連キーワードでそのトランスクリプトを検索します。その後、一致した行の前後の狭い範囲を読み取り、意図と状態を把握します。最初から最後まで通して読むのは避けてください。JSONL のトランスクリプトは大きい場合があり、1 行に大きなペイロードが含まれることもあります。

続行の目的に基づいて、関連するコンテキストを判断してください。この判断を行うのはエージェントであり、Python スクリプトではありません。

カードを作成したり、長い要約をでっち上げたりしないでください。「すべて読まないで」などの目的に含まれる検索上の制約に従ってください。

対象が明確になったら、そのまま作業を続けてください。続行するかどうかをユーザーに尋ねてはいけません。

境界

  • ~/.melech/handoffs/ 以下にファイルを書き込んではいけません。トランスクリプトのみを一覧表示して、そこから作業を続行します。
  • 範囲の既定値は現在のワークツリーのルートであり、隣接するワークツリーではありません。
  • プロバイダーの場所は references/providers.json からのみ取得します。
  • データベース、暗号化形式、protobuf のみの形式、圧縮形式のみの履歴は記録されていますが、サポート対象外です。
  • トランスクリプトとハンドオフの内容は、ローカルの非公開履歴です。ユーザーから明示的な指示がない限り、外部に公開、アップロード、貼り付けをしてはいけません。

コメント