Payments is this project's flagship detection category — it's where the structural tier (webhook flow → signature verification → DB write → idempotency) already goes deepest. But Tier 1 coverage of payment providers still has real gaps. Covered today: Stripe, PayPal, Mercado Pago, Lemon Squeezy, Paddle. Missing, verified against the current signatures/package-map.json:
- Square — official SDK package
square
- Braintree —
braintree
- Razorpay —
razorpay
- Adyen —
@adyen/api-library
The ask
Pick ONE provider (comment here to claim it, so two people don't duplicate work) and add it end to end. Because each of these needs a new taxonomy slug (payments/square, payments/braintree, payments/razorpay, payments/adyen), the repo's process is two small PRs:
- PR 1 — the slug: add
{ "slug": "payments/<provider>", "label": "<Provider>" } to taxonomy.json, with a one-line rationale in the PR description. New vocabulary is reviewed on its own — see CONTRIBUTING.md.
- PR 2 — the map entries: add the SDK package(s) to
signatures/package-map.json mapping to your new slug. These imports are unambiguous, so Tier 1 is enough — no signature file, no fixtures needed. If you find the provider's other official SDK packages (e.g. a React wrapper), add those keys too, same slug.
Definition of done
Pointers: docs/signatures.md#contributing is the exact contract; the map key must be the package name as actually imported (see the map's own $comment on dead keys). If you work with an AI coding agent, point it at the add-signature skill — it walks this exact path.
Payments is this project's flagship detection category — it's where the structural tier (webhook flow → signature verification → DB write → idempotency) already goes deepest. But Tier 1 coverage of payment providers still has real gaps. Covered today: Stripe, PayPal, Mercado Pago, Lemon Squeezy, Paddle. Missing, verified against the current
signatures/package-map.json:squarebraintreerazorpay@adyen/api-libraryThe ask
Pick ONE provider (comment here to claim it, so two people don't duplicate work) and add it end to end. Because each of these needs a new taxonomy slug (
payments/square,payments/braintree,payments/razorpay,payments/adyen), the repo's process is two small PRs:{ "slug": "payments/<provider>", "label": "<Provider>" }totaxonomy.json, with a one-line rationale in the PR description. New vocabulary is reviewed on its own — see CONTRIBUTING.md.signatures/package-map.jsonmapping to your new slug. These imports are unambiguous, so Tier 1 is enough — no signature file, no fixtures needed. If you find the provider's other official SDK packages (e.g. a React wrapper), add those keys too, same slug.Definition of done
taxonomy.json(PR 1, with rationale)signatures/package-map.json(PR 2)npm testgreen (new entries are picked up automatically — nothing to wire)CHANGELOG.mdunder[Unreleased]Pointers: docs/signatures.md#contributing is the exact contract; the map key must be the package name as actually imported (see the map's own
$commenton dead keys). If you work with an AI coding agent, point it at theadd-signatureskill — it walks this exact path.