stripe-apps

Builds, scaffolds, and publishes Stripe Apps with UI extensions, backends, and webhooks.

Updated Jan 12, 2026
One-click install
npx skills add https://github.com/ttakci/sellerhill --skill stripe-apps-ttakci
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: stripe-apps
Source: https://github.com/ttakci/sellerhill/tree/main/.grok/skills/stripe-apps
Command: npx skills add https://github.com/ttakci/sellerhill --skill stripe-apps-ttakci

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Building a Stripe App involves many moving parts — the stripe-app.yaml manifest, sandboxed UI extensions, authentication types, webhooks, and the upload/publish workflow — and getting any of them wrong produces broken apps. This Skill guides an AI agent through the entire Stripe Apps development lifecycle with enforced rules, canonical documentation lookups, and a structured discovery interview. ## Core Features & Use Cases - Guided Discovery & Architecture: A mandatory 4-question interview routes the user's idea to the right extension type (UI extension, backend-only, full-stack, extension interfaces) and viewport before any code is written. - Correct-by-Construction Scaffolding: Enforces stripe generate app scaffolding, SDK-only UI components (no HTML/CSS, React 17 only), and complete runnable files written to disk. - Full Workflow Coverage: Canonical docs references for authentication (platform keys, OAuth, restricted API keys), webhooks, Secret Store, onboarding UX, versioning, and marketplace publishing. - Use Case: A user says "add a panel to the customer page showing loyalty points." The Skill asks discovery questions, scaffolds the app, writes ui/src/views/App.tsx and server.js following current Stripe docs, and walks through preview, upload, and install. ## Quick Start Ask the assistant to build a Stripe App that shows custom data on the customer detail page, and it will load the discovery routing and begin the interview.

Frequently Asked Questions about stripe-apps

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build a Stripe App with a Dashboard UI extension?

Scaffold with `stripe generate app <name>`, then modify `stripe-app.yaml` and `ui/src/views/App.tsx` using only components from @stripe/ui-extension-sdk/ui. Preview locally with `stripe apps start`, then run `stripe apps upload` and install from the Dashboard.

What is the difference between platform keys, OAuth, and restricted API keys for Stripe Apps?

Restricted API keys are the recommended default: Stripe generates a scoped key at install with no Connect relationship. Platform keys use the Stripe-Account header to act across many merchants, suiting public marketplace apps. OAuth is only needed when the merchant must be merchant-of-record.

Can I use Tailwind, HTML elements, or React 18 in a Stripe App UI extension?

No. UI extensions run in a sandboxed iframe on React 17.0.2 and only render SDK components from @stripe/ui-extension-sdk/ui. Raw HTML tags, CSS frameworks, window/document access, and React 18 APIs like useId or useTransition are blocked.

Why does fetchStripeSignature or Secret Store fail during local development?

The signing secret (starting with absec_) is only generated on the first `stripe apps upload`. You must upload a version before fetchStripeSignature verification or the Secret Store API will work, even while previewing locally with stripe apps start.

How do I set up webhooks for a public Stripe App?

Public apps using platform keys create one webhook endpoint with 'Listen to events on Connected accounts' enabled, and identify merchants via event.account. Apps using restricted API keys cannot use Connect fanout, so each merchant manages their own webhooks. Declare event_read permission in the manifest.

Why does my Stripe App upload fail with an invalid manifest error?

Invalid manifest errors come from missing required fields or malformed YAML in stripe-app.yaml. Ensure id, version, and name are present, indentation is correct, and include `extensions: []` even with no backend extensions. Run pnpm build locally to catch UI type errors first.