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/claude-code-skills 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 loggingtesting
通用自媒体文章自动发布工具。支持百家号、搜狐号、知乎、微信公众号、小红书、抖音号六个平台的自动化发布流程。使用Playwright自动化实现平台导航和发布,支持通过storageState管理Cookie实现账号切换。
development
# SKILL.md - Model Configuration Status (mcstatus) ## 触发条件 - `/mcstatus` 命令 - 用户询问模型配备、模型配置、model status、模型列表等 ## 功能 实时生成 Agent + Cron 的模型配置报告,展示当前所有 agent 的主模型/fallback链和所有 cron 任务的模型分配。 ## 执行步骤 ### Step 1: 收集 Agent 模型配置 读取各 agent 的 models.json 获取主模型和 fallback 链: ```bash for agent in main ops code quant data research content market finance pm law product sales batch; do config=$(cat ~/.openclaw/agents/$agent/agent/models.json 2>/dev/null) if [ -n "$config" ]; then echo "=== $agent
tools
MCP 服务器智能管理助手。自动检测 MCP 可用性、智能开关、功能问答,提供人性化的 MCP 管理体验。
tools
从GitHub搜索并自动安装配置MCP(Model Context Protocol)服务器工具到Claude配置文件。当用户需要安装MCP工具时触发此技能。工作流程:搜索GitHub上的MCP项目 -> 提取npx配置 -> 添加到~/.claude.json -> 处理API密钥(如有)。