feat: add gemini-webhooks skill#43
Merged
Merged
Conversation
Adds a complete Standard Webhooks-based skill for receiving Gemini API batch, video generation, and Interactions API LRO events across Express, Next.js, and FastAPI, with HMAC-SHA256 verification and dynamic RS256/JWKS notes in the verification reference. https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
Adds the Google Gemini row to the Provider Skills table in README.md and a providers.yaml entry (docs URLs, notes, testScenario) so the "Validate New Provider" CI workflow finds the integration files. The integrations were previously only on the prep branch (PR #40); moving them onto each feat PR makes the 12 generated PRs independently mergeable in any order. https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
3 tasks
…ce arg Applies the new project convention from PR #40: use `npx hookdeck-cli listen <port> <source> --path /webhooks/<source>` everywhere instead of `hookdeck listen <port> --path /webhooks/<source>`. Skips the global-install prereq (webhook-skills is provider-neutral) and passes the required `[source]` positional so the command is copy-paste- runnable without falling into an interactive prompt. https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
…ce arg Applies the new project convention from PR #40: use `npx hookdeck-cli listen <port> <source> --path /webhooks/<source>` everywhere instead of `hookdeck listen <port> --path /webhooks/<source>`. Skips the global-install prereq (webhook-skills is provider-neutral) and passes the required `[source]` positional so the command is copy-paste- runnable without falling into an interactive prompt. https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
…ated payloads Spec drift caught during pre-merge review against https://ai.google.dev/gemini-api/docs/webhooks: Gemini's `video.generated` events expose `data.output_file_uri` and `data.file_name`, not `data.video_uri`. The original "fix iteration" mid-generation went in the wrong direction. - `references/overview.md`: corrected the events table, the prose, and the payload-field reference list. - `examples/fastapi/main.py`: handler now logs `output_file_uri` and `file_name` instead of the non-existent `video_uri`. https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a complete
gemini-webhooksprovider skill for Google Gemini API event-driven webhooks (launched May 4, 2026). Covers both signing modes — static (HMAC-SHA256, Standard Webhooks) and dynamic (RS256 JWTs verified against Google's JWKS).What's included
skills/gemini-webhooks/SKILL.md— entry pointskills/gemini-webhooks/references/— overview, setup, verification (both modes)skills/gemini-webhooks/examples/— Express, Next.js, FastAPI handlersNotes
webhook-id,webhook-timestamp,webhook-signature), HMAC-SHA256, supports overlapping space-separated signatures during secret rotationhttps://generativelanguage.googleapis.com/.well-known/jwks.json, per-job binding withuser_metadataroutingbatch.succeeded,batch.failed,video.generated,interaction.completed,interaction.requires_actionIteration history
The generator's review phase caught and fixed several drift issues against the live docs:
data.video_uri(notfile_name/output_file_uri) forvideo.generatedpayloadswebhook-signatureentries to support secret rotationv1/webhooks; align body/response fields (name,uri,subscribed_events,new_signing_secret) with the google-genai cookbookrotateSigningSecretmethod; described rotation as overlapping signaturesTest plan
cd skills/gemini-webhooks/examples/express && npm testcd skills/gemini-webhooks/examples/nextjs && npm testcd skills/gemini-webhooks/examples/fastapi && pytest test_webhook.py -vstandardwebhookslibraryGeneration details
./scripts/generate-skills.sh generatewith--config providers.yaml(entry added in PR docs: IS_SANDBOX=1 generator note + normative Hookdeck CLI invocation #40)claude-opus-4-7https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
Generated by Claude Code