skills/claude-skills-open/skills/infra/stripe-webhook/SKILL.md
Manage AI Kitchen Pro Stripe webhook — deploy, test, switch test/prod, view logs
npx skillsauth add aaaaqwq/agi-super-team stripe-webhookInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Cloudflare Worker that receives Stripe checkout.session.completed events, sends TG notifications, and updates CRM via GitHub API.
npm i -g wrangler), Cloudflare accountgit-workflow (for commits)| What | Path |
|------|------|
| Worker code | $WEBHOOK_PATH/src/index.js |
| Wrangler config | $WEBHOOK_PATH/wrangler.toml |
| Secrets (.env) | $WEBHOOK_PATH/.env |
| GitHub repo | your-org/your-webhook |
Stripe checkout.session.completed
→ Cloudflare Worker (your-webhook.your-project.workers.dev/stripe)
→ 1. TG notification to Ivan (@your_pay_bot)
→ 2. CRM update (people.csv + activities.csv via GitHub API)
→ 3. Email (via Stripe receipt, no custom code)
| Secret | Description |
|--------|-------------|
| STRIPE_WEBHOOK_SECRET | Signing secret (whsec_...) — different for test vs prod |
| TELEGRAM_BOT_TOKEN | @your_pay_bot token |
| TELEGRAM_CHAT_ID | Your Telegram user ID |
| GITHUB_TOKEN | PAT with repo write access |
cd $WEBHOOK_PATH
npx wrangler deploy
# Read test secret from .env
grep STRIPE_TEST_WEBHOOK_SECRET $WEBHOOK_PATH/.env
# Set it
echo "<test_whsec>" | npx wrangler secret put STRIPE_WEBHOOK_SECRET
grep STRIPE_LIVE_WEBHOOK_SECRET $WEBHOOK_PATH/.env
echo "<prod_whsec>" | npx wrangler secret put STRIPE_WEBHOOK_SECRET
import hmac, hashlib, time, json, urllib.request
secret = "<STRIPE_WEBHOOK_SECRET>" # test or prod
payload = json.dumps({
"id": "evt_test_123",
"type": "checkout.session.completed",
"data": {
"object": {
"id": "cs_test_abc",
"object": "checkout.session",
"amount_total": 10100, # $101
"currency": "usd",
"customer_details": {"email": "[email protected]", "name": "Test User"},
"customer_email": "[email protected]",
"custom_fields": [{"key": "telegram_username", "text": {"value": "test_user"}}],
"metadata": {"product_id": "prod_XXXXXXXXXXXX"}
}
}
})
timestamp = str(int(time.time()))
signature = hmac.new(secret.encode(), f"{timestamp}.{payload}".encode(), hashlib.sha256).hexdigest()
req = urllib.request.Request(
"https://your-webhook.your-project.workers.dev/stripe",
data=payload.encode(),
headers={
"Content-Type": "application/json",
"Stripe-Signature": f"t={timestamp},v1={signature}",
"User-Agent": "Stripe/1.0",
},
method="POST",
)
resp = urllib.request.urlopen(req, timeout=15)
print(resp.read().decode())
cd $WEBHOOK_PATH
npx wrangler tail
| Product ID (PROD) | Product ID (TEST) | Name | Price | |---|---|---|---| | prod_XXXXXXXXXXXX | prod_TEST_XXXXXXX | Tier 1 Basic | $101/mo | | prod_YYYYYYYYYYYY | prod_TEST_YYYYYYY | Tier 2 Premium | $500 | | prod_ZZZZZZZZZZZZ | prod_TEST_ZZZZZZZ | Tier 3 Enterprise | $1000 |
| Mode | Endpoint ID | Signing Secret |
|------|-------------|----------------|
| PROD | <YOUR_PROD_ENDPOINT_ID> | <YOUR_PROD_WEBHOOK_SECRET> |
| TEST | <YOUR_TEST_ENDPOINT_ID> | <YOUR_TEST_WEBHOOK_SECRET> |
Worker matches tier by: 1) metadata.product_id → TIER_MAP, 2) fallback by amount ($101/$500/$1000).
main branch (no PR) — acceptable for webhook automationcustom_fields telegram_username depends on Stripe checkout form having this field configuredgh auth login| Problem | Solution |
|---------|----------|
| TG notification not arriving | Check TELEGRAM_BOT_TOKEN, ensure /start was sent to bot |
| CRM update failing | Check GITHUB_TOKEN validity (gh auth status), check UTF-8 in CSV |
| Invalid signature (400) | Wrong STRIPE_WEBHOOK_SECRET — check test vs prod mode |
| SSL handshake failure | New subdomain — wait 2-5 min for cert provisioning |
payment-tracker-run — payment follow-up automationlog-activity — manual CRM activity loggingdevelopment
Technology-agnostic prompt generator that creates customizable AI prompts for scanning codebases and identifying high-quality code exemplars. Supports multiple programming languages (.NET, Java, JavaScript, TypeScript, React, Angular, Python) with configurable analysis depth, categorization methods, and documentation formats to establish coding standards and maintain consistency across development teams.
tools
Expert-level browser automation, debugging, and performance analysis using Chrome DevTools MCP. Use for interacting with web pages, capturing screenshots, analyzing network traffic, and profiling performance.
data-ai
Prompt for creating detailed feature implementation plans, following Epoch monorepo structure.
tools
Interactive prompt refinement workflow: interrogates scope, deliverables, constraints; copies final markdown to clipboard; never writes code. Requires the Joyride extension.