From a8284cbe118b79411db45d39aaa0e67b3ca6710f Mon Sep 17 00:00:00 2001 From: Phil Leggetter Date: Mon, 8 Jun 2026 11:55:16 +0100 Subject: [PATCH 1/2] Add workflow to trigger hookdeck.com deploy when product skills change. Merges to main under skills/event-gateway, hookdeck, or outpost POST to the same Hookdeck source as Outpost docs so Vercel republishes /.well-known/agent-skills/. Co-authored-by: Cursor --- .github/workflows/trigger-website-deploy.yml | 52 ++++++++++++++++++++ AGENTS.md | 4 ++ 2 files changed, 56 insertions(+) create mode 100644 .github/workflows/trigger-website-deploy.yml diff --git a/.github/workflows/trigger-website-deploy.yml b/.github/workflows/trigger-website-deploy.yml new file mode 100644 index 0000000..3496fda --- /dev/null +++ b/.github/workflows/trigger-website-deploy.yml @@ -0,0 +1,52 @@ +# Triggers a Hookdeck source that forwards to the Vercel website deploy hook +# when product skills consumed by hookdeck/website change on main. +# +# The website build publishes `/.well-known/agent-skills/` from this repo +# (see hookdeck/website scripts/agent-skills-discovery.md). +# +# Required repository configuration (Settings → Secrets and variables → Actions): +# Variable: HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL — Hookdeck inbound source URL (not a secret) +# Secret: VERCEL_WEBSITE_DEPLOY_HOOK_SOURCE_API_KEY — Hookdeck source x-api-key header +# +# Uses the same Hookdeck → Vercel hook as hookdeck/outpost +# (.github/workflows/trigger-website-deploy.yml). + +name: Trigger website deploy + +on: + push: + branches: + - main + paths: + - "skills/event-gateway/**" + - "skills/hookdeck/**" + - "skills/outpost/**" + +jobs: + hookdeck: + name: Notify Hookdeck (Vercel deploy) + runs-on: ubuntu-latest + steps: + - name: POST Hookdeck source + env: + HOOKDECK_SOURCE_URL: ${{ vars.HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL }} + HOOKDECK_SOURCE_API_KEY: ${{ secrets.VERCEL_WEBSITE_DEPLOY_HOOK_SOURCE_API_KEY }} + run: | + if [ -z "${HOOKDECK_SOURCE_URL}" ]; then + echo "::error::Missing repository variable HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL" + exit 1 + fi + if [ -z "${HOOKDECK_SOURCE_API_KEY}" ]; then + echo "::error::Missing secret VERCEL_WEBSITE_DEPLOY_HOOK_SOURCE_API_KEY" + exit 1 + fi + curl -sS -f \ + --connect-timeout 10 \ + --max-time 30 \ + --retry 3 \ + --retry-delay 2 \ + --retry-all-errors \ + -X POST "${HOOKDECK_SOURCE_URL}" \ + -H "x-api-key: ${HOOKDECK_SOURCE_API_KEY}" \ + -H "Content-Type: application/json" \ + -d '{}' diff --git a/AGENTS.md b/AGENTS.md index 20f9a8e..951379f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,6 +4,10 @@ Instructions for AI agents working on the Hookdeck Agent Skills repository. Read this file before creating, modifying, or reviewing any skill in this repo. +## hookdeck.com discovery index + +Product skills under **`skills/event-gateway/`**, **`skills/hookdeck/`**, and **`skills/outpost/`** are packaged at build time by the **[`hookdeck/website`](https://github.com/hookdeck/website)** repo and served from `https://hookdeck.com/.well-known/agent-skills/` (RFC v0.2.0 discovery index + `.tar.gz` archives). When those paths change on **`main`**, [`.github/workflows/trigger-website-deploy.yml`](.github/workflows/trigger-website-deploy.yml) notifies Hookdeck, which triggers a Vercel production deploy of the site (same Hookdeck source as Outpost docs: repo variable `HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL`, secret `VERCEL_WEBSITE_DEPLOY_HOOK_SOURCE_API_KEY`). See [website `scripts/agent-skills-discovery.md`](https://github.com/hookdeck/website/blob/main/scripts/agent-skills-discovery.md) for packaging details. + ## Specification All skills MUST conform to the [Agent Skills specification](https://agentskills.io/specification) and follow the [authoring best practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices). From 6797b5b36f56df4c6f3b1e3886225a92df6c7b9d Mon Sep 17 00:00:00 2001 From: Phil Leggetter Date: Mon, 8 Jun 2026 12:15:48 +0100 Subject: [PATCH 2/2] Use Actions secret for Hookdeck deploy source URL. Both deploy hook credentials are repository secrets so the inbound source URL is not exposed in workflow logs or variable listings. Co-authored-by: Cursor --- .github/workflows/trigger-website-deploy.yml | 8 ++++---- AGENTS.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/trigger-website-deploy.yml b/.github/workflows/trigger-website-deploy.yml index 3496fda..3280a46 100644 --- a/.github/workflows/trigger-website-deploy.yml +++ b/.github/workflows/trigger-website-deploy.yml @@ -5,8 +5,8 @@ # (see hookdeck/website scripts/agent-skills-discovery.md). # # Required repository configuration (Settings → Secrets and variables → Actions): -# Variable: HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL — Hookdeck inbound source URL (not a secret) -# Secret: VERCEL_WEBSITE_DEPLOY_HOOK_SOURCE_API_KEY — Hookdeck source x-api-key header +# Secret: HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL — Hookdeck inbound source URL +# Secret: VERCEL_WEBSITE_DEPLOY_HOOK_SOURCE_API_KEY — Hookdeck source x-api-key header # # Uses the same Hookdeck → Vercel hook as hookdeck/outpost # (.github/workflows/trigger-website-deploy.yml). @@ -29,11 +29,11 @@ jobs: steps: - name: POST Hookdeck source env: - HOOKDECK_SOURCE_URL: ${{ vars.HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL }} + HOOKDECK_SOURCE_URL: ${{ secrets.HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL }} HOOKDECK_SOURCE_API_KEY: ${{ secrets.VERCEL_WEBSITE_DEPLOY_HOOK_SOURCE_API_KEY }} run: | if [ -z "${HOOKDECK_SOURCE_URL}" ]; then - echo "::error::Missing repository variable HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL" + echo "::error::Missing secret HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL" exit 1 fi if [ -z "${HOOKDECK_SOURCE_API_KEY}" ]; then diff --git a/AGENTS.md b/AGENTS.md index 951379f..487b2eb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,7 +6,7 @@ Read this file before creating, modifying, or reviewing any skill in this repo. ## hookdeck.com discovery index -Product skills under **`skills/event-gateway/`**, **`skills/hookdeck/`**, and **`skills/outpost/`** are packaged at build time by the **[`hookdeck/website`](https://github.com/hookdeck/website)** repo and served from `https://hookdeck.com/.well-known/agent-skills/` (RFC v0.2.0 discovery index + `.tar.gz` archives). When those paths change on **`main`**, [`.github/workflows/trigger-website-deploy.yml`](.github/workflows/trigger-website-deploy.yml) notifies Hookdeck, which triggers a Vercel production deploy of the site (same Hookdeck source as Outpost docs: repo variable `HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL`, secret `VERCEL_WEBSITE_DEPLOY_HOOK_SOURCE_API_KEY`). See [website `scripts/agent-skills-discovery.md`](https://github.com/hookdeck/website/blob/main/scripts/agent-skills-discovery.md) for packaging details. +Product skills under **`skills/event-gateway/`**, **`skills/hookdeck/`**, and **`skills/outpost/`** are packaged at build time by the **[`hookdeck/website`](https://github.com/hookdeck/website)** repo and served from `https://hookdeck.com/.well-known/agent-skills/` (RFC v0.2.0 discovery index + `.tar.gz` archives). When those paths change on **`main`**, [`.github/workflows/trigger-website-deploy.yml`](.github/workflows/trigger-website-deploy.yml) notifies Hookdeck, which triggers a Vercel production deploy of the site (same Hookdeck source as Outpost docs; both configured as Actions secrets: `HOOKDECK_WEBSITE_DEPLOY_SOURCE_URL`, `VERCEL_WEBSITE_DEPLOY_HOOK_SOURCE_API_KEY`). See [website `scripts/agent-skills-discovery.md`](https://github.com/hookdeck/website/blob/main/scripts/agent-skills-discovery.md) for packaging details. ## Specification