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/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<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="Reviewed on agentmods" width="80" 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.5 | $0.00037 | $0.00344 |
| Sonnet 5.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 1mo 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.
- 1mo 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 (42 stars, last pushed 25d ago), licensed MIT. It adds 92 tokens to every session and 859 once invoked, about $0.0004 per session on Opus 5.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
better-t-stack
Create or extend an end-to-end type-safe TypeScript project with Better-T-Stack (create-better-t-stack). Use when the user wants to start, scaffold or bootstrap an app, API, fullstack project or monorepo with any of Next.js, TanStack Router or Start, React Router, Nuxt, Svelte, Solid, Astro, React Native, Hono…
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).
cloudbase-wechat-integration
A guide for connecting CloudBase applications to WeChat services, including payments, official accounts, and user identity.
shopify-admin
Write or explain Admin GraphQL queries and mutations for apps and integrations that extend the Shopify admin. Use when the user wants to understand, design, or generate the operation itself—even before deciding how to run it. Do not choose admin first for app monetization—charging merchants for the app itself via app…