Token导航 LogoToken导航TokenDH.com
运维和基础设施敏感数据github未标认证来源可访问clear审计提醒

stripe-stackStripe stack 命令行

Agent Skill

stripe-stack 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1,384

周安装

56

GitHub Stars

12

下载量

435
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:stripe-stack(Stripe stack 命令行)
来源仓库:https://github.com/scientiacapital/skills
仓库路径:skills/stripe-stack
安装命令:
npx skills add https://github.com/scientiacapital/skills --skill stripe-stack
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/scientiacapital/skills --skill stripe-stack

简介

stripe-stack 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。

  • 适用于需要围绕仓库状态、代码变更或协作事项进行整理的场景。
  • 可在 Codex、Claude、Cursor、Gemini CLI 中调用,通过命令行工具集成。
  • 安装前需确认权限范围、维护状态及是否触发联网或文件操作。
  • 建议结合原始 README 核验具体用法和功能边界。

SKILL.md

<quick_start> Add payments to a Next.js + Supabase project:

  1. Install Stripe: npm install stripe @stripe/stripe-js
  2. Add env vars (see quick_reference below)
  3. Create idempotency table (see schema below)
  4. Choose workflow: setup-new-project.md or add-webhook-handler.md
// Lazy-loaded Stripe client
import Stripe from 'stripe';
let _stripe: Stripe | null = null;
export function getStripe(): Stripe {
  if (!_stripe) {
    _stripe = new Stripe(process.env.STRIPE_SECRET_KEY!, { apiVersion: '2025-12-15.clover' });
  }
  return _stripe;
}

</quick_start>

<success_criteria> Integration is successful when:

  • Webhook handler uses database-backed idempotency (not in-memory)
  • All keys in environment variables (never hardcoded)
  • Test mode fully working before any live mode deployment
  • Signature verification on all webhook endpoints
  • Event logging before processing (insert-before-process pattern)
  • Go-live checklist completed before production deployment </success_criteria>

<essential_principles>

Core Principles

  1. Idempotency is Non-Negotiable

- ALL webhook handlers MUST use database-backed idempotency - Never use in-memory Sets (lost on serverless cold starts) - Insert event record BEFORE processing, not after

  1. Test/Live Mode Separation

- Use environment variables for ALL keys (never hardcode) - Test keys: sk_test_, pk_test_, whsec_test_ - Live keys: sk_live_, pk_live_, whsec_live_ - Products/prices must be recreated in live mode

  1. Shared Stripe Account

- All NetZero Suite projects share ONE Stripe account - Same webhook secret can be used across projects - Each project has its own webhook endpoint URL

  1. Lazy Client Initialization

- Never initialize Stripe at module level (build errors) - Use factory function pattern for server-side client - Check for API key before creating instance

</essential_principles>

What Are You Building?

Before proceeding, identify your use case:

Use CaseWorkflowDescription
New projectsetup-new-project.mdFresh Stripe integration from scratch
Add webhooksadd-webhook-handler.mdAdd webhook handler to existing project
Subscriptionsimplement-subscriptions.mdRecurring billing with plans
Credit systemadd-credit-system.mdPay-as-you-go credits
Go livego-live-checklist.mdTest → Production migration

Workflow Routing

If setting up Stripe in a new project: → Read workflows/setup-new-project.md → Then read reference/environment-vars.md → Use templates/stripe-client.ts and templates/env-example.txt

If adding webhook handling: → Read workflows/add-webhook-handler.md → Then read reference/webhook-patterns.md → Use templates/webhook-handler-nextjs.ts and templates/idempotency-migration.sql

If implementing subscription billing: → Read workflows/implement-subscriptions.md → Then read reference/pricing-models.md → Use templates/plans-config.ts

If adding credit/usage-based system: → Read workflows/add-credit-system.md → Then read reference/pricing-models.md

If migrating test → production: → Read workflows/go-live-checklist.md

<quick_reference>

Quick Reference

Environment Variables (Standard)

# Server-side (never expose to client)
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...

# Client-side (safe to expose)
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...

# Optional: Price IDs (for test→live switching)
STRIPE_PRICE_STARTER_MONTHLY=price_...
STRIPE_PRICE_PRO_MONTHLY=price_...

Common Webhook Events

EventWhen It FiresAction
checkout.session.completedCustomer completes checkoutCreate subscription record
customer.subscription.createdNew subscription startsInitialize user limits
customer.subscription.updatedPlan change, renewalUpdate plan/limits
customer.subscription.deletedCancellationDowngrade to free
invoice.paidMonthly renewal successReset usage counters
invoice.payment_failedPayment failedMark as past_due

Stripe Client Pattern

let _stripe: Stripe | null = null;

export function getStripe(): Stripe {
  if (!_stripe) {
    const key = process.env.STRIPE_SECRET_KEY;
    if (!key) throw new Error('STRIPE_SECRET_KEY not configured');
    _stripe = new Stripe(key, {
      apiVersion: '2025-12-15.clover',
      typescript: true
    });
  }
  return _stripe;
}

Idempotency Table Schema

CREATE TABLE stripe_webhook_events (
  id TEXT PRIMARY KEY,           -- Use Stripe event ID directly
  type TEXT NOT NULL,            -- Event type
  data JSONB NOT NULL,           -- Full event payload
  processed_at TIMESTAMPTZ DEFAULT NOW()
);

Webhook Handler Structure

export async function POST(request: NextRequest) {
  const body = await request.text();
  const signature = request.headers.get('stripe-signature');

  // 1. Verify signature
  const event = stripe.webhooks.constructEvent(body, signature, webhookSecret);

  // 2. Check idempotency (BEFORE processing)
  const { data: existing } = await supabase
    .from('stripe_webhook_events')
    .select('id')
    .eq('id', event.id)
    .single();

  if (existing) return NextResponse.json({ duplicate: true });

  // 3. Log event (INSERT before processing)
  await supabase.from('stripe_webhook_events').insert({
    id: event.id,
    type: event.type,
    data: event,
  });

  // 4. Process event
  switch (event.type) {
    case 'checkout.session.completed':
      await handleCheckout(event.data.object);
      break;
    // ... other handlers
  }

  return NextResponse.json({ received: true });
}

</quick_reference>

<integration_notes>

Integration Notes

Works With

  • Supabase: Use service role client for webhook handlers (bypasses RLS)
  • Prisma: Alternative to Supabase for idempotency table
  • Vercel: Add runtime/maxDuration config for webhook routes
  • Next.js App Router: Use request.text() for raw body

Related Skills

  • supabase-sql-skill - For database migrations
  • create-hooks-skill - For post-deployment notifications

GitHub Repository

Private templates and examples available at: github.com/ScientiaCapital/stripe-stack

</integration_notes>

<reference_index>

Reference Files

FilePurpose
reference/webhook-patterns.mdIdempotency, event handling, error recovery
reference/pricing-models.mdPlans vs Credits vs Usage-based billing
reference/environment-vars.mdStandard env var conventions
reference/common-errors.mdTroubleshooting guide

Template Files

FilePurpose
templates/webhook-handler-nextjs.tsComplete webhook route (copy-paste)
templates/stripe-client.tsLazy-loaded client factory
templates/plans-config.tsSubscription plan definitions
templates/idempotency-migration.sqlSupabase migration
templates/webhook-handler.test.tsTest template
templates/env-example.txtStandard.env template

Workflow Files

FilePurpose
workflows/setup-new-project.mdFresh Stripe integration
workflows/add-webhook-handler.mdAdd webhook to existing project
workflows/implement-subscriptions.mdSubscription billing
workflows/add-credit-system.mdPay-as-you-go credits
workflows/go-live-checklist.mdTest → Production migration

</reference_index>

Emit Outcome Sidecar

As the final step, write to ~/.claude/skill-analytics/last-outcome-stripe-stack.json:

{"ts":"[UTC ISO8601]","skill":"stripe-stack","version":"1.0.0","variant":"default",
 "status":"[success|partial|error]","runtime_ms":[estimated ms from start],
 "metrics":{"webhooks_configured":[n],"products_created":[n],"checkout_flows_built":[n]},
 "error":null,"session_id":"[YYYY-MM-DD]"}

Use status "partial" if some stages failed but results were produced. Use "error" only if no output was generated.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

29.13%
按下载量换算127

Antigravity

26.02%
按下载量换算113

Gemini CLI

16.48%
按下载量换算72

Codex

12.4%
按下载量换算54

OpenCode

8.55%
按下载量换算37

windsurf

3.61%
按下载量换算16

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

可疑

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills