Create a complete webhook skill for {{PROVIDER}} following the AGENTS.md specification in this repository.
Research Phase (CRITICAL - Do This First)
{{DOCS_SECTION}}
You MUST research and verify the following from official documentation before writing any code:
1. Signature Verification
- What is the exact header name(s)? (e.g.,
X-Provider-Signature,webhook-signature) - What algorithm is used? (HMAC-SHA256, ECDSA, etc.)
- What is signed? (raw body,
timestamp.body,msgId.timestamp.body, etc.) - Does it use Standard Webhooks? (headers:
webhook-id,webhook-timestamp,webhook-signature)
2. Event Names (VERIFY FROM OFFICIAL DOCS)
- List the exact event type strings from the provider's documentation
- Do NOT guess event names - they must match exactly (e.g.,
spam reportvsspam_reportvsspamreport) - Common mistakes:
completedvssucceeded, underscores vs spaces vs dots
3. Authentication Method
- API key in header?
- Basic Auth (username:password)?
- OAuth?
- IP allowlist?
Creation Phase
Read the AGENTS.md file in this repository to understand the full skill creation checklist.
CRITICAL: You MUST create ALL of the following files. Missing files = incomplete skill.
Core Files
skills/{{PROVIDER_KEBAB}}-webhooks/SKILL.md- Main skill file with frontmatter and essential codeskills/{{PROVIDER_KEBAB}}-webhooks/references/overview.md- What webhooks are, common eventsskills/{{PROVIDER_KEBAB}}-webhooks/references/setup.md- Dashboard configuration stepsskills/{{PROVIDER_KEBAB}}-webhooks/references/verification.md- Signature verification details
Examples (all three frameworks)
Express (Node.js):
skills/{{PROVIDER_KEBAB}}-webhooks/examples/express/package.jsonskills/{{PROVIDER_KEBAB}}-webhooks/examples/express/.env.exampleskills/{{PROVIDER_KEBAB}}-webhooks/examples/express/README.mdskills/{{PROVIDER_KEBAB}}-webhooks/examples/express/src/index.jsskills/{{PROVIDER_KEBAB}}-webhooks/examples/express/test/webhook.test.js
Next.js:
skills/{{PROVIDER_KEBAB}}-webhooks/examples/nextjs/package.jsonskills/{{PROVIDER_KEBAB}}-webhooks/examples/nextjs/.env.exampleskills/{{PROVIDER_KEBAB}}-webhooks/examples/nextjs/README.mdskills/{{PROVIDER_KEBAB}}-webhooks/examples/nextjs/app/webhooks/{{PROVIDER_KEBAB}}/route.tsskills/{{PROVIDER_KEBAB}}-webhooks/examples/nextjs/test/webhook.test.tsskills/{{PROVIDER_KEBAB}}-webhooks/examples/nextjs/vitest.config.ts
FastAPI (Python):
skills/{{PROVIDER_KEBAB}}-webhooks/examples/fastapi/requirements.txtskills/{{PROVIDER_KEBAB}}-webhooks/examples/fastapi/.env.exampleskills/{{PROVIDER_KEBAB}}-webhooks/examples/fastapi/README.mdskills/{{PROVIDER_KEBAB}}-webhooks/examples/fastapi/main.pyskills/{{PROVIDER_KEBAB}}-webhooks/examples/fastapi/test_webhook.py
Important Guidelines
- Use the provider's official SDK for signature verification when it supports the framework; include manual verification as a fallback for frameworks the SDK doesn't support (e.g., FastAPI when only Node SDK exists)
- Use raw body for signature verification - don't parse JSON before verifying (SDK or manual)
- Include comprehensive tests that generate real signatures using the provider's algorithm
- Be idiomatic to each framework (Express middleware patterns, Next.js App Router, FastAPI dependencies)
- Return appropriate HTTP status codes (200 for success, 400 for invalid signature, etc.)
CRITICAL: Consistency Checks
Before finalizing, verify these are consistent across all files:
- Event names - SKILL.md, overview.md, and all three example handlers must use identical event names
- Header names - All files must reference the same signature header(s)
- Verification algorithm - SKILL.md inline code must match example implementations exactly
- Environment variable names - Consistent across .env.example and code files
Check for these common mistakes:
- Verification logic is inconsistent (e.g., SKILL.md and examples use different signed content format or algorithm)
- overview.md lists different events than the code handles
- setup.md describes headers that don't match the code
Reference Existing Skills
Look at existing skills in skills/ directory for patterns to follow:
skills/stripe-webhooks/- HMAC-SHA256 with timestampskills/github-webhooks/- HMAC-SHA256 simpleskills/shopify-webhooks/- HMAC-SHA256 with Base64
Copy their structure and adapt for {{PROVIDER}}'s specific verification method.
CRITICAL: Dependency Versions
Use these EXACT versions (queried from package managers at generation time):
{{VERSIONS_TABLE}}
These are the current stable versions. Use them exactly as shown.
Validation Phase
After creating all files, run the tests to verify they pass:
cd skills/{{PROVIDER_KEBAB}}-webhooks/examples/express && npm install && npm test
cd skills/{{PROVIDER_KEBAB}}-webhooks/examples/nextjs && npm install && npm test
cd skills/{{PROVIDER_KEBAB}}-webhooks/examples/fastapi && python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt && pytest test_webhook.py
Fix any test failures before completing.