여러 업체와 공공기관의 사이버 보안 보고서를 검색하고 가져와 위협, 랜섬웨어, 침해 통계 등의 추세를 비교합니다. 분석에는 출처별 업체, 연도, 보고서를 표시하고 자료 간 차이도 따로 다룹니다.
- 분류별 위협 보고서를 찾을 때
- 특정 업체의 보고서를 가져올 때
- 여러 업체의 랜섬웨어 동향을 비교할 때
Stripe의 상품, 요금, 구독, 고객, 결제, 환불, 쿠폰을 확인하고 매출과 월간 반복 매출(MRR)을 집계합니다. 계정별 기록을 조회하며, 사용자의 명시적 승인을 받은 뒤에만 청구 정보를 변경합니다.
Runs Stripe billing operations via the Stripe SDK and, when configured, an admin dashboard's cached endpoints: products, prices, subscriptions, MRR and revenue, customers, payments, refunds, coupons, disputes. USE WHEN Stripe, subscriptions, billing, MRR, revenue, customers, invoices, refund, coupon, payment link, charges, subscriber count, earnings. NOT FOR newsletter-platform subscribers billed outside Stripe.
실행 점수 미검증
설치 방법 보기Stripe 계정의 상품, 요금, 구독, 고객, 결제, 청구서, 환불, 쿠폰 등의 기록을 확인하고 관련 질문에 답하거나 청구 업무를 지원합니다. 매출과 월간 반복 매출(MRR), 구독자 수를 집계할 수 있습니다. 여러 계정을 설정해 둔 경우 지정한 계정의 기록을 조회합니다. 관리 대시보드의 캐시가 설정되어 있으면 빠른 개요 확인에 활용하고, 상세 확인과 작업에는 Stripe SDK를 사용합니다. 환불, 구독 취소, 상품이나 요금의 생성 및 변경처럼 Stripe에 데이터를 쓰는 작업은 사용자의 명시적인 승인을 받은 뒤에 진행합니다.
구독 수, 최근 입금, 월간 매출 또는 쿠폰을 확인할 때 사용할 수 있습니다. 청구 관련 작업을 요청하고 승인한 뒤, 결과로 생성되거나 변경된 Stripe 객체를 확인하는 데도 유용합니다. Stripe 외부의 뉴스레터 서비스에서 관리하는 구독자는 대상이 아닙니다.
처음 설정할 때 Config.md, Stripe SDK를 사용할 수 있는 작업 디렉터리, API 버전, 계정별 환경 변수가 필요합니다. 필수 설정이 빠져 있으면 작업을 중단합니다. 비밀 키 값은 표시하거나 코드에 직접 넣지 않습니다. 조회에는 Stripe API 접근 권한이 필요하며, 변경 작업에는 해당 권한이 있는 키와 사용자의 명시적 승인이 필요합니다. 대시보드 캐시에는 몇 분의 지연이 있을 수 있습니다.
이 소개문은 공개된 SKILL.md를 바탕으로 AI(OpenAI Codex)가 작성했습니다. 정확한 사양은 아래 원문을 확인하세요.
AI가 SKILL.md의 내용에서 주의가 필요한 작업과 도입 전제를 확인했습니다. 점수는 실제로 실행한 결과(실행 검증)만으로 매깁니다.
점수에는 넣지 않았습니다. 2026년 10월 28일 기준으로 AI(OpenAI Codex)가 판정했습니다. 참고용이므로 설치 전에 원문도 확인해 주세요.
설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
Contents: Ideal State · Intent Routing · Data & Config · Tool contract · Gotchas · Examples
Answers and acts on Stripe billing questions: promotion codes and coupons, products and prices, subscriptions and subscriber counts, MRR and revenue, customers, payments, invoices, refunds and payment links, across one main account and any number of additional ones. With more than one Stripe account, using the wrong key returns wrong numbers silently, so every call names the account's key.
~/.claude/.env and never printed or hardcoded; a missing Config.md or STRIPE_SDK_DIR stops the run with a pointer to Setup.md instead of a guess.| Intent | Trigger | File |
|---|---|---|
| ListProducts | "products", "what products", "list products" | Intents/ListProducts.md |
| Subscriptions | "subscriptions", "subscribers", "how many subscribers" | Intents/Subscriptions.md |
| Revenue | "revenue", "MRR", "how much", "earnings", "income" | Intents/Revenue.md |
| Customers | "customers", "customer list", "who subscribes" | Intents/Customers.md |
| Payments | "payments", "recent payments", "charges" | Intents/Payments.md |
| Manage | "promotion codes", "promo code", "find a coupon", "create product", "create price", "change the price", "cancel", "refund", "coupon", "invoice", "payment link" | Intents/Manage.md |
| File | Read when |
|---|---|
Setup.md | first-time setup: Config.md, STRIPE_SDK_DIR, the per-account key env vars, and the check that it works |
Account-specific values — the SDK working directory (STRIPE_SDK_DIR), account aliases and their env var names, product and price IDs, product domains, invoicing practice, and the optional admin-dashboard endpoints — live in LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Stripe/Config.md. First-time setup is in Setup.md. Secrets are env-var names only, values in ~/.claude/.env. The skill body is generic.
When Config.md is missing, or it names no STRIPE_SDK_DIR, stop, say so, and point the user at Setup.md. Never guess an SDK directory, an account, or a product list.
| Account | Env var | Format | Notes |
|---|---|---|---|
| Main (default) | STRIPE_SECRET_KEY | sk_live_* | Used when no alias is given |
| Additional | STRIPE_SECRET_KEY_<ALIAS> | sk_live_* or restricted rk_live_* | Config.md's Accounts table maps each alias to its env var |
sk_test_*) is its own row in the Accounts table, for example alias test with STRIPE_SECRET_KEY_TEST, used as --account test.stripe npm package (v20+), called with the API version Config.md names (the preamble below passes it).Reads go through the read-only CLI first: bun ~/.claude/LIFEOS/TOOLS/StripeRead.ts promos | coupons | products | prices | subs | customer <email> | balance | get <v1 path> [k=v…] (--account <alias> for an additional account). It is a single plain command with no write path, so it runs wherever a shell command can, including unattended sessions. The inline cd … && bun --env-file … -e script below is arbitrary code, and a harness that asks before running such code will stop on it when nobody is there to approve, so use it only for writes and anything the CLI can't express, such as the computed reports in each intent. Two limits of the CLI, from its code: products and prices return active objects only, and every list stops at 1,000 rows, so a count of exactly 1,000 is a floor and needs fetchAll below.
Writes and computed reports run inside this preamble. Fill its two <…> values from Config.md before running it: the SDK folder (STRIPE_SDK_DIR, a directory where the stripe npm package is installed, with a leading ~ written as $HOME) and the API version (STRIPE_API_VERSION). bun -e resolves the SDK from that folder. If Config.md lacks either, stop and point at Setup.md. Each intent's Tool contract gives the body that replaces the last two lines.
cd "<STRIPE_SDK_DIR from Config.md>" && bun --env-file ~/.claude/.env -e "
import Stripe from 'stripe';
const API_VERSION = '<STRIPE_API_VERSION from Config.md>';
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY, { apiVersion: API_VERSION });
async function fetchAll(listFn, params = {}) {
const items = [];
let hasMore = true;
let startingAfter;
while (hasMore) {
const batch = await listFn({ limit: 100, ...params, ...(startingAfter ? { starting_after: startingAfter } : {}) });
items.push(...batch.data);
hasMore = batch.has_more;
if (batch.data.length > 0) startingAfter = batch.data[batch.data.length - 1].id;
}
return items;
}
const result = await stripe.METHOD;
console.log(JSON.stringify(result, null, 2));
"
For an additional account the key line becomes const stripe = new Stripe(process.env['<ENV VAR>'], { apiVersion: API_VERSION });, with <ENV VAR> taken from that alias's row in Config.md's Accounts table, never built from the alias by hand. The read-only CLIs (StripeRead.ts, InvoiceWatch.ts) resolve --account <alias> to STRIPE_SECRET_KEY_<ALIAS in capitals>, so name each additional key that way. Bun's --env-file loads the configured key into the process without reading or printing the secret in shell. A restricted key (rk_live_*) allows only the scopes granted on it: read operations work; write operations (create/refund/cancel) fail unless that scope was granted.
Unattributed. Report gross, refunds/adjustments, Stripe fees, and net using day boundaries in the timezone recorded in Config.md.invoice: null. In recent API versions, a charge can expose only a description such as Invoice ABCD1234-0001. Recover the invoice with /v1/invoices/search by exact invoice number, then resolve lines.data[].pricing.price_details.product. Do not use the invoice description itself as the product name. Nested expansion of lines.data.pricing.price_details.product may be rejected; plain invoice retrieval already returns the product ID, which can be retrieved separately.User: "list active promotion codes in the main account"
→ Manage intent, read-only
→ A table of every active code with its coupon terms, redemptions and expiry
User: "cancel the annual subscription for customer X at period end"
→ Manage intent
→ After approval, the subscription shows cancel_at_period_end and the date access ends
User: "what's the MRR looking like?"
→ Revenue intent
→ MRR and ARR from every active subscription, labelled active-only and list price before discounts, with the count of discounted subscriptions, plus three months of gross, refunds, fees and net
아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
여러 업체와 공공기관의 사이버 보안 보고서를 검색하고 가져와 위협, 랜섬웨어, 침해 통계 등의 추세를 비교합니다. 분석에는 출처별 업체, 연도, 보고서를 표시하고 자료 간 차이도 따로 다룹니다.
기능이나 구성 요소 자체의 설계 요구와 시스템 전체의 목표를 세 단계로 비교합니다. 설계상의 충돌과 적절한 구현 범위를 정리하고, 제안한 설계가 전체 방향과 맞는지 평가합니다.
글의 주제에 맞는 격언과 인용문을 찾아 저자와 선정 이유를 함께 제안합니다. 출처가 있는 인용문을 추가하고, 사상가의 말을 주제별로 조사하며, 사용 기록을 관리해 같은 인용문을 반복하지 않도록 돕습니다.
블로그 삽화, 기술 도표, 비교 그림, 만화, 아이콘 등을 용도에 맞는 절차로 제작합니다. 구도와 색상, 이미지 모델을 정하고 검토용 이미지를 출력합니다.
브리프와 제작 기준에 따라 이미지, 영상, 슬라이드, 사이트 화면 캡처의 시각 품질을 평가합니다. 두 비전 심사자가 점수와 결함 우선순위를 제시하고, 정해진 횟수 안에서 수정을 돕습니다. 평가를 통과한 결과물만 전달할 수 있으며, 사람의 점수와 의견은 별도 기록해 심사 보정에 활용합니다.
주제, 연구 분야, 논문 ID로 arXiv 논문을 찾고 제목, 저자, 초록, 링크를 정리합니다. 새 논문을 확인하고, 제공되는 경우 AlphaXiv의 AI 생성 개요도 가져옵니다.