Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/hookdeck/webhook-skills/google-pubsub-webhooksnpx skills add hookdeck/webhook-skills --skill google-pubsub-webhooksgit clone --depth 1 https://github.com/hookdeck/webhook-skillsWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00102 | $0.02568 |
| Opus 5 | $0.00051 | $0.01284 |
| Sonnet 5 | $0.00020 | $0.00514 |
| Haiku 4.5 | $0.00010 | $0.00257 |
Grade A, and why
google-pubsub-webhooks scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 221 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Google Cloud Pub/Sub Webhooks (Push Subscriptions)
When to Use This Skill
- How do I receive Google Cloud Pub/Sub messages at an HTTP endpoint?
- How do I verify a Pub/Sub push request is really from Google?
- How do I validate the OIDC JWT in the
Authorization: Bearerheader? - Why does Pub/Sub keep redelivering the same message to my webhook?
- How do I decode
message.datafrom a Pub/Sub push envelope? - Why is my Pub/Sub push endpoint returning 401?
How Pub/Sub Push Differs From HMAC Webhooks
Pub/Sub is not a signed-webhook provider. Read this before looking for a signature header — there isn't one.
- No signing secret, no HMAC header. There is no
X-Goog-Signature, no Standard Webhooks (webhook-id/webhook-timestamp/webhook-signature). Do not invent one. - The body is never signed. On an authenticated push subscription the
Authorization: Bearer <JWT>header proves who is calling (your push service account), not what they sent. So unlike Stripe or Shopify, you do not need the raw body — parsing JSON first is fine here. - No event catalog. Pub/Sub carries whatever your publisher published. Event
semantics live entirely in
message.dataandmessage.attributes. There are nopayment.succeeded-style Pub/Sub event names. - Two auth postures, depending on how the subscription was created:
| Posture | What Pub/Sub sends | What you can check |
|---|---|---|
| Default (no subscription auth) | Nothing proving origin | An unguessable ?token= in the push URL, plus network-level ingress restriction |
OIDC (--push-auth-service-account, recommended) |
Authorization: Bearer <Google-signed OIDC JWT> |
RS256 signature, iss, aud, email, email_verified |
Configure OIDC. See references/setup.md.
The Push Envelope
POST with Content-Type: application/json:
{
"message": {
"attributes": { "eventType": "order.created" },
"data": "eyJvcmRlcklkIjoiMTIzIn0=",
"messageId": "2070443601311540",
"publishTime": "2026-08-13T19:13:12.201Z"
},
"subscription": "projects/my-project/subscriptions/my-sub"
}
What ships with it
21 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- examples/express/.env.example 1.2 KB
- examples/express/package.json 445 B
- examples/express/README.md 3.2 KB
- examples/express/src/index.js 7.4 KB runs code
- examples/express/test/webhook.test.js 11 KB runs code
- examples/fastapi/.env.example 1.1 KB
- examples/fastapi/main.py 7.5 KB runs code
- examples/fastapi/README.md 3.4 KB
- examples/fastapi/requirements.txt 302 B
- examples/fastapi/test_webhook.py 11 KB runs code
- examples/nextjs/.env.example 1.1 KB
- examples/nextjs/app/webhooks/google-pubsub/route.ts 2.8 KB runs code
- examples/nextjs/lib/pubsub.ts 5.4 KB runs code
- examples/nextjs/package.json 556 B
- examples/nextjs/README.md 3.8 KB
- examples/nextjs/test/webhook.test.ts 11 KB runs code
- examples/nextjs/tsconfig.json 411 B
- examples/nextjs/vitest.config.ts 140 B runs code
- references/overview.md 5.7 KB
- references/setup.md 6.0 KB
- references/verification.md 12 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 221 lines · 102 tokens per session scan A 38a9e128cc97
google-pubsub-webhooks is a skill published in the GitHub repository hookdeck/webhook-skills (84 stars, last pushed 6d ago), licensed MIT. It adds 102 tokens to every session and 2,568 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
terraform-skill
Use when working with Terraform or OpenTofu - creating modules, writing tests (native test framework, Terratest), setting up CI/CD pipelines, reviewing configurations, choosing between testing approaches, debugging state issues, implementing security scanning (trivy, checkov), or making infrastructure-as-code…
alicloud_cli
阿里云 CLI 中文文档镜像检索与命令辅助:先走章节索引,再下钻正文页面,给出命令前必须有本地文档证据。.
terraform-cli-setup
Terraform CLI 安装与初始化技能。当用户本地未安装 Terraform 时自动完成安装,确保 terraform 命令可用并能执行 init/validate。不负责 Provider 凭证配置,凭证在实际使用时由 terraform-skill 引导。.
vercel-optimize
Use for Vercel cost and performance optimization on deployed projects, especially Next.js, SvelteKit, Nuxt, and limited Astro apps. Collect Vercel metrics, usage, project config, and code scan results first; investigate only metric-backed candidates; produce ranked recommendations grounded in verified files and…
deploy-to-vercel
Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".
cloudflare-d1
Cloudflare D1 SQLite database with Workers, Drizzle ORM, migrations.