Repository navigation
feat: add instagram-webhooks and messenger-webhooks skills - #267
Merged
Merged
Conversation
Instagram (object "instagram": changes[] for comments, live_comments, mentions, story_insights; messaging[] for DMs) and Facebook Messenger (object "page": messaging[] / standby[] events). Both verify X-Hub-Signature-256 (sha256=<hex>, HMAC-SHA256 of the raw body keyed with the app secret) and answer the GET hub.challenge handshake. Express, Next.js and FastAPI examples with tests, provider YAML, and the regenerated README row and marketplace entries. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mp6z12EgZRFuEhuPqFwxMT
Restore the literal äöå escapes in the escaped-unicode prose and test comments, drop the README/marketplace hunks (Sync Catalog regenerates them), cite Meta's create-app guide for Instagram's default field subscriptions, use British spelling in prose, and note that Hookdeck answers hub.challenge without checking the Verify Token. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mp6z12EgZRFuEhuPqFwxMT
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.
Requested by Gareth · project thread
Adds
instagram-webhooksandmessenger-webhooks, matching the new INSTAGRAM and MESSENGER source types in hookdeck/core#6195. Each has SKILL.md, references (overview, setup, verification), and Express, Next.js and FastAPI examples with tests, plusproviders/instagram.yamlandproviders/messenger.yamlwithtestScenarioandcatalog.summary. README.md and marketplace.json are left to the post-merge Sync Catalog workflow.What each skill covers
object: "instagram"): the three API setups (Unified Login, Instagram Login, Facebook Login), with the fields and permissions matrix for each and/subscribed_appsper setup. Entries carrychanges[](comments,live_comments,mentions,story_insights) ormessaging[](messageincludingis_echo/is_deleted/handoffadmin_text,reaction,postback,referral,readformessaging_seen,message_edit), plusstandby[].object: "page"):entry[].messaging[]andstandby[]. The handler maps each item's event key to its field (messages,message_echoes,messaging_postbacks,message_reads,message_deliveries,message_reactions,messaging_optins,messaging_referrals,message_edits,messaging_account_linking). It also covers the 5-second response window and the 1-hour "Webhooks Disabled" unsubscribe.Verification (same as core's HMAC alias):
X-Hub-Signature-256: sha256=<hex>, HMAC-SHA256 of the raw body keyed with the app secret, hex. Node checks/^sha256=([0-9a-f]{64})$/ibeforeBuffer.from(..., 'hex'), then runscrypto.timingSafeEqualon equal-length buffers. Python useshmac.compare_digeston bytes. Express reads the body withexpress.raw({ type: '*/*' }), and Next.js readsarrayBuffer(). There's no timestamp window. The GET handshake usesINSTAGRAM_VERIFY_TOKEN/MESSENGER_VERIFY_TOKEN, and each setup section says Hookdeck's edge answers it. Tests cover Meta's escaped-unicode signing: a body with\u00e4\u00f6\u00e5verifies over its raw bytes, and a signature over the re-serialized (decoded) JSON is rejected. Each skill's Setup section andreferences/setup.mdrepeat core'sconfiguration_alertword for word.Results
./scripts/validate-provider.shpasses for both skills../scripts/test-examples.sh instagram-webhooks messenger-webhooks: 6/6 example runs pass (Instagram 41/33/38 tests, Messenger 35/29/33).sync --validatepasses.test-agent-scenario.sh <provider> express --dry-runruns for both.Worth a look
value.id(Instagram Login) orvalue.comment_id(Unified/Facebook Login).story_insightssample is a copy of the postback sample, so its fields come from the Graph API Instagram webhooks reference instead.messaging_postbacksreference shows a{field, value}sample withsender.user_ref..claude-plugin/marketplace.jsonare not edited here. The Sync Catalog workflow regenerates them after merge, as CONTRIBUTING describes.hub.challengehandshake itself without checking the Verify Token, so any value entered in the Meta dashboard works. Each skill's Setup section andreferences/setup.mdsay so.Docs: Instagram webhooks setup, fields, examples, Messenger Platform webhooks, webhook events.
https://claude.ai/code/session_01Mp6z12EgZRFuEhuPqFwxMT
Generated by Claude Code