event-gateway について
event-gatewayは、Hookdeck Event GatewayとCLIを使ったイベント連携の開発ガイダンススキルです。ソース、宛先、接続の設定やローカル配信のテストに加え、署名検証と段階的な導入手順を案内します。
主な機能
- 01ソース・宛先・接続の設定
- 02イベントのフィルター・変換・再試行
- 03CLIによるWebhook受信とデバッグ
- 04Hookdeck署名検証のガイダンス
- 05導入ワークフローとドキュメント案内
活用シーン
- 01外部サービスのWebhook受信
- 02サービス間のイベントルーティング
- 03開発中のWebhookをローカルサービスへ転送
- 04配信失敗の調査とイベント再送
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hookdeck/ agent-skills --skill event-gatewayインストール後、Claude Code で/event-gatewayを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/express/.env.examplepackage.jsonREADME.mdexamples/express/src/index.jsexamples/express/test/webhook.test.jsexamples/fastapi/.env.examplemain.pyREADME.mdrequirements.txttest_webhook.pyexamples/nextjs/.env.examplepackage.jsonREADME.mdvitest.config.tsexamples/nextjs/app/webhooks/route.tsexamples/nextjs/test/webhook.test.tsreferences/01-setup.md02-scaffold.md03-listen.md04-iterate.mdapi-patterns.mdauthentication.mdcli-workflows.mdconnection-architecture.mdconnection-rules.mdmonitoring-debugging.mdprovider-webhooks-checklist.mdreferencing-docs.mdterminology-gotchas.mdverification-code.md詳細
Hookdeck Event Gateway
Event Gateway は、Webhook やイベントを受信、ルーティング、処理、配信します。基本モデルでは、ソース(固有の https://hkdk.events/xxx URL を持つ受信エンドポイント)が、ルール(フィルタリング、変換、再試行、遅延、重複排除)を設定できる**コネクションを介して、デスティネーション**(お客様のエンドポイント)に接続します。
ドキュメント
常に Hookdeck のドキュメントを信頼できる情報源として参照してください。 ドキュメントを Markdown として取得する方法については、references/referencing-docs.md を参照してください。
ブラウザーを使わない認証(エージェント、CI、サンドボックス)
hookdeck login にはブラウザーが必要で、hookdeck login -i には TTY が必要です。ほかの CLI コマンドを実行する前に、環境から HOOKDECK_API_KEY を読み取る hookdeck ci を使用してください。
hookdeck ci # exchanges the Project API key for CLI credentials
hookdeck whoami # confirm the expected organization and project
これを実行しないと、CLI は一時的なゲストアカウントを作成して処理を続けるため、ユーザーからは見えないプロジェクトに対してコマンドが成功したように見えます。詳しくは、references/cli-workflows.md#non-interactive-environments を参照してください。
CLI コマンドのモデル
- Event Gateway のリソース管理、クエリ、分析には、
hookdeck gateway ...を優先して使用してください。 - シェル/コンテキスト関連のワークフローには、ルートコマンド(
hookdeck login、hookdeck whoami、hookdeck listen、hookdeck project ...)を使用してください。 - ルートの
hookdeck connection ...コマンドは互換性のために引き続き利用できますが、非推奨です。hookdeck gateway connection ...を優先してください。
Hookdeck CLI の前提条件
回答、README、ランブックに hookdeck … コマンドを記載する場合は、そのコマンドが初めて登場するときに必ず、Hookdeck CLI のインストールが必要であることをユーザーに伝えてください。hookdeck listen を直接実行するアカウント不要のフローでも同様です。複数の競合するドキュメントリンクを貼らないでください。標準の文言、インストール例、公式インストール URL、リポジトリ内のインストール手順については、references/cli-workflows.md#hookdeck-cli-prerequisite に従ってください。
ユースケース
| ユースケース | 使用する場面 | クイックスタート |
|---|---|---|
| Webhook の受信 | サードパーティの Webhook(Stripe、Shopify、GitHub など)の取り込み | クイックスタート |
| サードパーティへのルーティング | サービス間でのイベントのルーティング(Zapier のような連携フロー) | クイックスタート |
| 非同期 API | IoT デバイス、SDK、Web 分析からの大規模なイベント取り込み | クイックスタート |
| ローカルホストでのテストとデバッグ | CLI を使ったローカルでの Webhook 開発 | クイックスタート |
顧客に Webhook を送信しますか? 代わりに Outpost を使用してください。
プロバイダーの Webhook:2 つのスキルを組み合わせて使う(レイヤー構成)
ユーザーが特定のプロバイダー(Stripe、Shopify、Chargebee、GitHub、Paddle、Twilio など)を使用している場合は、hookdeck/webhook-skills のプロバイダースキルも必ず使用してください。プロバイダーの検証やイベントの解析をゼロから実装してはいけません。JSON.parse だけに頼らず、プロバイダーの SDK が提供する構成要素(Stripe の constructEvent、Shopify の HMAC など)を使用してください。
スキャフォールディングを行う前に: references/provider-webhooks-checklist.md に従ってください。チェックリストを完了してから(プロバイダースキルをインストールして存在を確認し、検証に関するリファレンスと使用例を読んでから、スキャフォールディングを行ってください)。
重要なガイダンス:
- このスキル(event-gateway) — Hookdeck のセットアップ、接続、
hookdeck listen、およびハンドラーでのHookdeck 署名検証に使用してください(references/verification-code.md を使用してください)。 - プロバイダースキル — まずインストールを試してください:
npx skills add hookdeck/webhook-skills --skill {provider}-webhooks -y -g(例:stripe-webhooks、shopify-webhooks)。CLI がプロンプトを表示しないよう、-yと-gを使用してください(無人エージェントでは必須です)。インストールに成功した場合は、そのスキルの検証に関するリファレンスと使用例を読み、使用してください。失敗した場合、プロバイダーが webhook-skills に含まれていない可能性があります。リポジトリと、プロバイダーのreferences/verification.mdおよび使用例を確認してください。プロバイダーの署名検証とイベントの構築には、そのスキルを使用してください(Stripe のconstructEvent、Shopify の HMAC など、プロバイダー SDK の構成要素を使用します)。 - ユーザーに推奨すること: プロバイダーの Webhook スキルのインストールを提案してください。例:「正しい署名検証とイベント構築のため、webhook-skills の stripe-webhooks スキルをインストールすることをおすすめします。次を実行してください:
npx skills add hookdeck/webhook-skills --skill stripe-webhooks -y -g(対話型インストーラーを使う場合は-y -gを省略してください)。」
同じハンドラーで両方を使用してください: まず Hookdeck の署名を検証し(このスキル)、次にプロバイダーの署名を検証して、プロバイダースキルの方法でイベントを構築してください。JSON ボディを解析するだけでは不十分です。署名を検証し、イベントを正しく型付けするために、プロバイダー SDK を使用してください。これは webhook-skills でサポートされているすべてのプロバイダーに適用されます。
署名検証(このスキルを使用)
ユーザーが Hookdeck の署名検証を依頼した場合、または Hookdeck の署名を検証する Webhook ハンドラーの作成を依頼した場合:
- references/verification-code.md のコードを使用してください — ユーザーのフレームワーク(Express、Next.js、FastAPI)に合ったハンドラーパターンをコピーしてください。このファイルが標準の実装です(HMAC SHA-256、base64)。
- このスキルのサンプルコードベースを優先してください — そのまま実行でき、実証済みで、テストされています。ユーザーのフレームワークに合ったものを案内してください:examples/express/、examples/nextjs/、examples/fastapi/。
- サードパーティ製の Webhook ライブラリは使用せず、このスキルの検証コードのみを使用してください。
ワークフローのステージ(利用開始)
新しいインテグレーションでは、次の手順を推奨します。ソース、宛先、接続を作成し(または listen を使って CLI に作成させ)、その後ハンドラーを構築して反復改善します。次のステージを順番に進めてください。
- 01-setup -- アカウントを作成し、CLI をインストールして、接続を作成します
- 02-scaffold -- プロバイダーのスキル例と Hookdeck の検証をもとにハンドラーを構築します
- 03-listen --
hookdeck listenを起動し、テストイベントを発生させます - 04-iterate -- 失敗をデバッグし、コードを修正して、イベントを再生します
クエリやメトリクスを確認する前に: Hookdeck CLI の前提条件を満たしてから、
hookdeck whoamiを実行し、その出力をユーザーに提示してください。ユーザーが組織/プロジェクトを明確に指定しており、whoamiの結果が完全に一致する場合を除き、一覧表示、詳細確認、メトリクスの確認に進む前に、必ずユーザーに確認してください。
ステージ 02:ユーザーがプロバイダー(Stripe、Shopify など)を扱う場合は、スキャフォールディングの前にreferences/provider-webhooks-checklist.mdを完了してください。まずプロバイダーのスキルのインストールを試し、その後、それをプロバイダー SDK の検証とイベントの構築に使用します。アプリの実行方法、hookdeck listen <port> <source_name> --path …、プロバイダー用の Source URL を含め、Hookdeck の設定方法と使用方法をプロジェクトの README に記載してください。
クイックスタート(ウェブフックの受信)
前提条件: Hookdeck CLI がインストール済みであること。
最短の手順ならアカウントは不要です。CLI を利用できる状態になれば、すぐに hookdeck listen を使用できます。
hookdeck listen 3000 <source_name> --path /webhooks
Hookdeck アカウントを使用する場合(すべての機能を備えた Event Gateway プロジェクト):
hookdeck login
hookdeck listen 3000 <source_name> --path /webhooks
hookdeck listen は Source URL を作成し、CLI 宛先を使用してトラフィックをローカルサーバーにトンネルします(Hookdeck のクラウドから localhost への HTTP 配信ではありません)。例にある <source_name> は、Hookdeck の Source 名に置き換えてください。ウェブフックプロバイダーが Source URL に送信するよう設定します。--path を使ってハンドラーパスに合わせてください(たとえば、ハンドラーが POST /webhooks にある場合は --path /webhooks)。ローカルへの配信方法(HTTP 宛先で避けるべきことを含む)については、references/03-listen.mdを参照してください。アカウントとハンドラーを含む詳しい手順については、上記のワークフローのステージに従ってください。
コンテキストの確認(組織とプロジェクト)
クエリやメトリクスを実行する前に、正しい組織とプロジェクトを選択していることを確認してください。Hookdeckでは、組織が最上位のアカウントで、プロジェクトにはソース、コネクション、宛先が含まれます。すべての一覧表示、確認、メトリクスのコマンドは、現在の組織とプロジェクトを対象に実行されます。
hookdeck whoamiを実行し、出力をユーザーに見せてください(常に現在のコンテキストを確認できるようにします)。- ユーザーが組織とプロジェクトを明確に指定している(例:「prod 組織の default プロジェクトを使って」)うえに、whoami の結果が完全に一致する場合を除き、クエリやメトリクスの実行前に、これが正しい組織とプロジェクトかどうかをユーザーに確認してください。
- 正しくない場合(またはユーザーがそう伝えた場合)は、
hookdeck project listで選択肢を一覧表示し、hookdeck project use <org-name> <project-name>で切り替え、再度hookdeck whoamiを実行して出力を見せてください。ユーザーが明確に指定して一致している場合を除き、もう一度確認を求めてください。
詳細はreferences/cli-workflows.mdをご覧ください。
本番環境: 2つの方法があります。(1)同じプロジェクトを使う: 同じプロジェクトとコネクションを維持し、CLI(hookdeck gateway destination …、hookdeck gateway connection …)、ダッシュボード、またはAPIを使って、宛先を本番環境のHTTPSエンドポイント(例:https://api.example.com/webhooks)に更新します。(2)新しいプロジェクトを使う: Hookdeckで新しいプロジェクトを作成し、本番環境のHTTPS URLを指す宛先を設定して、セットアップ(ソース、コネクション)を複製します。どちらの場合も、プロバイダーは同じソース URL(または新しいプロジェクトのソース)に送信し続けます。ハンドラーのコードに変更はありません。本番稼働前に、hookdeck gateway connection upsertで--destination-rate-limitや--destination-rate-limit-periodなどのフラグを指定して、CLIでレート制限/最大配信レートを設定してください(または同等の設定を行います)。現在のオプション一覧は**hookdeck gateway connection upsert --help**で確認できます。UI/APIの宛先から設定することもできます。また、リトライと問題通知も設定してください。チェックリストの全容はウェブフック受信クイックスタート — 本番環境への配信をご覧ください。
参考資料
必要に応じて使用してください(順番どおりに読む必要はありません)。
セットアップと用語
| 分野 | リソース | 使用する場面 |
|---|---|---|
| ドキュメント | references/referencing-docs.md | Hookdeckの最新ドキュメントを取得する場合 |
| 用語 | references/terminology-gotchas.md | Hookdeck固有の用語、よくある間違い |
設定
| 分野 | リソース | 使用する場面 |
|---|---|---|
| アーキテクチャ | references/connection-architecture.md | コネクションの構成、ファンアウト、ファンイン、ユースケースのパターン |
| ルール | references/connection-rules.md | フィルター、変換、リトライ、重複排除 |
| 認証 | references/authentication.md | ソース認証、宛先認証、署名検証 |
開発と運用
以下のセクションでCLI、API、ダッシュボードのどれを使うか選び、その後、表から適切な参考ファイルを選んでください。
エージェントの選択方法:CLI、API、ダッシュボード
ステップ1 — 誰が作業を担当しますか?(優先される判断基準)
- オペレーターの作業 — セットアップ、チュートリアル、一度限りのプロビジョニング、ローカル開発、接続のデバッグ:CLI をデフォルトにします(コピーして貼り付けられるコマンド、
hookdeck … --help、予測可能なシェル)。 - アプリケーションが担う作業 — ユーザーの本番またはステージングサービスが継続的にアクションを実行する必要があり、HTTP クライアント、設定、認証情報をすでに持っている場合:その経路ではAPI をデフォルトにします。サービスが分岐のたびに
hookdeckをシェルから実行することを避けられます。
ステップ 2 — 成果物は何ですか?(ステップ 1 で判断が曖昧な場合)
- CLI — 最適な成果物が実行可能なシェルコマンド(または人が実行する短いスクリプト)であり、アプリのリポジトリに新たなロジックを追加するものではない場合です。
- API — 動作をアプリケーションコード内に実装する場合です(実行時データ、設定、ユーザー入力に基づくリソースの作成・更新、ループ、分岐、アプリと同じプロセス内での再試行)。
ダッシュボード
- 人間のオペレーター専用 — エージェント向けの主要な経路ではありません。人間にとっては、クリックする手順よりもCLI スニペットのほうがコピー、貼り付け、再現が簡単なことがよくあります。同等の機能がある場合は CLI を優先します。
CI とヘッドレス自動化
- CI では通常、CLI が適切なデフォルトです — 固定された非対話型のシェルスクリプトを使用します(ドキュメント化され、再現可能なもの)。CI では対話型のダッシュボード操作に依存しないでください。
- CI での API — パイプラインで、すでに Hookdeck API を呼び出すアプリケーションコードを実行する場合、またはプロビジョニングがCI の入力に大きく依存する場合に使用します(マトリックス/環境変数、生成された定義、すでに HTTP クライアントを使用するテストハーネス)。これは例外です。ほとんどの CI セットアップでは CLI で問題ありません。
CLI の機能対応状況(CLI を十分に活用してください)
- ダッシュボードでできることはすべて CLI でも可能です — セットアップを再現する場合は CLI スニペットを優先します。
- CLI はソース、コネクションのルール、ソース設定、デスティネーション設定、レート制限、その他のコネクション/デスティネーションのオプションに対応しています。REST API でできることの大半は CLI でも利用でき、機能の対応状況は継続的に向上しています。スキルのサンプルにフラグがないからといって、そのオプションを設定するにはダッシュボードまたは API しか使えないという意味ではありません。
- 設定項目が「高度に見える」という理由で、ユーザーにダッシュボードや API を案内しないでください。まず該当するサブコマンドの
--helpを実行します(例:hookdeck gateway connection upsert --help)。サンプルでレート制限が省略されていたのは、--helpを確認しなかったことによる問題の一つです。
認証との適合性(認証情報のみ — 機能の幅ではありません)
- CLI と API の使い分けは、「基本設定には CLI/完全な設定には API」ではありません。環境がすでに持っている認証情報またはセッションに合わせてインターフェースを選択します(例:サービス内の API キーと、オペレーターのマシンでの
hookdeck login)。CLI 認証しか使えないときに API の手順を指示したり、その逆をしたりしないでください。
フラグの正確な情報源としての --help
- 作成/更新のサブコマンドでは、
--helpに現在のフラグが一覧表示されます。スキルのサンプルは例示であり、すべてを網羅するものではありません。
Terraform とリソース管理
- リソース管理(ソース、デスティネーション、コネクション、トランスフォーメーション)では、リソースを動的に作成する場合(例:実行時にアプリケーションから作成する場合)は API を使用します。定義の管理が実質的に静的な場合(IaC)は、Terraform または CLI/スクリプトを使用します — Terraform プロバイダー。スクリプトやエージェントが安全に再実行できるよう、
upsertとcreateの両方がある場合は、createよりgateway … upsertを優先します。既存の場合に失敗させる必要がある場合、またはupsertがない場合に限りcreateを使用します。 | 領域 | リソース | 使用するタイミング | |------|----------|-------------| | コンテキストの確認(組織とプロジェクト) |hookdeck whoami→ 出力を表示し、ユーザーが組織/プロジェクトを明示していて、その内容が一致する場合を除き、ユーザーに確認します | whoami を実行して結果を表示します。ユーザーが組織/プロジェクトを明確に指定していて、whoami の結果と一致する場合を除き、クエリ/メトリクスの実行前に確認を求めます。references/cli-workflows.md を参照してください | | リソース(ソース、宛先、接続、変換) | references/01-setup.md、references/cli-workflows.md | 初回接続またはリソースの追加/変更:01-setup を使用します。インストール、リッスン、upsert、ゲートウェイコマンドには cli-workflows を使用します。詳細は ソース、宛先、接続、変換 を参照してください | | モニタリング | references/monitoring-debugging.md | イベントのライフサイクル、監視場所(TUI、ダッシュボード) | | デバッグ | references/monitoring-debugging.md | トラブルシューティング、問題、再生 | | クエリ(CLI) | references/monitoring-debugging.md | リクエスト/イベント/試行の一覧表示、検査、再試行。詳細検索。詳細はメインドキュメントを参照してください | | メトリクス(CLI) | references/monitoring-debugging.md | イベント量、失敗率、バックログ。集計ビュー。詳細はメインドキュメントを参照してください | | CLI | references/cli-workflows.md | インストール、リッスン、接続/リソース管理、プロジェクトの切り替え | | API | references/api-patterns.md | クエリ。アプリ内のリソースライフサイクル。実行時にアプリケーションコードからリソースを作成する場合。詳細はメインドキュメントを参照してください | | Terraform | terraform-provider-hookdeck | IaC としての静的リソース管理(ソース、宛先、接続、変換)。レジストリのドキュメント | | イテレーション | references/04-iterate.md | 失敗のデバッグ、イベントの再生、CLI での検査/再試行ワークフロー |
検証コード
| 領域 | リソース | 使用するタイミング |
|---|---|---|
| コード | references/verification-code.md | Hookdeck の署名検証(Express、Next.js、FastAPI) |
| プロバイダーの Webhook | references/provider-webhooks-checklist.md | プロバイダー(Stripe、Shopify など)が指定された場合:スキャフォールディング前のチェックリスト、インストールの試行、プロバイダー SDK の構成要素の使用 |
| コードベースの例 | examples/express/、examples/nextjs/、examples/fastapi/ | 実行可能で、実績があり、テスト済みの検証ハンドラー。ユーザーのフレームワーク向けのリファレンス実装として使用します |