エージェントのために設計 · MCP · CLI · OpenAPI

Webhookエージェントのためのコントロールプレーン

すべてのskillhookマシンを1か所で確認し、操作できます。Webhook、エージェントのジョブ、エージェントが回答を待っている質問、ヘルスと統計を扱い、再実行、リモート実行、マシンのスリープ中も配信を保持するホスト型Webhook URLを利用できます。

skillhookをインストールしたマシンでコマンドを1つ実行します。コードはダッシュボードに表示されます。

マシンがプルする

クラウドからマシンを呼び出すことはありません。

72 時間

ホスト型の配信はスリープ中のマシンを待ちます。

56 個のツール

MCP、REST、CLIで同じ操作を利用できます。

RFC 9457

すべてのエラーにコードとリクエストIDがあります。

仕組み

マシンにはパッケージ1つ、外向きの接続1本

skillhookはマシンを、Agent Skillsを実行するWebhookエンドポイントにします。Skillhook Cloudは、それらすべてのマシンが報告する場所です。

01
skillhookをインストールしてペアリング
npm install -g @meterapp/skillhook を実行し、続けてダッシュボードに表示されるペアリングコマンドを実行します。マシンはクラウドへの外向きのロングポーリングを維持し、ポートを開きません。監視モードでは報告のみを行い、制御モードではクラウドがコマンドをキューに入れられます。最終的な判断はマシン自身の許可リストと拒否リストが行います。
02
Webhookが届き、エージェントが動く
送信元はマシン自身のURLまたはホスト型URLにPOSTします。マシンは署名を検証し、スキルの SKILL.md をClaude Code、Codex、またはシェルコマンドで実行し、ジョブを報告します。ステータス、結果、コスト、出力、そして途中で止まった質問があればその質問です。
03
確認して操作: ダッシュボード、API、MCP、CLI
組織のすべてのマシンを一か所で管理できます。エージェントへの回答、配信のリプレイ、スキルの実行やテスト、失敗したヘルスチェックとその修正方法の確認が可能です。各操作はマシンが次回の同期で受け取るコマンドとして送られ、オフラインのマシンに対しては最大 10 分待機します。

表示される内容

ダッシュボードに表示される概要

すべてのマシンの直近24時間と、まず人の対応が必要なものを表示します。

サンプルデータ
オンラインのマシン
3/3
すべてのマシンがポーリング中です
対応が必要
1
エージェントが人の対応を待っています
ジョブ
42
成功 39 · 失敗 2 · $4.12
配信
118
受理 116 · 拒否 2
ジョブ
新しい順、すべてのマシン。
triagemac-mini

GitHubからのWebhook · 4分待機中 · 「重複している2件のIssueもクローズしますか?」

対応が必要
deploybuild-box

CIからのWebhook · 2分14秒 · $0.31

成功完了
nightly-reportbuild-box

スケジュール · 38秒実行中

実行中

ホスト型Webhook URL

常に起動しているとは限らないマシンのためのURL

ノートPC上のマシン、NATの内側にあるマシン、夜間にスリープしているマシンには、送信元が到達できるアドレスがありません。このサービス上のホスト型Webhook URLが、代わりにWebhookを受け付けます。

配信は届いた瞬間にAES-256-GCMで封印され、マシンの次の同期まで最大 72 時間待ちます。マシンは自身のシークレットで送信元の署名を検証します。クラウドがWebhookのシークレットを保持することはなく、マシンが受信を確認した配信は削除されます。

SlackのURL検証には即座に応答するため、まだ起動していないマシンにもSlackアプリを向けられます。

3つのステップ
ダッシュボードから最初の配信まで。
有効にする

ホスト型URLでスキルを選び、有効にします。ダッシュボードにURLが表示されます。もう一度有効にすると新しいURLが作られ、古いURLは使えなくなります。

送信元にURLを貼り付ける

GitHub、Sentry、Slack、Zapierなど、JSONをPOSTするものなら何でも使えます。送信元のシークレットは、直接のURLと同じくマシン上に残ります。

マシンのスリープ中、配信は待機する

各配信は届いた時点で封印され、最大 72 時間保持されます。次の同期でマシンが受け取り、署名を検証してスキルを実行します。

Webhook履歴と再実行

すべての Webhook を保存し、再実行可能に

マシンが受信したすべてのリクエストが記録されます。受け付け、拒否(理由と HTTP ステータス付き)、フィルターによるスキップ、重複排除のいずれも残ります。記録は組織が存在する限り保持されます。リプレイに必要な本文は、プランの保持期間中だけ保存されます(Free では 7 日間、Enterprise では最長 365 日間)。

送信元の配信ID、理由、パス、アドレス、期間で検索できます。ダッシュボード、API、MCPサーバー、CLIから再実行できます。現在のスキルを通して、失敗したチェックやフィルターを越えて実行します。

別の場所でも実行できます。同じ本文を別のマシンや別のスキルで新しい実行として扱えます。またCLIからは、保存されたWebhookを任意のURLへ送信できます。ステージングサーバー、書き直したスキル、テストなどです。

4つのステップ
失敗したWebhookから修正済みのスキルまで。
見つける

配信を開き、送信元が表示するID、またはマシンが示した理由で探します。期間で絞り込めます。エージェントの場合は list_deliveries {q, since, until} で同じことができます。

理由を読む

結果、HTTPステータス、理由、秘匿化されたヘッダー、本文を確認できます。本文はテキストとして表示され、レンダリングされることはありません。

再実行する

現在のスキルを通して実行します。force で失敗したチェックを越え、skip_filters でwhenフィルターを越えます。ダッシュボードならボタン1つ、APIやMCPなら呼び出し1回、ターミナルならコマンド1つです。

または別の場所で実行する

配信のページまたは replay_delivery {machine, skill} から、別のマシンや別のスキルで実行します。あるいはターミナルから skillhook send で保存された本文を任意のURLに送ります。

活用例

Webhookが届き、ジョブが動き、人が必要なところだけ人が関わる

私たち自身のセルフヒールループと、6つの具体的なプレイブック。それぞれに、エージェントで設定するためのプロンプトと、実行される SKILL.md が付いています。誠実に表記しています。推薦の声も、作り上げた数字もありません。

Our own use
A Sentry alert posts to a hosted URL. The machine collects it, the skill finds the cause, lands a small tested fix through a pull request, checks it in production, and asks a person only for what is theirs.
Trigger: A Sentry alert, and a sweep every three hoursLands alone: A small fix with a test that failed before itAsks a person for: Migrations, environment, billing, the loop itself
A worked playbook
Notes become actionable tasks. Your agent starts authorized work, reports what it completed and what is still running, and pauses for your input or approval. See an illustrative ten-task recap and the Granola notes and follow-ups playbook.
Trigger: Granola's note.generated webhookBefore sending: Approve the draft and exact recipientsAsks a person when: An owner or a due date is unclear
A worked playbook
Every new issue gets a run. A small, well-specified one gets a fix on a branch and a pull request; the rest get a triage comment with findings and questions. Design questions go to a person, and nothing merges without one.
Trigger: GitHub's issues webhook, action openedMerges: Nothing without a personAsks a person for: Design questions, with the options as buttons
A worked playbook
A customer writes in. The skill looks at the logs, Sentry and the database before it drafts an answer; it replies through Intercom when the answer is certain, and otherwise leaves an internal note and asks a person in the inbox: send the draft, edit it, or escalate.
Trigger: Intercom's conversation webhooksReplies alone when: The answer is certain from what it foundOtherwise: An internal note, and the draft as a choice in the inbox
A worked playbook
A dispute arrives with a deadline. The skill collects the customer, the invoices, the access and usage logs, the correspondence and the delivery records, writes the evidence up, submits it through the API when it is complete, and asks a person first when it is thin or the amount is large.
Trigger: Stripe's charge.dispute.created eventSubmits alone when: The evidence is complete and the amount smallAsks a person when: The evidence is thin or the amount is large
A worked playbook
A new lead gets a first reply with real context about what they asked. Every later message in the thread gets an answer, deduplicated by message id, the CRM is updated, and a person is asked before any pricing exception, promise or legal question. It stops when a person says so.
Trigger: A form, CRM or inbound-email webhookDeduplicated by: The message id, in skillhook and in the CRMAsks a person before: Pricing exceptions, promises and legal questions
A worked playbook
Every webhook a machine received is on record in the cloud, with the reason when it did not run. Filter them, replay one through the skill as it is now, run its body on another machine or skill, send it to any other location from the CLI, and test a SKILL.md before it is saved.
On record: Every delivery, with its outcome and reasonBody kept: 7 to 365 days, by planReplay: As the skill is now; force and skip_filters when needed

エージェントが第一のクライアント

ダッシュボードでできることはすべて、エージェントが呼び出せる操作として

1つのカタログがホスト型MCPサーバー、REST API、CLIを支えています。エージェントは人と同じものを見て、同じ方法で操作します。マシンが引き続き検証するコマンドを通してです。

/api/mcp のホスト型サーバー。Streamable HTTP、ステートレス、Bearerキー1つ。キーにはそのスコープで許可されたツールが提供され、describe_cloud がエージェントにどこから始めるかを伝えます。
POST https://skillhook.dev/api/mcp
skillhook 0.7.0 はターミナルからカタログ全体を実行します。マシン、ジョブ、回答、再実行、統計です。ログインは一度だけで、キーは ~/.skillhook/.env に保存され、表示されることはありません。
skillhook cloud answer_job <job> "yes" --option yes
すべてのRESTルートとカタログのすべての操作を、スキーマとともに1つのドキュメントにまとめています。クライアントを生成するか、Postmanやエージェントフレームワークにインポートできます。
GET https://skillhook.dev/openapi.json
サービスの内容と使い方を、モデル向けに書いたものです。llms-full.txt は長い版です。agents.md はキーを持つエージェントのための運用ガイドです。
curl https://skillhook.dev/llms.txt
skillhookのリポジトリがそのままプラグインです。このマシンと組織の2つのMCPサーバーを登録し、フリートのトリアージと運用をエージェントに教えるスキルを追加します。
/plugin install skillhook@meterapp-skillhook
カスタムGPTは openapi.json をBearer認証でインポートし、すべての操作をアクションとして利用できます。claude.aiとChatGPT向けの、サインイン付きチャットコネクターは近日提供予定です。
Import https://skillhook.dev/openapi.json

人の対応が必要なもの

エージェントが質問し、クラウドが誰かに確実に届ける

エージェントは止まって質問します。判断が必要なスキルは質問で実行を終えます。ダッシュボードの受信トレイに選択肢がボタンとして表示され、アラートが送られます。回答は待機中の実行に届けられるか、その回答でエージェントのセッションを再開します。

ダッシュボード、API、MCPサーバー、CLIから回答できます。各アラートは原因ごとに一度だけ開きます。ダッシュボードから手動で、または dismiss_alert で解除できます。

4種類のアラート
それぞれが対象のマシン、ジョブ、チェックを示します。
エージェントが人の対応を必要としていますneeds_human

スキルが質問で実行を終えました。人、またはキーを持つエージェントが回答するまで、ジョブは受信トレイで待機します。

マシンがオフラインになりましたmachine_offline

マシンがポーリングを停止しました。キューに入ったコマンドは 10 分、ホスト型の配信は 72 時間待機します。

ジョブが失敗しましたjob_failed

ジョブが失敗しました。失敗の種類、出力、成果物はジョブで確認できます。原因を修正したら再実行してください。

ヘルスチェックが失敗していますhealth_failing

マシンのヘルスチェックが失敗しています。チェックが修正方法を示します。

チャンネルSlack署名付きWebhook(Standard Webhooks)メール

料金

マシン数台なら無料、フリートが大きくなったらプランを

どのプランでも、ダッシュボード、API、MCPサーバー、CLIを含む製品全体を利用できます。違いは、扱えるマシン、人、ホスト型URL、配信の数です。

Free
1人で、マシン数台

$0

  • マシン 2台、3人
  • ホスト型Webhook URL 3個、ホスト型配信 月1,000件
  • 再実行、リモート実行、エージェントへの回答
Pro
チームとそのフリート

$29 / 月

  • マシン 10台、10人
  • ホスト型Webhook URL 25個、ホスト型配信 月50,000件
  • Freeのすべての機能
Business
多数のマシン、多数の送信元

$99 / 月

  • マシン 50台、50人
  • ホスト型Webhook URL 250個、ホスト型配信 月500,000件
  • Proのすべての機能

よくある質問

最初によく聞かれる質問

マシンをペアリングして、最初のWebhookを確認

マシン 2 台までは無料。フリートが大きくなったらプランを。クラウド側にインストールするものはありません。