Firecrawl Build Onboarding
firecrawl/firecrawl
Gets Firecrawl working in a project: signs you in through the browser, saves FIRECRAWL_API_KEY to .env and picks the first SDK or REST path.
Build marketplace and platform payment flows with Stripe Connect.
$ npx skills add TerminalSkills/skills --skill stripe-connect -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install TerminalSkills/skills stripe-connect --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/TerminalSkills/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/stripe-connect .claude/skills/stripe-connect && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "stripe-connect" agent skill from https://github.com/TerminalSkills/skills/tree/main/skills/stripe-connect into .claude/skills/stripe-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stripe-connect", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/TerminalSkills/skills/tree/main/skills/stripe-connectType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add TerminalSkills/skills --skill stripe-connect -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install TerminalSkills/skills stripe-connect --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TerminalSkills/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/stripe-connect .agents/skills/stripe-connect && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "stripe-connect" agent skill from https://github.com/TerminalSkills/skills/tree/main/skills/stripe-connect into .agents/skills/stripe-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stripe-connect", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add TerminalSkills/skills --skill stripe-connect -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install TerminalSkills/skills stripe-connect --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TerminalSkills/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/stripe-connect .cursor/skills/stripe-connect && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "stripe-connect" agent skill from https://github.com/TerminalSkills/skills/tree/main/skills/stripe-connect into .cursor/skills/stripe-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stripe-connect", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/TerminalSkills/skills.git --path skills/stripe-connect--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add TerminalSkills/skills --skill stripe-connect -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install TerminalSkills/skills stripe-connect --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TerminalSkills/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/stripe-connect .gemini/skills/stripe-connect && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "stripe-connect" agent skill from https://github.com/TerminalSkills/skills/tree/main/skills/stripe-connect into .gemini/skills/stripe-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stripe-connect", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install TerminalSkills/skills stripe-connectInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add TerminalSkills/skills --skill stripe-connect -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/TerminalSkills/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/stripe-connect .github/skills/stripe-connect && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "stripe-connect" agent skill from https://github.com/TerminalSkills/skills/tree/main/skills/stripe-connect into .github/skills/stripe-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stripe-connect", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add TerminalSkills/skills --skill stripe-connect -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install TerminalSkills/skills stripe-connect --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/TerminalSkills/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/stripe-connect .opencode/skills/stripe-connect && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "stripe-connect" agent skill from https://github.com/TerminalSkills/skills/tree/main/skills/stripe-connect into .opencode/skills/stripe-connect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "stripe-connect", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
stripe-connectBuild marketplace and platform payment flows with Stripe Connect.
Stripe Connect is an agent skill from TerminalSkills/skills. Build marketplace and platform payment flows with Stripe Connect. Use when: building two-sided marketplaces, splitting payments between buyers and sellers, onboarding sellers/providers to accept payments, handling platform fees and payouts, or managing connected accounts for a platform.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `_scores.json`, `references/payouts-refunds-oauth.md` and `references/webhooks.md`). Compatibility notes: Requires Node.js 20+ (stripe-node 23 dropped Node 18), Stripe account with Connect enabled
It sits in Backend & APIs. It works with Stripe. The repository describes itself as: Open-source library of AI agent skills — SKILL.md files for Claude Code, Codex, Gemini CLI, Cursor. The licence is Apache-2.0.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a021875. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
stripenpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
STRIPE_SECRET_KEYSTRIPE_WEBHOOK_SECRETSTRIPE_V2_WEBHOOK_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires Node.js 20+ (stripe-node 23 dropped Node 18), Stripe account with Connect enabled
From compatibility in the SKILL.md frontmatter.
Stripe Connect loads about 2.9k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 76 tokens; SKILL.md has 610 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from TerminalSkills/skills at commit a021875, republished under its Apache-2.0 licence (© TerminalSkills). 610 words, ~2,854 tokens.
.claude/skills/stripe-connect/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Stripe Connect routes payments between buyers, sellers, and your platform — handling regulatory compliance (KYC), payouts, and tax reporting for connected accounts.
This skill uses the Accounts v2 API (/v2/core/accounts), Stripe's recommended path for new Connect platforms. A v2 account is shaped by the configurations you assign to it instead of a v1 account type + flat capabilities:
| Configuration | Enables | Key capability |
|---|---|---|
| merchant | Accept payments (direct charges) | card_payments |
| recipient | Receive transfers / destination payouts | stripe_balance.stripe_transfers |
| customer | Be billed as a customer (subscriptions, invoices) | automatic_indirect_tax |
Dashboard access is a separate dashboard field that replaces the old standard/express/custom type:
dashboard | ≈ v1 type | Onboarding | Best for |
|---|---|---|---|
"express" | Express | Stripe-hosted | Marketplaces (recommended) |
"full" | Standard | Stripe-hosted / OAuth | Sellers wanting a full Stripe dashboard |
"none" | Custom | Embedded / your UI | Platforms needing full control |
Stay on Accounts v1 when you need OAuth for Standard accounts, the recipient service agreement (cross-border), or Treasury / Issuing capabilities. Accounts v1 (
stripe.accounts.create({ type: "express" })) remains supported, and v1 and v2 endpoints work on the same account (a new v1 account can take up to 10 minutes before v2 endpoints accept it). See the legacy note in step 1.
Charge types (the payment APIs are v1 and reference the connected account by id):
| Type | Who pays Stripe fees | Seller config needed | Use when |
|---|---|---|---|
| Direct | Connected account | merchant | Seller wants full control |
| Destination | Platform | recipient | Platform manages UX |
| Separate charges + transfers | Platform | recipient | Complex routing |
npm install stripe// lib/stripe.ts
import Stripe from "stripe";
// stripe-node 23.x pins API version 2026-09-30.endive; omit apiVersion to use the pinned one.
// Pass apiVersion only when you must stay on an older version.
export const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
// Platform account key (your Stripe account).
// Connected accounts are identified by their account ID (acct_...).Assign merchant (accept payments) and recipient (receive payouts/transfers). dashboard: "express" gives sellers Stripe's hosted Express dashboard.
// POST /api/sellers/onboard
import { stripe } from "@/lib/stripe";
export async function createSellerAccount(email: string) {
const account = await stripe.v2.core.accounts.create({
contact_email: email,
display_name: email,
dashboard: "express",
identity: {
country: "us",
entity_type: "individual",
},
configuration: {
merchant: {
capabilities: { card_payments: { requested: true } },
},
recipient: {
capabilities: {
stripe_balance: { stripe_transfers: { requested: true } },
},
},
},
defaults: {
currency: "usd",
responsibilities: {
fees_collector: "application", // platform collects application fees
losses_collector: "application", // platform covers negative balances (Express behavior)
},
},
});
return account.id; // acct_... — store as seller.stripeAccountId
}
// Legacy (Accounts v1, still GA — use for the v1-only cases above):
// const account = await stripe.accounts.create({
// type: "express", email,
// capabilities: { card_payments: { requested: true }, transfers: { requested: true } },
// });export async function createOnboardingLink(accountId: string, userId: string) {
const accountLink = await stripe.v2.core.accountLinks.create({
account: accountId,
use_case: {
type: "account_onboarding",
account_onboarding: {
configurations: ["merchant", "recipient"],
refresh_url: `${process.env.BASE_URL}/sellers/onboard/refresh?userId=${userId}`,
return_url: `${process.env.BASE_URL}/sellers/onboard/complete?userId=${userId}`,
},
},
});
return accountLink.url; // Redirect seller here (link expires in ~10 min)
}export async function isSellerOnboarded(accountId: string): Promise<boolean> {
const account = await stripe.v2.core.accounts.retrieve(accountId, {
include: ["requirements", "configuration.merchant", "configuration.recipient"],
});
// v2 has no currently_due list: requirements.entries holds each open item with a
// minimum_deadline.status of currently_due | eventually_due | past_due.
const blocking = (account.requirements?.entries ?? []).filter(
(e) => e.awaiting_action_from === "user" && e.minimum_deadline.status !== "eventually_due"
);
const cardActive =
account.configuration?.merchant?.capabilities?.card_payments?.status === "active";
return blocking.length === 0 && cardActive;
}Destination charges and transfers require the seller's
recipientconfiguration; direct charges requiremerchant. The PaymentIntents / Transfers APIs themselves are unchanged.
// POST /api/payments/charge — amount in cents
export async function chargeWithDestination(
amount: number, paymentMethodId: string, customerId: string,
sellerAccountId: string, platformFeePercent = 15,
) {
return stripe.paymentIntents.create({
amount,
currency: "usd",
customer: customerId,
payment_method: paymentMethodId,
confirm: true,
transfer_data: { destination: sellerAccountId }, // net goes to the seller
application_fee_amount: Math.round(amount * (platformFeePercent / 100)), // platform keeps this
automatic_payment_methods: { enabled: true, allow_redirects: "never" },
});
}// The charge appears on the seller's account; the platform gets the fee
export async function directCharge(
amount: number, paymentMethodId: string, sellerAccountId: string, platformFeePercent = 10,
) {
return stripe.paymentIntents.create(
{
amount,
currency: "usd",
payment_method: paymentMethodId,
confirm: true,
application_fee_amount: Math.round(amount * (platformFeePercent / 100)),
},
{ stripeAccount: sellerAccountId }, // create on behalf of the seller
);
}// 1. Charge buyer on platform account
const paymentIntent = await stripe.paymentIntents.create({
amount: 10000, // $100
currency: "usd",
payment_method: paymentMethodId,
confirm: true,
});
// 2. Later: transfer to seller (e.g., after service delivered)
export async function payoutToSeller(
chargeId: string, // pi.latest_charge (a ch_... id, not the pi_ id)
sellerAccountId: string,
amount: number // amount to send seller (after platform fee)
) {
const transfer = await stripe.transfers.create({
amount,
currency: "usd",
destination: sellerAccountId,
source_transaction: chargeId, // links the transfer to the original charge
});
return transfer;
}Detailed code lives in references/ to keep this file short:
references/webhooks.md — v1 Connect webhook handler (account.updated, payment_intent.*, transfer.created, payout.paid, charge.dispute.created), registering a connect: true endpoint, and Accounts v2 thin events (v2.core.account[requirements].updated).references/payouts-refunds-oauth.md — automatic vs instant payouts, seller balance, refunds with refund_application_fee + reverse_transfer, and the OAuth flow for Standard accounts (v1 only).# Use test mode keys (sk_test_...)
# Test card numbers:
# 4242 4242 4242 4242 — success
# 4000 0000 0000 9995 — insufficient funds
# 4000 0025 6000 0001 — requires authentication (3DS)
# Trigger webhooks locally:
stripe listen --forward-to localhost:3000/webhooks/stripe
stripe trigger payment_intent.succeededRequest: "Freelancers on our marketplace should get paid, we keep 15%."
createSellerAccount("dana.ortiz@studio-ortiz.dev") returns acct_...; store it on the seller row.createOnboardingLink(accountId, userId) returns a Stripe-hosted URL; redirect the seller there.v2.core.account[requirements].updated event), isSellerOnboarded becomes true; then chargeWithDestination(12000, pmId, custId, accountId, 15) charges $120.00 and creates a $18.00 application fee, with $102.00 (before Stripe fees) transferred to the seller.Request: "Charge the buyer now, pay the seller only after delivery."
Create the PaymentIntent on the platform with no transfer_data, keep pi.latest_charge, and after delivery call payoutToSeller(chargeId, accountId, 8500). The transfer is tied to the charge via source_transaction, so it is paid out when the funds are available.
sk_test_...); never commit keys; load them from STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_V2_WEBHOOK_SECRET (and STRIPE_CLIENT_ID for Standard OAuth).Math.round.4242 4242 4242 4242 succeeds, 4000 0025 6000 0001 asks for 3D Secure; trigger events locally with stripe listen --forward-to localhost:3000/webhooks/stripe and stripe trigger payment_intent.succeeded.© TerminalSkills, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (references) in skills/stripe-connect of TerminalSkills/skills.
Open the folder on GitHubat commit a021875
Stripe Connect next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Stripe Connect this skillTerminalSkills/skills | 163 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Firecrawl Build Onboardingfirecrawl/firecrawl | 190k | 1 repos | ~1.4k | Automated safety check: Notes | ISC | |
| Stripe Projectsfossasia/eventyay | 1.7k | 5 repos | ~2k | Automated safety check: Notes | Apache-2.0 | |
| Stripe Appsfossasia/eventyay | 1.7k | 1 repos | ~3.6k | Automated safety check: Pass | Apache-2.0 | |
| Dinero Currency Patternsdinerojs/dinero.js | 6.8k | — | ~650 | Automated safety check: Pass | MIT | |
| Stripe Best Practiceskanchengw/cnllm | 173 | 2 repos | ~925 | Automated safety check: Pass | Apache-2.0 |
firecrawl/firecrawl
Gets Firecrawl working in a project: signs you in through the browser, saves FIRECRAWL_API_KEY to .env and picks the first SDK or REST path.
fossasia/eventyay
A skill your agent uses when the user wants to provision infrastructure or third-party services using Stripe Projects.
fossasia/eventyay
A skill your agent uses when building, modifying, or reviewing a Stripe App — or when the user describes something that implies one (e.g.
dinerojs/dinero.js
Currency handling patterns for the Dinero.js money library. An agent skill from dinerojs/dinero.js.
kanchengw/cnllm
Guides Stripe integration decisions — API selection (Checkout Sessions vs PaymentIntents), Connect platform setup (Accounts v2, controller properties), billing/subscriptions, Treasury financial…
luadotsh/lua
Handles Laravel Cashier Stripe integration including subscriptions, webhooks, Stripe Checkout, invoices, charges, refunds, trials, coupons, metered billing, and payment failure handling.
TerminalSkills/skills
Build custom Blender add-ons with Python. An agent skill from TerminalSkills/skills.
TerminalSkills/skills
Run local SEO from your terminal via the SEOG MCP server — Google Business Profile management, map-pack rank tracking and geo-grid scans, review sync and replies published to Google, competitor…
TerminalSkills/skills
Scripts and configures production rendering in Autodesk 3ds Max with the V-Ray and Corona renderers: output size and files, render elements, denoising, light mix, batch and command-line rendering…
TerminalSkills/skills
Covers scripting Autodesk 3ds Max, the 3D modeling and rendering application, with MAXScript and Python (pymxs): scene manipulation, object creation, material assignment, camera and light setup…
TerminalSkills/skills
3proxy is a small open-source proxy server that runs HTTP/HTTPS, SOCKS4/5, SNI and TCP/UDP port-mapping proxies from one config file.
TerminalSkills/skills
Builds Agent2Agent (A2A) servers and clients, the open protocol (originally from Google, now under the Linux Foundation) that lets AI agents from different frameworks call each other.
Works with
Categories
Build marketplace and platform payment flows with Stripe Connect. Stripe Connect is an agent skill from TerminalSkills/skills. Build marketplace and platform payment flows with Stripe Connect.
Stripe Connect fits situations like: : building two-sided marketplaces; splitting payments between buyers and sellers; onboarding sellers/providers to accept payments; handling platform fees and payouts.
Run `npx skills add TerminalSkills/skills --skill stripe-connect -a claude-code`. Or copy the skill folder (skills/stripe-connect in TerminalSkills/skills) into .claude/skills/stripe-connect in your project. Claude Code loads it when a task matches its description.
Run `npx skills add TerminalSkills/skills --skill stripe-connect -a codex`. Or copy the skill folder (skills/stripe-connect in TerminalSkills/skills) into .agents/skills/stripe-connect in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add TerminalSkills/skills --skill stripe-connect -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/stripe-connect, .gemini/skills/stripe-connect, .github/skills/stripe-connect and .opencode/skills/stripe-connect in your project.
Going by SKILL.md and its folder, Stripe Connect needs the command-line tools its instructions call (stripe and npm) and credentials named STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET and STRIPE_V2_WEBHOOK_SECRET. Our summary lists: Node.js; A credential in STRIPE_SECRET_KEY; A credential in STRIPE_WEBHOOK_SECRET. Compatibility (from SKILL.md): Requires Node.js 20+ (stripe-node 23 dropped Node 18), Stripe account with Connect enabled.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Stripe Connect is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Stripe Connect: Firecrawl Build Onboarding (firecrawl/firecrawl, 190k stars), Stripe Projects (fossasia/eventyay, 1.7k stars), Stripe Apps (fossasia/eventyay, 1.7k stars) and Dinero Currency Patterns (dinerojs/dinero.js, 6.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
TerminalSkills (a GitHub organization) maintains it in TerminalSkills/skills, which has 163 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 3, 2026.
Source: TerminalSkills/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.