find-in-circleback
Answer "what did we say, decide, or promise" from Circleback meetings — search by attendee,…
Write Stripe code against what the API does today — plan the product shape, confirm every parameter from Stripe's own docs and schemas, and keep the agent in a sandbox. Use when adding checkout, billing, subscriptions, invoicing, or webhooks to a codebase, or when debugging
$ npx -y skills add superset-sh/superset --skill build-a-stripe-integration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/build-a-stripe-integrationContext preview
The summary Claude sees to decide when to auto-load this skill.
Write Stripe code against what the API does today — plan the product shape, confirm every parameter from Stripe's own docs and schemas, and keep the agent in a sandbox. Use when adding checkout, billing, subscriptions, invoicing, or webhooks to a codebase, or when debugging
name: build-a-stripe-integration description: Write Stripe code against what the API does today — plan the product shape, confirm every parameter from Stripe's own docs and schemas, and keep the agent in a sandbox. Use when adding checkout, billing, subscriptions, invoicing, or webhooks to a codebase, or when debugging Stripe integration code that compiles but behaves wrong. argument-hint: what the integration has to do (take a payment, bill monthly, invoice a customer) allowed-tools: mcp__stripe__stripe_implementation_planner, mcp__stripe__search_stripe_documentation, mcp__stripe__stripe_api_search, mcp__stripe__stripe_api_details, mcp__stripe__stripe_api_read, mcp__stripe__get_stripe_account_info
Stripe's API is large, versioned, and still moving. Model memory of it is a snapshot of whatever was true at training time, and the failure mode is not a compile error: it is a field that is accepted and quietly ignored. Every parameter you write should have come from a tool call in this session.
Run `stripe_implementation_planner` with what the integration has to do. The first decision is which Stripe product owns the flow, and it is hard to reverse:
PaymentIntents with Elements. Pick on how much of the checkout behavior you want Stripe to own, not on where the form renders; staying inside your UI does not oblige you to build the flow yourself.
you re-run on a timer.
Writing a custom recurring charge loop on top of PaymentIntents is the common wrong turn, and it costs retries, proration, tax, and the customer portal.
`search_stripe_documentation` before you write the first line, and link what you used. If a doc disagrees with what you expected, the doc is right. Watch for guidance that changed: the parameter that moved, the field that is now a nested object, the method that is superseded.
`stripe_api_search` finds the method, `stripe_api_details` gives its real parameters and types. Do this even for calls you are sure of.
A misspelled parameter is usually the easy case: Stripe answers a name it does not recognize with an `invalid_request_error` naming the field, so you normally find out at once. Normally, not always, because what an endpoint accepts is the endpoint's business and the docs promise no blanket rule. The expensive case is a parameter that is real but wrong here, and it has three shapes. A field that belongs to a sibling endpoint. A field nested at the wrong level, where Stripe sees the flat name as unknown and the value you meant never arrives. And a field that is accepted and does something other than what its name suggests, which no error can catch for you. The schema is what separates the three.
Create nothing in live mode while building. Use a sandbox account and test cards. For anything time-based, such as a trial ending or a renewal, create a test clock and move it, instead of waiting or faking dates in your own code. Test clocks are the only honest way to prove renewal logic works.
A browser returning from Checkout proves the browser came back, nothing more. Fulfilment, entitlement, and subscription state belong to webhook events. Verify the signature, respond quickly, and make the handler idempotent: Stripe retries, and events can arrive out of order. An integration that grants access on a redirect is an integration that grants access to anyone who can replay a URL.
Secret keys live in the environment, never in a repo, a client bundle, or a log line. When adding a new call path, read how the codebase already talks to Stripe and extend that path rather than opening a second one with its own key handling.
wrong nesting or the right name from the wrong endpoint does not.
portal are the product you are skipping.
you will make again later that reference is a PaymentMethod saved on a Customer, set up with a SetupIntent or `setup_future_usage`, not a Token: a Token is single use, so reusing one fails on the second charge. Taking card data yourself changes your compliance scope.
and currencies with no minor unit break a hardcoded divide by 100.
Superset is an agentic IDE to orchestrate 100+ coding agents in parallel. Run any agent with your own subscription.
Answer "what did we say, decide, or promise" from Circleback meetings — search by attendee,…
Build a brief for an upcoming meeting from Circleback — the calendar event, the history with…
Work the action items Circleback captured — find what is assigned to this user, do the ones…
Diagnose a failing GitHub Actions run — find the first real error in the logs, tell a flake…
Triage a GitHub issue into something actionable — reproduce the claim, find duplicates, judge…
Answer "what did we say, decide, or promise" from Granola meeting notes — narrow to the…