feat: add orb-webhooks skill#63
Open
leggetter wants to merge 2 commits into
Open
Conversation
Adds a webhook skill for Orb (usage-based billing) with HMAC-SHA256
manual verification over `v1:{X-Orb-Timestamp}:{rawBody}`, plus
runnable Express, Next.js, and FastAPI examples with tests.
https://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
…tplace.json
- README.md: add Orb row (alphabetically between OpenClaw and Paddle), linkified to official docs
- providers.yaml: add orb entry with HMAC-SHA256/`v1:{ts}:{body}` scheme notes, common events, summary-webhooks variant, and `orb-billing` SDK declared for both npm and pip so the version-tracker covers it
- .claude-plugin/marketplace.json: add `orb-webhooks` plugin entry (matching the per-skill pattern from PR #62) and append `./skills/orb-webhooks` to the `webhook-skills` bundle
Skill content (skills/orb-webhooks/) landed in the previous commit via the
generator.
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
orb-webhooksprovider skill for Orb (usage-based billing). HMAC-SHA256 manual verification with the unusual signed-content formatv1:{X-Orb-Timestamp}:{rawBody}(literalv1prefix, ISO-8601 timestamp, colon separators).What's included
skills/orb-webhooks/SKILL.md— entry point with frontmatter and the verification coreskills/orb-webhooks/references/— overview (event taxonomy + summary-webhooks variant), setup (dashboard config + per-endpoint secret), verification (signature algorithm, gotchas, idempotency recommendation)skills/orb-webhooks/examples/— Express, Next.js App Router, FastAPI handlers with testsproviders.yaml,README.md,.claude-plugin/marketplace.json(both as a standalone plugin and added to thewebhook-skillsbundle)Notes
X-Orb-Signature: v1=<hex>carries the HMAC;X-Orb-Timestamp: <ISO-8601>carries the timestamp separately.v1:{X-Orb-Timestamp}:{raw-body}— literalv1, colon, ISO timestamp (as a string, not a Unix epoch), colon, raw body bytes. Pass the raw request body; don'tJSON.parseand re-serialize.X-Orb-Timestampand recommends consumers pick a threshold. The skill recommends a 5-minute window in handlers plus event-id idempotency for at-least-once delivery safety.customer.created,customer.credit_balance_dropped), subscriptions (subscription.created/.started/.ended/.plan_changed/.edited/.usage_exceeded), invoices (invoice.issued/.payment_succeeded/.payment_failed/.edited), data exports (data_exports.transfer_success).orb-billingon both npm and PyPI (same package name on both). Neither SDK exposes a Stripe-styleunwrap()/constructEvent()helper at the time of writing — manual HMAC verification is the canonical path. The SDK is declared inproviders.yaml'ssdksfield so future review runs will catch stale pins.Test plan
cd skills/orb-webhooks/examples/express && npm install && npm testcd skills/orb-webhooks/examples/nextjs && npm install && npm testcd skills/orb-webhooks/examples/fastapi && python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt && pytest test_webhook.py -v"v1=" + HMAC-SHA256(secret, "v1:" + iso_ts + ":" + body).hexdigest())webhook-skillsmarketplace bundle now lists 38 skill paths (37 → 38)Generation details
./scripts/generate-skills.sh generate orb --config providers.yaml --model claude-opus-4-7npx hookdeck-cli listen 3000 orb --path /webhooks/orbhttps://claude.ai/code/session_01NNTgQRJss1V7gyzzJ9rjnB
Generated by Claude Code