Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add lonormaly/builders-stack --skill wire-a-new-payment-providergit clone --depth 1 https://github.com/lonormaly/builders-stackWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/lonormaly/builders-stack/wire-a-new-payment-provider)<a href="https://agentmods.dev/skills/lonormaly/builders-stack/wire-a-new-payment-provider"><img src="https://agentmods.dev/badge/skills/lonormaly/builders-stack/wire-a-new-payment-provider.svg" alt="Measured on agentmods" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00092 | $0.00859 |
| Opus 5 | $0.00046 | $0.00430 |
| Sonnet 5 | $0.00018 | $0.00172 |
| Haiku 4.5 | $0.00009 | $0.00086 |
Grade A, and why
wire-a-new-payment-provider scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 79 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Wire a new payment provider
Payments in this repo go through one adapter interface in @stack/payment. Apps and @stack/api call the interface, never a provider SDK. Swapping or adding a provider means writing a new implementation of that interface — nothing upstream changes. That's the entire reason the adapter exists.
When to use
- Replacing the default Creem adapter with Stripe/Paddle/Lemon Squeezy/etc.
- Supporting a second provider (e.g. Creem as Merchant-of-Record + Stripe for a region).
- Not for changing checkout copy or the button — that's app-side and touches no payment code.
The invariant
apps/web ──▶ @stack/api /checkout ──▶ @stack/payment (interface) ──▶ <provider impl>
▲ everything left of here NEVER changes
If your change edits an app or an API route to call a provider SDK directly, stop — you've broken the adapter. Route it through the interface.
The interface (shape to conform to)
@stack/payment exposes a single door. Every provider implements the same contract:
export interface PaymentProvider {
createCheckout(input: {
priceId: string;
customerEmail?: string;
successUrl: string;
cancelUrl: string;
metadata?: Record<string, string>;
}): Promise<{ checkoutUrl: string; sessionId: string }>;
// Verify the signature, then return a normalized event. Throw on bad signature.
verifyWebhook(rawBody: string, signature: string): Promise<PaymentEvent>;
}
export type PaymentEvent =
| {
type: "checkout.completed";
sessionId: string;
customerEmail?: string;
metadata?: Record<string, string>;
}
| { type: "subscription.updated"; customerId: string; status: string }
| { type: "unknown"; raw: unknown };
Steps
-
Add the impl in
services/payment/src/providers/<provider>.ts, implementingPaymentProvider. Keep the provider SDK import confined to this file. -
Config, not hardcoding. Read keys/secrets from env. Add them to
.env.examplewith empty values and a comment:
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 79 lines · 92 tokens per session scan A 2847fdb016df
wire-a-new-payment-provider is a skill published in the GitHub repository lonormaly/builders-stack (41 stars, last pushed 3d ago), licensed MIT. It adds 92 tokens to every session and 859 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
api-fetch-wrapper
Wrap a public HTTP API (Open-Meteo weather as the demo) with credential handling, error normalisation, and a single retry on transient network failures. Demonstrates the production-shaped baseline for any "skill that calls an external service" — env-based secrets, structured error output, no leaked API keys in logs…
bunjs
Use when building Bun.js/Hono applications, implementing HTTP endpoints, setting up Prisma/SQLite, writing Zod validation, or using Bun's test runner. See bunjs-architecture for layered patterns, bunjs-production for deployment.
convex-billing
Add Stripe billing/payments to the Convex app via @convex-dev/stripe (checkout + webhook + gating).
tiktok-shop-webhooks
Receive and verify TikTok Shop webhooks. Use when setting up TikTok Shop webhook handlers, debugging Authorization-header signature verification, or handling events like ORDERSTATUSCHANGE, PACKAGEUPDATE, RECIPIENTADDRESSUPDATE, PRODUCTSTATUSCHANGE, or SELLERDEAUTHORIZATION.
gplay-purchase-verification
Server-side purchase verification for in-app products and subscriptions using Google Play Developer API. Use when implementing receipt validation in your backend.
b2c-custom-job-steps
Create custom job steps for B2C Commerce batch processing. Use this skill whenever the user needs to write a batch job, data export script, scheduled cleanup task, or any server-side processing that runs on a schedule. Also use when they ask about steptypes.json, chunk-oriented vs task-oriented job steps…