mcpField
C
create-adapter

create-adapter

github.com/harbor-frameworkテスト・品質6.6k104 回インストール今日更新
リポジトリ

create-adapter について

create-adapter は、Harbor リポジトリでベンチマークアダプターを作成し始めるためのスキルです。ベンチマーク情報を集め、Harbor CLI で初期ディレクトリを生成し、実装上の判断はリポジトリのアダプターチュートリアルに委ねます。

主な機能

  1. 01最初にアダプターチュートリアルを読む
  2. 02ベンチマークとエージェントシナリオの情報収集
  3. 03Harbor CLI によるアダプターのひな形作成
  4. 04手順確認とよくある問題の案内
  5. 05シナリオ別の参考アダプター紹介

活用シーン

  1. 01Harbor でのベンチマークアダプター作成開始
  2. 02実装前のひな形作成情報の準備
  3. 03シナリオに合う既存アダプター例の検索

インストール

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

$npx skills add https://github.com/harbor-framework/harbor --skill create-adapter

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

詳細

アダプターを作成する

Harbor リポジトリで新しいベンチマークアダプターをブートストラップします。このスキルでは、harbor adapter init を使ってアダプターのディレクトリを生成し、その後の実装に関するすべての判断はアダプターのチュートリアルに従います。

参照する仕様

アダプターのチュートリアルは、このスキルにおける正式な仕様です。スキャフォールディング以外の操作を行う前に、最後まで読んでください。

adapters/ADAPTER_CONTRIBUTING.md

このパスは Harbor リポジトリのルートからの相対パスです(このスキルの前提条件については、以下を参照してください)。チュートリアルには、以下の内容が記載されています。

  • 生成するタスクとアダプターコードパッケージに必要なディレクトリ構造。
  • ベンチマークの分析、オラクルの検証、パリティ実験、データセットの登録、提出を扱う手順(ステップ 1~9)。
  • task.toml、parity_experiment.json、adapter_metadata.json、dataset.toml のスキーマ。
  • パリティのマッチング条件、事前チェックリスト、デバッグ手順。
  • README の形式ルール(機械的に解析されるため、逸脱すると自動化が機能しなくなります)。

このファイルの内容を、以前からの知識で置き換えないでください。これを仕様として扱ってください。

前提条件

  • Harbor CLI がインストールされ、PATH から利用できること(harbor --version が成功すること)。
  • 作業ディレクトリが Harbor リポジトリのルートであること。
  • Harbor のチェックアウトが最新であること:git fetch origin && git status を実行し、遅れている場合は main をプルしてください。古いチェックアウトでは、最近のアダプターやエージェントの修正が反映されず、後のパリティ検証で誤った失敗が発生する原因になります。

ワークフロー

1. チュートリアルを読む

ファイルシステムや CLI を操作する前に、adapters/ADAPTER_CONTRIBUTING.md を最後まで読んでください。特に以下の内容に注意してください。

  • Required Directory Structures — 生成するタスクとアダプターのレイアウトに関する仕様です。
  • Step 1. Understand the Original Benchmark — コーディング前に、上流プロジェクトについて特定すべき内容です。
  • Step 8. Register the Dataset → Naming rules — name フィールドと <org>/<task> 形式の要件です。
2. ユーザーからベンチマークの情報を集める

スキャフォールディングの前に、以下の情報を集めてください。ユーザーがまだ情報を提示していない場合は、作業を進める前に確認してください。これらの情報は、スキャフォールドと、その後のチュートリアルの手順に影響します。

フィールド重要な理由
アダプター名小文字で、ハイフン区切りにします。ベンチマークで一般的に使われる識別子(例:swe-bench、aider-polyglot)と一致する必要があります。adapters/ 配下のディレクトリ名になり、アンダースコアに変換された後は Python パッケージ名になります。
人が読める名前--name で渡し、生成される README に表示されます。
上流リポジトリの URLチュートリアルのステップ 1(ベンチマークの分析)と、後で設定する original_parity_repo フィールドに必要です。
オラクルソリューションの有無ベンチマークに参照ソリューションが含まれている場合は、それを使用します。含まれていない場合、オラクルソリューションは LLM で生成する必要があります(チュートリアルのステップ 3 →「Benchmarks without oracle solutions」)。
エージェントのシナリオステップ 4 のどのシナリオに該当するかを確認します:(1)互換性のある既存のエージェント、(2)フォークして LLM エージェントを追加、(3)カスタムエージェント。この選択により、パリティ計画が決まります。
3. アダプター用のブランチを作成する

チュートリアルのステップ 2 に従って、専用ブランチで作業してください。

git checkout -b <adapter-name>-adapter
4. スキャフォールドを実行する

名前が両方とも決まっている場合は、非対話形式を優先してください。

harbor adapter init <adapter-name> --name "<Human-Readable Name>"

それ以外の場合は、harbor adapter init を対話形式で実行し、CLI のプロンプトに従ってください。

期待される出力:pyproject.toml、README.md、src/<adapter_name>/、および src/<adapter_name>/task-template/ 配下のタスクテンプレートファイルを含む、新しい adapters/<adapter-name>/ ディレクトリ。続行する前に、ディレクトリが存在することを確認してください。

5. チュートリアルに引き継ぐ

チュートリアルの「Step 1. Understand the Original Benchmark」から続けてください。ガイドに記載されていない構成、フィールド名、ワークフローを作り出さないでください。

特に注意すべきポイント(いずれもチュートリアルに記載されていますが、アダプター構築で最もよくある失敗です。手順を進める際は、あらかじめ確認してください):

  • 生成されるすべての task.toml で、[task] の下に name フィールドを含める必要があります。 main.py は、各タスクに対してサニタイズ済みで、一意かつレジストリで使用可能な名前を決定する役割を担います。name のないタスクは登録できません。チュートリアルの「Naming rules」テーブルを参照してください。
  • タスク名はアダプターの実行間で安定している必要があります。 不安定な名前を使うと、再公開時にレジストリのダイジェストが変わり続けます。アップストリームに安定した識別子がない場合は、再現可能なソートに基づき、決定論的な命名規則(例:{dataset}-1、{dataset}-2)を付けてください。
  • task.toml の先頭で schema_version = "1.4" を使用してください。 パッケージのバージョンは、task.toml の [task].version と dataset.toml の [dataset].version で個別に設定します。希望するレジストリータグがあれば、PR の説明でリクエストしてください。
  • main.py は --output-dir、--limit、--overwrite、--task-ids に対応する必要があります。 再現可能な実行とタスク単位のデバッグに、これらのフラグが必要です。
  • 生成される README.md は、下流の自動化によって解析されます。 テンプレートの定義に従って、すべてのセクションを正確に記入してください。補足情報は Notes セクション、または parity_experiment.json/adapter_metadata.json の notes フィールドに記載してください。セクションの追加、名前の変更、並べ替え、削除はしないでください。
  • 独断でパリティ実験を実施しないでください。 チュートリアルの Step 4 では、API の費用が発生する前に、エージェント、モデル、実行回数についてチームで調整する必要があります。まず健全性チェックを完了し、両側で対称的にフル実行を行ってください。

シナリオ別の参照アダプター

実装について疑問が生じたら、ベンチマークの形式に合った既存のアダプターを参照してください。

シナリオアダプターの例使用する状況
互換性のあるエージェントがすでに存在するadapters/adebench/アップストリームがすでに Claude-Code/Codex/OpenHands/Gemini-CLI に対応している場合
アップストリームをフォークして LLM エージェントを追加するadapters/evoeval/Harbor 互換のエージェントがない LLM ベースのベンチマーク
カスタムエージェントと別個のデータセットadapters/bixbench/、adapters/financeagent/独自のインタラクション仕様が必要な場合。financeagent では LLM-as-a-Judge も紹介します
インプレースのカスタムエージェントadapters/medagentbench/別個のデータセットを使わない、カスタムの HTTPAgent
マルチエージェントのワークフローadapters/cooperbench/複数のエージェントがメッセージング/サイドカーを介して連携する場合
GPU タスクadapters/featurebench/Docker と Modal を包括的に使った GPU の例

このスキルの対象外

  • adapter.py、main.py、タスクテンプレートファイルの実装。これらは、チュートリアルのガイドに従ってコントリビューターが作成します。
  • オラクル検証またはパリティ実験の実行。これらにはユーザーの明示的な意思が必要です。また、パリティ実験にはチームでの調整も必要です。
  • データセットの公開または PR の作成。これらはチュートリアルの後の手順です。

失敗しやすいケース

症状考えられる原因対処方法
harbor: command not foundHarbor CLI がインストールされていないuv tool install harbor またはリポジトリの開発環境セットアップでインストールしてください。
harbor adapter init が名前の検証エラーで失敗するアダプター名に無効な文字が含まれている小文字とハイフンのみを使った名前で再実行してください。
スキャフォールドの作成は成功するが、adapters/<name>/ が存在しないリポジトリのルート以外から実行しているHarbor リポジトリのルートに cd して、再実行してください。
オラクルはローカルで成功するが、後からパリティ実験が理由なく失敗するHarbor のチェックアウトが古いgit fetch origin && git status を実行し、遅れている場合は main をプルしてください。

コメント